Coze 上线实战:从服务器到 HTTPS 的生产部署全流程命令指南
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
查看是否存在 docker、deploy、.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
生产环境配置建议
请务必做到:
- 不要使用默认数据库密码;
- 不要使用默认 Redis 密码;
- 不要将
.env提交到 Git; - 不要将 MySQL、Redis、MinIO 管理端口直接暴露到公网;
- 对外访问只暴露 Nginx 的 80 和 443 端口;
- 所有敏感密钥至少使用 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
如果返回 200、301、302、404 等 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 的实际位置。
十六、备份方案
生产环境至少应备份以下内容:
.env配置文件;- 数据库数据;
- 对象存储文件;
- 上传文件;
- 自定义配置;
- Nginx 配置;
- 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
该命令可能删除重要数据。
二十、安全加固建议
生产环境部署完成后,建议进一步做以下安全加固:
- 禁止 root 直接 SSH 登录;
- 使用 SSH Key 登录,关闭密码登录;
- 修改默认 SSH 端口;
- 仅开放 80、443 和必要的 SSH 端口;
- 数据库、Redis、MinIO 不暴露公网;
- 所有后台账号使用强密码;
- 定期升级系统和镜像;
- 配置日志轮转;
- 配置自动备份;
- 将备份同步到异地对象存储;
- 配置基础监控,例如 CPU、内存、磁盘、容器状态;
- 对公网访问增加 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 在生产环境中的基础部署。整体流程可以概括为:
- 准备服务器和域名;
- 安装 Docker 与 Docker Compose;
- 拉取 Coze Studio 源码;
- 配置
.env环境变量; - 使用 Docker Compose 启动服务;
- 使用 Nginx 做反向代理;
- 使用 Certbot 配置 HTTPS;
- 配置防火墙、日志轮转和开机自启;
- 建立备份、升级和回滚机制。
对于生产环境来说,“能跑起来”只是第一步,更重要的是长期稳定运行。因此,部署完成后一定要关注数据持久化、备份策略、日志增长、磁盘空间、安全加固和版本升级流程。只有把这些基础设施工作做好,Coze 才能真正成为团队可持续使用的 AI Agent 平台。