徐勤民
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
徐勤民
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
徐勤民
e5ffde39a0
fix(docker-compose): add SPRING_DATASOURCE/REDIS overrides to all services
...
im-service, push-service, update-service, license-service were missing the
SPRING_DATASOURCE_URL/USERNAME/PASSWORD environment overrides that tenant-service
and file-service already had. Without these, all services connected to the
hardcoded production database (39.107.53.187) instead of the local private MySQL,
causing mutations in the private deployment to affect the public platform.
im-service also gets SPRING_DATA_REDIS_* overrides to replace the hardcoded
redisdev.xuqinmin.com Redis connection.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 18:23:27 +08:00
徐勤民
43a423b85c
feat: 一键安装向导 + 交互式租户初始化
...
- 新增 install.sh:curl 一键下载依赖安装 + 自动解压部署包 + 启动部署向导
- deploy-szyx.sh:移除硬编码租户常量,改为交互式选择(新建/迁移)
- 新建租户:收集邮箱/用户名/密码,bcrypt 写入 bootstrap.env
- 迁移租户:提示输入生产 MySQL 配置,bcrypt 验证主账号后执行迁移
- 已有数据时迁移前显示红色警告要求 yes 确认
- 移除 docs-site 独立容器(文档已内置于 tenant-web/docs/)
- nginx 和 docker-compose 同步清理 docs-site 残留配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:29:57 +08:00
徐勤民
20423a0347
fix: add Spring Boot DB/Redis overrides and full nginx routing
...
- docker-compose.yml: add SPRING_DATASOURCE_* and SPRING_DATA_REDIS_*
environment vars for tenant-service and file-service; these override
hardcoded production URLs in application.yml at startup.
docs-site depends_on marked required:false so nginx starts even when
docs-site image is unavailable.
- config/nginx/conf.d/xuqm.conf: add routing for /api/ and /actuator/
to tenant-service:9001, /file/ to file-service:8086, /ops to ops-web;
add client_max_body_size 100m and proxy headers.
Discovered and verified during P5-01 WSL2 acceptance testing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 00:13:09 +08:00
徐勤民
4ada03183a
chore: scaffold private deployment repository
2026-05-18 19:49:31 +08:00