New API 部署教程大全:Docker Compose / Docker / 1Panel / 宝塔

**部署目录 1.推荐方式:**Docker Compose 部署,官方推荐的长期维护方案,适合正式部署和后续扩展。 **2.单容器方案:**Docker 部署,先快速跑起来最方便,但后续维护通常不如Compose直观。 **3.面板部署:**1Panel 面板部署,适合习惯在1Panel 直接管理应用、环境变量和升级流程。 **4.面板部署:**宝塔 Docker 部署,适合已经在用宝塔,并希望直接通过宝塔Docker 功能管理容器。
推荐方式
Docker Compose 部署
如果你能正常拉 GitHub,这一套最稳。当前官方 Compose 默认就是 New API + Redis + PostgreSQL,适合正式部署、看日志和后续维护。
适合谁 准备长期跑 New API,后面还要看日志、重启、迁移、换数据库或加 Redis 的用户。
1. 准备环境
- 服务器已经安装 `Docker` 和 `Docker Compose`。
- 系统建议使用 `Ubuntu / Debian / CentOS` 等常见 Linux 发行版。
- 正式环境请提前确认 `3000` 端口、防火墙和云服务器安全组可以放行。
2. 方法一:直接克隆官方项目
git clone https://github.com/QuantumNous/new-api.git
cd new-api
3. 修改 `docker-compose.yml`
官方仓库已经自带完整的 docker-compose.yml。至少先检查端口、数据库密码、Redis 密码和节点名,正式环境不要继续用默认密码。
nano docker-compose.yml
GitHub 拉不下来怎么办 可以自己建目录,然后手动创建 docker-compose.yml。下面这份是按当前官方仓库默认配置整理的可用版本,正式环境先改掉所有默认密码。
4. 方法二:手动创建配置文件
mkdir -p /opt/new-api
cd /opt/new-api
nano docker-compose.yml
version: '3.4'
services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
command: --log-dir /app/logs
ports:
- "3000:3000"
volumes:
- ./data:/data
- ./logs:/app/logs
environment:
- SQL_DSN=postgresql://root:123456@postgres:5432/new-api
- REDIS_CONN_STRING=redis://:123456@redis:6379
- TZ=Asia/Shanghai
- ERROR_LOG_ENABLED=true
- BATCH_UPDATE_ENABLED=true
- NODE_NAME=new-api-node-1
- SESSION_SECRET=replace_with_random_string
depends_on:
- redis
- postgres
networks:
- new-api-network
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1"]
interval: 30s
timeout: 10s
retries: 3
redis:
image: redis:latest
container_name: redis
restart: always
command: ["redis-server", "--requirepass", "123456"]
networks:
- new-api-network
postgres:
image: postgres:15
container_name: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: 123456
POSTGRES_DB: new-api
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- new-api-network
volumes:
pg_data:
networks:
new-api-network:
driver: bridge
如果你是多实例部署,SESSION_SECRET 必须一致。需要随机值时可以直接生成:
openssl rand -hex 16
5. 后台启动
docker compose up -d
6. 常用查看命令
docker compose ps
docker compose logs -f
docker compose logs -f new-api
docker compose logs -f mysql
docker compose logs -f redis
docker compose logs --tail=100 new-api
docker compose logs --since=10m new-api
docker compose logs -f -t new-api
docker compose up
docker compose up new-api
docker logs -f new-api
MySQL 日志说明 docker compose logs -f mysql 只在你把官方 Compose 切成 MySQL 方案后才有意义。当前官方默认配置是 postgres,不是 mysql。
7. 首次访问
浏览器打开 http://服务器IP:3000。首次会进入初始化页面,按页面提示设置你自己的管理员账号和密码,完成后再登录后台。
8. 停止服务
docker compose down
单容器方案
Docker 部署
这套方式就是直接跑镜像。启动快,但后续如果你还要补数据库、Redis、升级或迁移,通常还是会回到 Compose。
先说结论 官方更推荐 Docker Compose。单独 docker run 更适合先验证服务能不能起来,默认使用的是 3000 端口。
1. 基本要求
- 服务器已经安装 `Docker`。
- 先准备一个持久化目录,下面命令里的 `/your/data/path` 都要换成你自己的实际路径。
- 如果只是临时测试,可以先用 SQLite;正式环境更建议走 Compose 并配数据库。
2. SQLite 方式(不推荐长期使用)
只想先快速起一个实例,可以先用 SQLite。官方文档已经标注这一种不推荐长期跑正式环境。
docker run --name new-api -d --restart always \
-p 3000:3000 \
-e TZ=Asia/Shanghai \
-v /your/data/path:/data \
calciumion/new-api:latest
3. MySQL 方式
如果你本来就准备把数据放进 MySQL,可以直接加 SQL_DSN。
docker run --name new-api -d --restart always \
-p 3000:3000 \
-e SQL_DSN="用户名:密码@tcp(数据库地址:3306)/数据库名" \
-e TZ=Asia/Shanghai \
-v /your/data/path:/data \
calciumion/new-api:latest
4. 常用运维命令
docker ps
docker logs -f new-api
docker restart new-api
docker stop new-api
docker rm -f new-api
5. 首次初始化
容器起来后,访问 http://服务器IP:3000。首次会自动跳转到初始化页面,自己设置管理员账号和密码即可。
1Panel 面板
1Panel 面板部署
如果你平时就用 1Panel 管 Docker,这套最省心。应用商店里直接装,参数、环境变量和升级入口都在面板里。
前置条件 建议使用最新稳定版 1Panel,服务器至少 `1 核 2G`。如果还没装面板,先按 1Panel 官方文档把面板本身装好。
1. 进入 1Panel
面板装好后,先确认能正常打开后台。

