服务器部署
本指南描述当前推荐的私有化生产拓扑:MySQL、Redis 和 Nginx 运行在宿主机;后端、两个 Vue 管理端、钰信 Web、kkFileView 与 LiveKit 使用容器运行。不要在已有宿主机 MySQL/Redis 的服务器上重复启动同端口的数据库容器。
前置条件
- Linux 服务器、Docker Compose、宿主机 MySQL 8、Redis 6+、Nginx。
- 已解析的域名:租户端、平台端、API、钰信 Web、文件预览、LiveKit。
- 80/443 TCP;LiveKit 还需要
7881/tcp、7882/udp、443/udp、41000-41040/udp。 - 受信任 TLS 证书和可公网路由的 LiveKit 节点地址。
目录与配置
生产推荐部署目录:/opt/shengyu/saas-deploy。复制仓库中的 docker-compose.yml、deploy/aliyun/docker-compose.prod-host.yml、Nginx 模板和生产环境变量示例到该目录。
生产敏感配置写入 docker.prod.env,权限设置为 600。至少配置数据库、Redis、LiveKit key/secret、正式域名以及前端 API 基地址。不要将真实密码或密钥提交到 Git。
cd /opt/shengyu/saas-deploy
docker compose --env-file docker.prod.env \
-f docker-compose.yml \
-f docker-compose.prod-host.yml up -dNginx 与 HTTPS
Nginx 对外暴露域名,反代至本机容器端口:租户端 8080、平台端 8081、钰信 Web 8082、后端 48080、IM WebSocket 9000、kkFileView 48090 与 LiveKit 7880。
API 站点必须同时代理 /admin-api、/platform-api、/app-api 和 /ws,并配置 client_max_body_size 200m,否则移动端图片和版本安装包可能收到 413。启用证书后,所有 HTTP 站点应 301 跳转至 HTTPS。
文件与安装包持久化
后端本地文件目录应挂载到宿主机,例如:
/opt/shengyu/saas-deploy/data/file
-> /usr/www/app/saas/file(shengyu-server 容器内)该目录保存文件服务内容和应用版本上传的安装包。重建 shengyu-server 容器前必须保留该宿主机目录。
上线验证
docker ps
curl -I https://tenant.example.com/
curl -I https://platform.example.com/
curl -I https://im.example.com/
sudo nginx -t将示例域名替换为实际域名。随后完成登录、消息、图片上传、通话、文件预览和移动端版本检查的业务验证。
回滚原则
发布前备份当前 Jar、每个前端静态目录、Nginx 配置、数据库增量执行记录与环境变量文件。发生问题时先停止新容器或替换旧静态文件;数据库增量必须有单独回滚策略,不能用删除整库的方式回滚。