上一篇 下一篇 分享链接 返回 返回顶部

Coze 上线实战:从服务器到 HTTPS 的生产部署全流程命令指南

发布人:慈云数据-客服中心 发布时间:16小时前 阅读量:5

Coze 生产环境部署指南|附完整命令

本文面向准备将 Coze / Coze Studio 部署到生产环境的开发者、运维人员和技术负责人。内容覆盖服务器准备、Docker 环境安装、源码拉取、环境变量配置、Docker Compose 启动、Nginx 反向代理、HTTPS 证书、开机自启、日志查看、数据备份、升级与常见问题处理,并附上完整命令示例。


一、部署前说明

Coze 是一个面向 AI Agent / 智能体应用开发的平台,常用于搭建对话机器人、工作流、知识库、插件调用和多模型编排能力。生产环境部署和本地体验部署最大的区别在于:

  • 需要稳定的服务器资源;
  • 需要固定域名和 HTTPS;
  • 需要考虑数据持久化;
  • 需要配置日志、备份和监控;
  • 需要规划升级和回滚方案;
  • 不能直接暴露所有容器端口到公网。

本文推荐使用 Docker Compose 方式部署 Coze。相比手动安装数据库、Redis、对象存储等组件,Docker Compose 更适合中小团队快速落地,也方便后续维护。


二、服务器配置建议

生产环境不建议使用过低配置的机器,尤其是当你计划接入多个大模型、使用知识库、上传文件或多人协作时。

1. 最低配置

项目 建议
CPU 4 核
内存 8 GB
磁盘 100 GB SSD
系统 Ubuntu 22.04 LTS / Debian 12 / Rocky Linux 9
网络 公网 IP,支持 80 / 443 端口

2. 推荐配置

项目 建议
CPU 8 核及以上
内存 16 GB 及以上
磁盘 200 GB SSD 及以上
系统 Ubuntu 22.04 LTS
数据盘 建议单独挂载到 /data
域名 建议使用独立二级域名,例如 coze.example.com

如果你只是验证功能,可以使用 4 核 8G 的服务器;如果是团队正式使用,建议至少 8 核 16G。


三、域名解析准备

假设你的生产访问域名是:

coze.example.com

请在 DNS 服务商处添加一条 A 记录:

主机记录:coze
记录类型:A
记录值:你的服务器公网 IP
TTL:默认即可

在服务器上可以使用以下命令验证解析是否生效:

ping coze.example.com

或者:

dig coze.example.com

如果没有安装 dig,可以执行:

sudo apt update
sudo apt install -y dnsutils

四、初始化服务器环境

以下命令以 Ubuntu 22.04 LTS 为例。

1. 更新系统软件包

sudo apt update
sudo apt upgrade -y

2. 设置服务器时区

sudo timedatectl set-timezone Asia/Shanghai
timedatectl

3. 安装常用工具

sudo apt install -y \
  curl \
  wget \
  git \
  vim \
  unzip \
  htop \
  net-tools \
  ca-certificates \
  gnupg \
  lsb-release \
  software-properties-common

4. 创建部署目录

生产环境建议将应用放到 /opt,数据放到 /data

sudo mkdir -p /opt/coze
sudo mkdir -p /data/coze
sudo chown -R $USER:$USER /opt/coze /data/coze

五、安装 Docker 和 Docker Compose

Coze 依赖多个基础服务,推荐使用 Docker Compose 管理。

1. 卸载旧版本 Docker

sudo apt remove -y docker docker-engine docker.io containerd runc || true

2. 添加 Docker 官方 GPG Key

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. 添加 Docker 软件源

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. 安装 Docker

sudo apt update

sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

5. 启动 Docker 并设置开机自启

sudo systemctl enable docker
sudo systemctl start docker

6. 验证 Docker 版本

docker version
docker compose version

7. 将当前用户加入 Docker 用户组

sudo usermod -aG docker $USER

执行后建议重新登录服务器,或者执行:

newgrp docker

验证是否可以免 sudo 使用 Docker:

docker ps

六、拉取 Coze 源码

进入部署目录:

cd /opt/coze

拉取 Coze Studio 官方源码:

git clone https://github.com/coze-dev/coze-studio.git

进入项目目录:

cd /opt/coze/coze-studio

