# 安装 docker 和 docker-coponse

安装 docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授予执行权限

chmod +x /usr/local/bin/docker-compose

测试是否安装成功

docker --version
docker-compose version

# 创建并更改 docker-compose.yml

拉取 Git 并编辑 docker-compose.yml 文件

git clone https://github.com/QuantumNous/new-api.git
cd new-api
# 编辑 docker-compose.yml 配置
nano docker-compose.yml
version: '3.4'
services:
  # --- New-API 主程序 ---
  new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    command: --log-dir /app/logs
    # 端口保持关闭,只通过 NPM 访问,安全!
    # ports:
    #   - "3000:3000"
    volumes:
      - ./data:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=postgresql://root:123456@postgres:5432/new-api
      - REDIS_CONN_STRING=redis://redis
      - TZ=Asia/Shanghai
      - ERROR_LOG_ENABLED=true
      - BATCH_UPDATE_ENABLED=true
    depends_on:
      - redis
      - postgres
    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
  # --- Nginx Proxy Manager (反向代理 + SSL) ---
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: always
    ports:
      - '80:80'   # HTTP
      - '443:443' # HTTPS
      - '81:81'   # 管理后台
    volumes:
      - ./npm/data:/data
      - ./npm/letsencrypt:/etc/letsencrypt
    depends_on:
      - new-api
  # --- 数据库 ---
  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
  # --- 缓存 ---
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    volumes:
      - ./redis_data:/data

# 启动服务

docker-compose up -d

# 配置域名和 SSL

# 1. 登录管理后台

  • 在浏览器访问: http://你的服务器IP:81

  • 设置账号密码

# 2. 添加反向代理

如果你使用的是 cloudflae Saas + 自定义主机,则需要两个域名都填写

image-20260127124308026

image-20260127124701031


# 针对 AI 流式传输的优化 (重要)

New-API 做中转时,如果上游(比如 OpenAI)响应很慢,或者对话很长,Nginx 默认的超时时间(60 秒)可能会切断连接,导致输出一半中断

  • 代理服务编辑 ——> 点击⚙️
# 增加超时时间,防止长对话中断
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
# 关闭缓存,确保流式输出流畅
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding on;

保存即可

# 迁移

停止 docker 容器

docker-compose down

打包整个目录为压缩文件

cd /root
# 格式: tar -czvf [压缩包名] [文件夹名]
tar -czvf new-api-backup.tar.gz new-api

到新服务器上解压

cd /root
tar -xzvf new-api-backup.tar.gz
cd new-api

检查 docker-compose 环境

docker-compose version

启动服务

docker-compose up -d

# 初始化数据

# 1. 停止并删除旧容器
docker-compose down
# 2. (可选) 如果你想彻底从零开始,把旧的配置文件夹也删了(慎用!会清空所有数据和 NPM 配置)
# rm -rf npm data logs pg_data redis_data
# 3. 启动新服务 (Docker 会自动在当前目录创建 pg_data 等文件夹)
docker-compose up -d
# 4. 查看运行状态
docker-compose ps