核心变更: - 完全移除 ops-web 容器(私有化部署无需运营后台) - nginx sub_filter 替换前端 JS bundle 中的公网 SDK URL - deploy.sh 写入正确的 SDK_IM_WS_URL / SDK_IM_API_URL / SDK_FILE_SERVICE_URL - 新增 scripts/update.sh:热更新脚本,修复配置 + 可选拉镜像 + 重启 + 验证 - 新增 upgrade.sh:一键升级入口,curl 下载后直接执行,流程同 install.sh - install.sh 检测已有部署(.env 存在),自动路由到 update.sh 而非重跑向导 - 关键配置文件(.env / secrets.env / xuqm.env)在 tarball 解压前备份后恢复 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
XuqmGroup 私有化部署
快速开始
首次部署:
curl -fsSL https://xuqinmin.com/xuqmGroup/XuqmGroup-PrivateDeploy/raw/branch/main/install.sh \
-o install.sh && bash install.sh
脚本自动完成:依赖检测 → 配置生成 → 镜像拉取 → 容器启动 → 租户初始化(新建或迁移)→ 全量验证。
升级已有部署:
curl -fsSL https://xuqinmin.com/xuqmGroup/XuqmGroup-PrivateDeploy/raw/branch/main/upgrade.sh \
-o upgrade.sh && bash upgrade.sh
升级脚本自动完成:下载最新脚本 → 保留全部数据和配置 → 修复配置问题 → 可选拉取新镜像 → 重启容器 → 全量验证。
部署完成后根据输出的端口表配置宿主机 nginx,详见 docs/runbook.md。
部署架构
上层 nginx(任意层级)
│
└── 本机 IP:80 内置 nginx 容器(统一入口,无需宿主机 nginx)
│
├── tenant-service /api/ /actuator/
├── file-service /file/
├── tenant-web /(兜底)
├── im-service /api/im/ /ws/im
├── update-service /api/v1/updates/ /api/v1/rn/
├── license-service /api/license/
└── push-service (厂商回调,按需)
内置 nginx 容器直接绑定宿主机 0.0.0.0:80,宿主机无需任何 nginx 配置,上层 nginx 直接 proxy_pass 到本机 IP 即可。各业务容器(11224–11231)绑定 127.0.0.1,仅用于本地调试。
租户初始化方式
安装脚本启动后交互式选择:
- 新建租户:填写邮箱、用户名、密码,首次启动自动创建
- 迁移租户:在公有化平台安全中心生成迁移密钥(
pmk_开头),粘贴后自动完成导入
服务说明
| Profile | 服务 | 说明 |
|---|---|---|
| base | tenant-service, file-service, tenant-web, nginx | 必选核心服务(含内置路由 nginx) |
| infra-mysql | mysql | 托管数据库 |
| infra-redis | redis | 托管缓存 |
| im | im-service | IM HTTP + WebSocket |
| push | push-service | 厂商推送 |
| update | update-service | 版本管理 + RN 热更新 |
| license | license-service | License 校验 |
后期启用/禁用服务
./scripts/enable-service.sh im
./scripts/disable-service.sh im
注意事项
application.yml中数据库 URL 硬编码了生产地址,docker-compose.yml的environment:节负责覆盖,不能删除- 上层 nginx
proxy_pass写本机 IP(端口 80),须透传Upgrade/Connection头(WebSocket 必需),每层都要加,详见 docs/runbook.md - 宿主机本身无需配置 nginx