查看当前分支和提交信息:

git branch
git log -1 --oneline

建议生产环境不要直接长期使用 main 分支的最新代码,而是使用官方发布的稳定版本标签。

查看标签:

git tag

如果你要切换到某个稳定版本,例如 v0.1.0,可以执行:

git checkout v0.1.0

注意:具体版本号请以官方仓库实际发布的 tag 为准。


七、配置环境变量

不同版本的 Coze Studio 项目目录结构可能略有差异,通常会提供 Docker 部署相关目录,例如:

ls

查看是否存在 dockerdeploy.env.example 等文件:

find . -maxdepth 3 -name ".env*" -o -name "docker-compose*.yml"

假设项目中存在 Docker 部署目录:

cd /opt/coze/coze-studio/docker

复制环境变量模板:

cp .env.example .env

如果没有 .env.example,可以先查看目录中的说明文件:

ls -la
cat README.md

编辑 .env

vim .env

生产环境中重点关注以下配置项,实际名称请以项目提供的 .env.example 为准:

# 服务访问地址
PUBLIC_BASE_URL=https://coze.example.com

# 数据库配置
MYSQL_ROOT_PASSWORD=请替换为强密码
MYSQL_DATABASE=coze
MYSQL_USER=coze
MYSQL_PASSWORD=请替换为强密码

# Redis 配置
REDIS_PASSWORD=请替换为强密码

# 对象存储配置,例如 MinIO
MINIO_ROOT_USER=cozeadmin
MINIO_ROOT_PASSWORD=请替换为强密码

# JWT / Session / Cookie 密钥
JWT_SECRET=请替换为随机字符串
SESSION_SECRET=请替换为随机字符串

# 文件上传限制
MAX_UPLOAD_SIZE=50MB

可以使用下面的命令生成随机密钥:

openssl rand -hex 32

例如:

JWT_SECRET=$(openssl rand -hex 32)
SESSION_SECRET=$(openssl rand -hex 32)

echo $JWT_SECRET
echo $SESSION_SECRET

生产环境配置建议

请务必做到:

  1. 不要使用默认数据库密码;
  2. 不要使用默认 Redis 密码;
  3. 不要将 .env 提交到 Git;
  4. 不要将 MySQL、Redis、MinIO 管理端口直接暴露到公网;
  5. 对外访问只暴露 Nginx 的 80 和 443 端口;
  6. 所有敏感密钥至少使用 32 位以上随机字符串。

八、启动 Coze 服务

在 Docker 部署目录下查看 Compose 文件:

ls -la

常见文件可能包括:

docker-compose.yml
compose.yml
docker-compose.yaml

如果文件名为 docker-compose.yml,可以执行:

docker compose up -d

如果官方文档要求指定文件,例如:

docker compose -f docker-compose.yml up -d

如果项目使用了 profile,可能需要类似以下命令:

docker compose --profile "*" up -d

或者:

docker compose -f docker-compose.yml --profile "*" up -d

首次启动需要拉取镜像和初始化数据库,耗时可能较长。查看容器状态:

docker compose ps

查看所有容器:

docker ps -a

查看日志:

docker compose logs -f

如果只想查看某个服务日志,例如 server

docker compose logs -f server

如果只想查看最近 200 行:

docker compose logs --tail=200 server

九、确认服务是否正常

查看监听端口:

sudo netstat -tunlp

或者:

ss -tunlp

如果 Coze 默认暴露本地端口,例如 8888,可以在服务器上测试:

curl -I http://127.0.0.1:8888

如果返回 200301302404 等 HTTP 状态码,通常说明服务已经有响应。

如果你不确定前端服务端口,可以查看 Compose 文件:

grep -R "ports:" -n .

或者:

docker compose ps

十、配置 Nginx 反向代理

生产环境不建议直接通过 http://服务器IP:端口 访问,而应使用 Nginx 统一代理,并启用 HTTPS。

1. 安装 Nginx

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

查看状态:

sudo systemctl status nginx

2. 新建站点配置

假设 Coze 本地端口为 8888,域名为 coze.example.com

创建 Nginx 配置文件:

sudo vim /etc/nginx/sites-available/coze.conf

写入以下内容:

