徐勤民
c7e9cb8fa9
feat: docker.sock 挂载 + PRIVATE_DEPLOY_ROOT 支持一键更新
...
- docker-compose.yml:tenant-service 挂载 /var/run/docker.sock 和部署根目录
- deploy.sh:写入 PRIVATE_DEPLOY_ROOT 到 .env
- update.sh:旧版升级时自动补齐 PRIVATE_DEPLOY_ROOT
- .env.example:新增 PRIVATE_DEPLOY_ROOT 注释说明
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 14:47:18 +08:00
徐勤民
429077e7eb
fix: 修复 docker compose 变量替换导致 DB/Redis 密码变空字符串
...
docker compose 的 environment 块在 shell 缺少 MYSQL_PASSWORD /
REDIS_PASSWORD 时将 SPRING_DATASOURCE_PASSWORD 替换为空字符串,
此空字符串会覆盖 env_file 注入的值,导致 Spring 连接 MySQL/Redis
时使用空密码(using password: NO)。
修复:
1. deploy.sh 在 secrets.env 中额外写入 SPRING_DATASOURCE_PASSWORD
和 SPRING_DATA_REDIS_PASSWORD,由 env_file 直接注入容器
2. docker-compose.yml 中删除这两个 environment 条目,消除覆盖风险
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 11:27:47 +08:00
徐勤民
a327a262dd
feat(deploy): 移除 ops-web、修复 SDK URL 注入、新增一键升级
...
核心变更:
- 完全移除 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>
2026-05-20 18:25:12 +08:00
徐勤民
0c4802b20a
feat(deploy): nginx 绑定模式可选,兼容有/无宿主机 nginx 两种场景
...
向导新增第 0d 步:询问宿主机 80 端口是否空闲。
- 空闲(多层代理/内网)→ NGINX_BIND=80,容器直接监听宿主机 80
- 已有 nginx(云服务器 HTTPS)→ NGINX_BIND=127.0.0.1:11223,宿主机加一条转发
docker-compose.yml nginx ports 改用 ${NGINX_BIND:-80}:80 变量控制。
端口检查、Step 7 验证地址、部署完成输出均根据模式动态调整。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:20:02 +08:00
徐勤民
8b0c05e0e4
feat(nginx): 容器直接绑定 0.0.0.0:80,宿主机无需 nginx 配置
...
将内置 nginx 从 127.0.0.1:11223 改为直接绑定宿主机 0.0.0.0:80。
上层 nginx 直接 proxy_pass 到本机 IP:80 即可,省去宿主机 nginx 配置环节。
同步更新端口检查(80)、部署完成提示、runbook/configuration/README 文档。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:15:53 +08:00
徐勤民
f490b62f0b
fix(deploy): 移除输出中硬编码的 IP 地址
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:12:33 +08:00
徐勤民
35f07bad95
fix(deploy): 修正端口检查、删除死代码、验证走内置nginx
...
1. 端口检查:80/443 → 11223(内置 nginx 实际使用的端口)
2. 删除 if false 死代码块(旧版 nginx 配置模板,137行无效代码)
3. Step 7 验证:改为 BASE_URL=http://127.0.0.1:11223,不依赖
宿主机或外层 nginx 是否已配置,避免部署后验证误报失败
4. 最终输出:添加多层 nginx 代理场景的 WebSocket 头透传提示
5. verify.sh:移除不存在的 docs-site 容器检查(避免恒定 WARN)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 16:56:42 +08:00
徐勤民
a55121aa05
feat(nginx): 内置路由 nginx 作为统一入口,宿主机 nginx 只需一条 proxy_pass
...
将 nginx 容器从可选 profile 改为 base 必启服务,绑定 127.0.0.1:11223。
新增 config/nginx/conf.d/xuqm.conf 按 Docker 服务名路由所有内部请求。
部署完成提示从多条 location 精简为单条 proxy_pass http://127.0.0.1:11223 。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 16:13:04 +08:00
徐勤民
964188ba8c
fix(ports): 宿主机端口改为 11224-11231
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:43:05 +08:00
徐勤民
69da547866
fix(ports): 宿主机端口改为 10223-10230,绑定 127.0.0.1
...
原端口(8080-9001)在 Windows/Hyper-V 环境下可能被系统排除导致绑定失败。
统一改用 10223 起顺序编号,同时绑定 127.0.0.1 限制只有本机 nginx 可访问:
10223 tenant-service 10224 file-service 10225 tenant-web
10226 ops-web 10227 im-service 10228 push-service
10229 update-service 10230 license-service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:40:28 +08:00
徐勤民
2a250e79a0
refactor(deploy): 去除内置 nginx,各服务暴露宿主机端口,末尾输出 nginx 配置参考
...
私有化部署场景下用户通常有自己的 nginx,内置 nginx 容器会占用 80/443
与宿主机冲突,且域名/HTTPS 交互配置对用户是噪音。
- docker-compose.yml: nginx 容器改为 profile=nginx-bundled(默认不启动)
各业务容器增加 ports 暴露宿主机端口(9001/8086/8082/8083/8084/8085/8080/8081)
- deploy.sh: 去除 域名/HTTPS/certbot 交互,改为询问一个外部访问地址(用于 SDK 配置)
健康检查和 import API 直接打 127.0.0.1:9001,不再依赖 nginx 容器
末尾输出端口表和可直接复制的 nginx location 配置参考
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:30:55 +08:00
徐勤民
60aeb61433
fix(deploy): 迁移/新建租户后同步写入 app_licenses,修复 license 404
...
importData API 只写 t_tenant/t_app/t_feature_service,不写 license-service
的 app_licenses 表,导致前端 /api/license/admin/apps/:appKey 返回 404。
在 deploy.sh 的迁移和新建两个分支中,import 成功后直接对同一 MySQL 执行
INSERT ... ON DUPLICATE KEY UPDATE,为所有非系统应用补写 app_licenses 记录。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 12:11:19 +08:00
徐勤民
d2599a0c1e
fix(nginx): WebSocket trailing slash, 413 on file upload, domain+HTTPS support
...
- nginx: /ws/im/ → /ws/im (trailing slash broke ?token= WebSocket connections)
- nginx: add /api/file/ location before /api/ with 500m limit (fixes 413)
- deploy.sh: default DEPLOY_HOST to localhost instead of 127.0.0.1
- deploy.sh: add interactive domain/HTTPS configuration step (0c)
- optional custom domain with validation
- optional HTTPS via Let's Encrypt certbot (standalone, before nginx starts)
- generates SSL nginx config (two-server-block) and docker-compose.override.yml
- SDK_IM_WS_URL and imWsUrl use _WS_SCHEME (ws/wss) based on protocol
- deploy.sh: add info() helper function
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 18:12:48 +08:00
徐勤民
54f4d2a06f
fix(deploy): correct import API path + show actual error on failure
...
- /api/private/migrate/import → /api/private/deployment/migrate/import
- replace -sf with -s + HTTP status check to surface real error message
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 16:07:47 +08:00
徐勤民
1dca34de5a
fix(deploy): remove self-copy of nginx conf; show migration key input
...
- cp nginx conf to itself caused error; file is already in place
- migration key prompt changed from silent to visible (read -rp)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 15:42:35 +08:00
徐勤民
a6a81b0755
feat(deploy): generic deploy.sh with API-based tenant migration
...
- Rename deploy-szyx.sh → deploy.sh, remove all customer-specific branding
- Migrate mode: prompt for pmk_ key, call public platform export API,
pipe to private import API — no MySQL credentials needed
- Remove bcrypt dependency (no longer used in script logic)
- Update install.sh and verify.sh references
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 15:14:23 +08:00