1Panel 面板可正常登录后,再继续安装 New API。
2. 在应用商店里搜索 New API
进入 `应用商店`,在 `AI` 分类下找到 `New API`,然后点安装。

安装入口直接使用 1Panel 应用商店里的 New API。
3. 填安装参数
- 名称:你自己识别得出来就行。
- 版本:按你准备安装的版本选。
- 端口:默认 `3000`,如果冲突就换。
- 时区:保持 `Asia/Shanghai` 即可。
- 高级设置:把端口外部访问勾上。

这一步主要确认端口和外部访问没有配错
4. 等待容器启动
点确认后会跳到已安装应用列表。等状态变成已启动再继续。

看到已启动,说明容器已经跑起来了。
5. 进入参数页面补环境变量
安装完成后,建议马上打开该应用的 参数 页面补环境变量,然后重启应用让配置生效。

openssl rand -hex 16
- 先生成随机字符串,再把它填进 `SESSION_SECRET`。
- 如果你后面要配 Redis,`CRYPTO_SECRET` 也建议一起填好。
- 保存后重启应用,否则环境变量不会立即生效。
6. 设置默认访问地址后再点击跳转
面板里建议顺手把 默认访问地址 配好,后面点 跳转 会更直接。

首次访问会自动进入初始化页面,按提示设置管理员账号和密码。
7. 常见问题
- 打不开界面:先检查应用状态是不是已启动,再检查端口映射、防火墙和安全组。
- 登录后提示会话失效:通常是 `SESSION_SECRET` 没填、填了空值,或者修改后没有重启应用。
- 如何升级:进入 1Panel `应用商店` 的可升级页面,找到 New API 后直接升级版本。
- 数据持久化:1Panel 默认使用 Docker 卷;如果你要自定义路径,记得把 `/data` 映射到持久化目录。
宝塔 Docker
宝塔 Docker 部署
如果你服务器本来就在用宝塔,这一节就直接按宝塔的 Docker 菜单来。官方宝塔文档里一共三种做法:应用商店、Compose、自定义镜像。
前置条件 宝塔版本尽量使用 9.2.0 及以上,系统建议 CentOS 7+、Ubuntu 18.04+、Debian 10+,服务器建议至少 1 核 2G。
1. 先把宝塔和 Docker 装好
- 按宝塔官网脚本安装宝塔面板并正常登录后台。
- 左侧进入 `Docker`,首次会提示安装 Docker 服务,按提示装完。
2. 方法一:应用商店直接安装
- 进入宝塔 `Docker`。
- 打开 `应用商店`,搜索 `New-API`。
- 点安装,重点确认 `容器名称`、`端口映射`、`目录映射`。
- 环境变量至少补上 `SESSION_SECRET`,如果你要用 Redis,再把 `CRYPTO_SECRET` 一起填上。
- 提交后等待容器安装完成。
3. 方法二:使用 Docker Compose
如果你想自己控目录结构,也可以在宝塔里建目录后手动跑 Compose。官方宝塔文档这里使用的是 docker-compose 命令。
mkdir -p /www/wwwroot/new-api
cd /www/wwwroot/new-api
version: '3'
services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
ports:
- "3000:3000"
volumes:
- ./data:/data
environment:
- SESSION_SECRET=your_session_secret_here
- TZ=Asia/Shanghai
docker-compose up -d
4. 方法三:使用自定义镜像
适用场景 这一种更偏高级用法。你如果只是正常部署,还是优先走宝塔应用商店。
- 进入宝塔 `Docker` 的 `镜像管理`。
- 点击 `获取镜像` 或 `拉取镜像`,输入 `calciumion/new-api:latest`。
- 镜像拉取完成后,进入 `容器列表`,点击 `创建容器`。
- 容器名称可以填 `new-api`,镜像选择刚拉下来的 `calciumion/new-api:latest`。
- 端口映射至少加 `3000:3000`,目录映射至少加 `/你的主机目录:/data`。
- 环境变量按下面的表补充,提交后启动容器。
5. 环境变量怎么填

openssl rand -hex 16
head -c 16 /dev/urandom | xxd -p
6. 放行端口并初始化
- 宝塔 `安全` 里放行 `3000` 端口。
- 云服务器安全组如果有拦截,也要同步放行。
- 浏览器打开 http://服务器IP:3000,首次进入初始化页后设置你自己的管理员账号密码。
7. 常见问题和更新
- 打不开 `3000`:优先检查宝塔安全放行、防火墙和云安全组。
- 登录后提示会话失效:先确认 `SESSION_SECRET` 已设置且不是空值。
- 数据如何持久化:无论应用商店、Compose 还是自定义镜像,都要保证 `/data` 做了目录映射。
- Compose 方式更新:先拉新镜像,再重启容器。
docker pull calciumion/new-api:latest
docker-compose down
docker-compose up -d
文章作者:大神K
版权说明:本文为原创内容,转载请注明出处。