server {
    listen 80;
    server_name coze.example.com;

    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:8888;

        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/coze.conf /etc/nginx/sites-enabled/coze.conf

测试 Nginx 配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

访问:

http://coze.example.com

如果可以打开页面,说明 HTTP 反向代理已经成功。


十一、申请 HTTPS 证书

推荐使用 Let’s Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

sudo certbot --nginx -d coze.example.com

根据提示输入邮箱并同意协议。成功后 Certbot 会自动修改 Nginx 配置,将 HTTP 跳转到 HTTPS。

3. 测试证书自动续期

sudo certbot renew --dry-run

查看证书:

sudo certbot certificates

最终访问:

https://coze.example.com

十二、防火墙配置

如果服务器启用了 UFW,建议只开放 SSH、HTTP 和 HTTPS。

1. 安装并启用 UFW

sudo apt install -y ufw

允许 SSH:

sudo ufw allow OpenSSH

允许 HTTP:

sudo ufw allow 80/tcp

允许 HTTPS:

sudo ufw allow 443/tcp

启用防火墙:

sudo ufw enable

查看状态:

sudo ufw status

如果你的 SSH 端口不是 22,例如 2222,请先放行自定义端口:

sudo ufw allow 2222/tcp

再启用防火墙,避免把自己锁在服务器外。


十三、配置 Docker 日志轮转

生产环境中 Docker 容器日志可能快速增长,必须限制日志大小。

编辑 Docker 配置:

sudo vim /etc/docker/daemon.json

写入:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}

重启 Docker:

sudo systemctl restart docker

回到 Coze 部署目录重新确认容器状态:

cd /opt/coze/coze-studio/docker
docker compose ps

如果容器没有自动恢复,执行:

docker compose up -d

十四、设置服务开机自启

Docker 服务本身已经设置开机启动,但 Compose 中的容器是否自动恢复,取决于 docker-compose.yml 中是否设置了 restart 策略。

建议 Compose 服务配置中包含:

restart: unless-stopped

你可以检查:

grep -R "restart:" docker-compose.yml

如果没有,需要根据项目结构谨慎修改 Compose 文件,为核心服务添加:

restart: unless-stopped

修改完成后重新应用:

docker compose up -d

十五、数据目录持久化

生产环境最重要的是数据不能丢。你需要确认 MySQL、Redis、MinIO、Elasticsearch 或其他组件的数据目录是否已经挂载到宿主机。

查看 Compose 文件中的 volume 配置:

grep -R "volumes:" -n docker-compose.yml

查看 Docker volume:

docker volume ls

查看具体 volume 信息:

docker volume inspect volume_name

建议将关键数据映射到 /data/coze 下,例如:

/data/coze/mysql
/data/coze/redis
/data/coze/minio
/data/coze/es
/data/coze/uploads

如果项目默认使用 Docker volume,也可以继续使用,但备份时需要知道 volume 的实际位置。


十六、备份方案

生产环境至少应备份以下内容:

  1. .env 配置文件;
  2. 数据库数据;
  3. 对象存储文件;
  4. 上传文件;
  5. 自定义配置;
  6. Nginx 配置;
  7. Docker Compose 文件。

1. 创建备份目录

sudo mkdir -p /data/backup/coze
sudo chown -R $USER:$USER /data/backup/coze

2. 备份环境变量和 Compose 文件

cd /opt/coze/coze-studio/docker

tar czf /data/backup/coze/coze-config-$(date +%F).tar.gz \
  .env \
  docker-compose.yml

如果 Compose 文件名称不同,请改成实际文件名。

3. 备份 MySQL

先查看 MySQL 容器名称:

docker ps | grep -i mysql

假设容器名为 coze-mysql,执行:

docker exec coze-mysql mysqldump \
  -uroot \
  -p'你的MYSQL_ROOT_PASSWORD' \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  coze > /data/backup/coze/coze-mysql-$(date +%F).sql

压缩备份文件:

gzip /data/backup/coze/coze-mysql-$(date +%F).sql

4. 备份对象存储和上传目录

如果数据目录在 /data/coze,可以执行:

tar czf /data/backup/coze/coze-data-$(date +%F).tar.gz /data/coze

5. 备份 Nginx 配置

sudo tar czf /data/backup/coze/nginx-coze-$(date +%F).tar.gz \
  /etc/nginx/sites-available/coze.conf \
  /etc/nginx/sites-enabled/coze.conf

6. 定时备份

编辑定时任务:

crontab -e

添加每日凌晨 3 点备份:

0 3 * * * /bin/bash /opt/coze/backup-coze.sh >> /data/backup/coze/backup.log 2>&1

创建备份脚本:

vim /opt/coze/backup-coze.sh

写入:

#!/usr/bin/env bash
set -e

BACKUP_DIR="/data/backup/coze"
DATE=$(date +%F)
DEPLOY_DIR="/opt/coze/coze-studio/docker"

mkdir -p "$BACKUP_DIR"

cd "$DEPLOY_DIR"

tar czf "$BACKUP_DIR/coze-config-$DATE.tar.gz" .env docker-compose.yml

docker exec coze-mysql mysqldump \
  -uroot \
  -p'你的MYSQL_ROOT_PASSWORD' \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  coze > "$BACKUP_DIR/coze-mysql-$DATE.sql"

gzip "$BACKUP_DIR/coze-mysql-$DATE.sql"

tar czf "$BACKUP_DIR/coze-data-$DATE.tar.gz" /data/coze

find "$BACKUP_DIR" -type f -mtime +14 -delete

赋予执行权限:

chmod +x /opt/coze/backup-coze.sh

手动执行一次测试:

/opt/coze/backup-coze.sh

注意:脚本中的容器名、数据库名、密码需要根据你的实际环境修改。


十七、升级 Coze

升级前务必备份。

1. 进入项目目录

cd /opt/coze/coze-studio

2. 查看当前版本

git status
git log -1 --oneline
git describe --tags --always

3. 执行备份

/opt/coze/backup-coze.sh

4. 拉取最新代码

git fetch --all --tags

查看可用版本:

git tag

切换到目标版本,例如:

git checkout v0.2.0

如果你使用分支部署:

git pull origin main

5. 更新镜像并重启

进入 Docker 目录:

cd /opt/coze/coze-studio/docker

拉取新镜像:

docker compose pull

重新启动:

docker compose up -d

查看状态:

docker compose ps

查看日志:

docker compose logs -f --tail=200

十八、回滚方案

如果升级失败,可以回滚到上一版本。

1. 查看历史版本

cd /opt/coze/coze-studio
git log --oneline -10

2. 切换回旧版本

例如旧版本为 v0.1.0

git checkout v0.1.0

3. 重启服务

cd /opt/coze/coze-studio/docker
docker compose up -d

如果数据库也发生了不可逆迁移,则需要恢复升级前备份。恢复数据库前建议先停止服务:

docker compose stop

恢复 MySQL 示例:

gunzip -c /data/backup/coze/coze-mysql-2025-01-01.sql.gz | \
docker exec -i coze-mysql mysql \
  -uroot \
  -p'你的MYSQL_ROOT_PASSWORD' \
  coze

恢复后启动服务:

docker compose up -d

十九、常见问题排查

1. 容器启动失败

查看容器状态:

docker compose ps

查看详细日志:

docker compose logs -f --tail=300

常见原因包括:

  • .env 配置错误;
  • 数据库密码不一致;
  • 端口被占用;
  • 镜像拉取失败;
  • 服务器内存不足;
  • 数据目录权限错误。

2. 端口被占用

查看端口占用:

sudo lsof -i:8888

或者:

sudo netstat -tunlp | grep 8888

结束对应进程:

sudo kill -9 PID

如果不想结束进程,也可以修改 Compose 文件中的端口映射。


3. Nginx 502 Bad Gateway

502 通常表示 Nginx 无法访问后端服务。

检查后端端口:

curl -I http://127.0.0.1:8888

检查 Nginx 配置:

sudo nginx -t

查看 Nginx 错误日志:

sudo tail -f /var/log/nginx/error.log

查看 Coze 日志:

cd /opt/coze/coze-studio/docker
docker compose logs -f --tail=200

4. HTTPS 证书申请失败

检查域名解析:

dig coze.example.com

检查 80 端口是否开放:

sudo ufw status

检查 Nginx 是否正常:

sudo systemctl status nginx

重新申请:

sudo certbot --nginx -d coze.example.com

5. 磁盘空间不足

查看磁盘:

df -h

查看 Docker 占用:

docker system df

清理无用镜像:

docker image prune -a

清理停止的容器:

docker container prune

清理无用 volume 需谨慎,因为可能删除数据:

docker volume prune

生产环境不建议随意执行:

docker system prune -a --volumes

该命令可能删除重要数据。


二十、安全加固建议

生产环境部署完成后,建议进一步做以下安全加固:

  1. 禁止 root 直接 SSH 登录;
  2. 使用 SSH Key 登录,关闭密码登录;
  3. 修改默认 SSH 端口;
  4. 仅开放 80、443 和必要的 SSH 端口;
  5. 数据库、Redis、MinIO 不暴露公网;
  6. 所有后台账号使用强密码;
  7. 定期升级系统和镜像;
  8. 配置日志轮转;
  9. 配置自动备份;
  10. 将备份同步到异地对象存储;
  11. 配置基础监控,例如 CPU、内存、磁盘、容器状态;
  12. 对公网访问增加 WAF 或 CDN 防护。

修改 SSH 配置示例:

sudo vim /etc/ssh/sshd_config

建议配置:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

重启 SSH:

sudo systemctl restart ssh

修改 SSH 配置前,请务必确认当前账号可以通过密钥登录,避免无法连接服务器。


二十一、生产环境部署完整命令汇总

下面给出一组从零开始部署的参考命令。请将 coze.example.com、密码、端口和版本号替换成你的实际配置。

# 1. 更新系统
sudo apt update
sudo apt upgrade -y

# 2. 安装基础工具
sudo apt install -y curl wget git vim unzip htop net-tools ca-certificates gnupg lsb-release software-properties-common

# 3. 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 4. 创建目录
sudo mkdir -p /opt/coze /data/coze /data/backup/coze
sudo chown -R $USER:$USER /opt/coze /data/coze /data/backup/coze

# 5. 安装 Docker
sudo apt remove -y docker docker-engine docker.io containerd runc || true
sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl enable docker
sudo systemctl start docker

sudo usermod -aG docker $USER
newgrp docker

# 6. 拉取 Coze Studio
cd /opt/coze
git clone https://github.com/coze-dev/coze-studio.git
cd /opt/coze/coze-studio

# 可选:切换到稳定版本
# git fetch --all --tags
# git checkout v0.1.0

# 7. 进入 Docker 部署目录
cd /opt/coze/coze-studio/docker

# 8. 复制环境变量文件
cp .env.example .env

# 9. 编辑配置
vim .env

# 10. 启动服务
docker compose up -d

# 如果项目要求启用 profile,可使用:
# docker compose --profile "*" up -d

# 11. 查看状态
docker compose ps
docker compose logs -f --tail=200

# 12. 安装 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# 13. 配置 Nginx
sudo tee /etc/nginx/sites-available/coze.conf > /dev/null <<'EOF'
server {
    listen 80;
    server_name coze.example.com;

    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:8888;

        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/coze.conf /etc/nginx/sites-enabled/coze.conf || true
sudo nginx -t
sudo systemctl reload nginx

# 14. 安装 Certbot 并申请 HTTPS
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d coze.example.com

# 15. 配置防火墙
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

# 16. 配置 Docker 日志轮转
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}
EOF

sudo systemctl restart docker

# 17. 重新确认 Coze 服务
cd /opt/coze/coze-studio/docker
docker compose up -d
docker compose ps

二十二、总结

通过以上步骤,你可以完成 Coze 在生产环境中的基础部署。整体流程可以概括为:

  1. 准备服务器和域名;
  2. 安装 Docker 与 Docker Compose;
  3. 拉取 Coze Studio 源码;
  4. 配置 .env 环境变量;
  5. 使用 Docker Compose 启动服务;
  6. 使用 Nginx 做反向代理;
  7. 使用 Certbot 配置 HTTPS;
  8. 配置防火墙、日志轮转和开机自启;
  9. 建立备份、升级和回滚机制。

对于生产环境来说,“能跑起来”只是第一步,更重要的是长期稳定运行。因此,部署完成后一定要关注数据持久化、备份策略、日志增长、磁盘空间、安全加固和版本升级流程。只有把这些基础设施工作做好,Coze 才能真正成为团队可持续使用的 AI Agent 平台。

目录结构
全文