diff --git a/.deploy-state/current.json b/.deploy-state/current.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.deploy-state/current.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.deploy-state/history.log b/.deploy-state/history.log deleted file mode 100644 index e69de29..0000000 diff --git a/.deploy-state/last-healthcheck.json b/.deploy-state/last-healthcheck.json deleted file mode 100644 index b25eecd..0000000 --- a/.deploy-state/last-healthcheck.json +++ /dev/null @@ -1 +0,0 @@ -{"healthy":false} \ No newline at end of file diff --git a/.deploy-state/progress.md b/.deploy-state/progress.md deleted file mode 100644 index 3df8479..0000000 --- a/.deploy-state/progress.md +++ /dev/null @@ -1 +0,0 @@ -# 部署进度 diff --git a/config/docs/docs-runtime.json b/config/docs/docs-runtime.json deleted file mode 100644 index 589f777..0000000 --- a/config/docs/docs-runtime.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "deployment": "PRIVATE", - "privateVersion": "2026.05.18-private.1", - "domains": { - "console": "https://console.customer.com", - "docs": "https://docs.customer.com", - "file": "https://file.customer.com", - "im": "https://im.customer.com", - "update": "https://update.customer.com", - "license": "https://license.customer.com", - "push": "https://push.customer.com" - }, - "features": { - "file": true, - "im": false, - "push": false, - "update": false, - "license": false - } -} diff --git a/config/mail/smtp.env b/config/mail/smtp.env deleted file mode 100644 index d2a0c24..0000000 --- a/config/mail/smtp.env +++ /dev/null @@ -1,6 +0,0 @@ -SMTP_HOST= -SMTP_PORT=465 -SMTP_USERNAME= -SMTP_TLS=true -SMTP_SSL=true - diff --git a/config/nginx/conf.d/xuqm.conf b/config/nginx/conf.d/xuqm.conf deleted file mode 100644 index 87cd41b..0000000 --- a/config/nginx/conf.d/xuqm.conf +++ /dev/null @@ -1,158 +0,0 @@ -# ============================================================================= -# XuqmGroup 私有化部署 — Nginx 路由配置 -# -# 架构说明: -# 所有外部请求统一进入 nginx(80/443),由 nginx 分发到各后端容器 -# 容器间通过 Docker 内部网络通信,无需暴露端口到宿主机 -# -# 服务端口映射: -# tenant-service 9001 /api/*(核心 API)、/actuator/* -# file-service 8086 /file/*(文件上传下载) -# im-service 8082 /api/im/*(IM HTTP)、/ws/im/*(WebSocket) -# update-service 8084 /api/v1/updates/*、/api/v1/rn/* -# push-service 8083 厂商回调(内部端口,不直接暴露给前端) -# license-service 8085 内部调用 -# ops-web 80 /ops/*(运营后台) -# tenant-web 80 /*(控制台,兜底路由) -# ============================================================================= - -server { - listen 80; - server_name _; - - # 强制 UTF-8 编码,防止中文乱码 - charset utf-8; - - # 最大上传文件大小(文件服务单独设置 500m) - client_max_body_size 100m; - - # ----------- 健康检查 ----------- - # nginx 自身探活,用于负载均衡器和 healthcheck.sh - location /health { - return 200 "ok\n"; - add_header Content-Type text/plain; - } - - # ----------- 版本管理服务(update-service:8084)----------- - # 包含:APP 版本列表、RN 热更新包、应用市场发布状态 - location /api/v1/updates/ { - proxy_pass http://update-service:8084/api/v1/updates/; - 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_read_timeout 60s; - } - - # RN 热更新包下载和列表 - location /api/v1/rn/ { - proxy_pass http://update-service:8084/api/v1/rn/; - 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_read_timeout 120s; - } - - # ----------- IM 服务(im-service:8082)----------- - # IM HTTP API:消息发送、会话管理、平台事件 - location /api/im/ { - proxy_pass http://im-service:8082/api/im/; - 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_read_timeout 60s; - } - - # IM WebSocket 长连接(客户端消息收发) - # 注意:不加尾部斜杠,否则 /ws/im?token=xxx 不匹配(nginx prefix matching 不含 ?) - location /ws/im { - proxy_pass http://im-service:8082/ws/im; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_read_timeout 3600s; # WebSocket 保持 1 小时 - } - - # ----------- License 服务(license-service:8085)----------- - # 注意:必须在通用 /api/ 之前声明 - location /api/license/ { - proxy_pass http://license-service:8085/api/license/; - 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_read_timeout 60s; - } - - # ----------- 文件服务 API 路径(file-service:8086)----------- - # 注意:必须在通用 /api/ 之前声明,防止走 tenant-service 的 100m 限制 - location /api/file/ { - proxy_pass http://file-service:8086/api/file/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - client_max_body_size 500m; - proxy_read_timeout 300s; - proxy_send_timeout 300s; - } - - # ----------- 核心 API(tenant-service:9001)----------- - # 注意:tenant-service 运行在 9001 端口(不是 8080) - # 包含:认证、租户管理、App 管理、SDK 配置、私有化部署状态 - location /api/ { - proxy_pass http://tenant-service:9001/api/; - 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_read_timeout 60s; - } - - # Spring Boot Actuator 健康检查(内部监控用) - location /actuator/ { - proxy_pass http://tenant-service:9001/actuator/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } - - # ----------- 文件服务(file-service:8086)----------- - # 文件上传下载,支持大文件(最大 500MB) - location /file/ { - proxy_pass http://file-service:8086/file/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - client_max_body_size 500m; - proxy_read_timeout 300s; - proxy_send_timeout 300s; - } - - # ----------- 文档站(tenant-web 内置,VitePress base=/docs/)----------- - location /docs/ { - proxy_pass http://tenant-web:80/docs/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } - - # ----------- 运营后台(ops-web:80)----------- - # 管理员登录入口:http://<部署地址>/ops - location /ops { - proxy_pass http://ops-web:80; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } - - # ----------- 控制台前端(tenant-web:80)----------- - # 租户登录界面,兜底路由,必须放最后 - # sub_filter 替换 JS bundle 中硬编码的生产域名,私有化部署不再出现 xuqinmin.com - # Accept-Encoding "" 禁用上游压缩,保证 sub_filter 能处理 JS 文本内容 - location / { - proxy_pass http://tenant-web:80; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Accept-Encoding ""; - sub_filter 'wss://im.dev.xuqinmin.com/ws/im' 'ws://$host/ws/im'; - sub_filter 'https://dev.xuqinmin.com' 'http://$host'; - sub_filter_once off; - sub_filter_types text/javascript application/javascript; # text/html 是 nginx 默认,无需重复声明 - } -} diff --git a/config/sdk/xuqm-private-sdk.json b/config/sdk/xuqm-private-sdk.json deleted file mode 100644 index 611697f..0000000 --- a/config/sdk/xuqm-private-sdk.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "schemaVersion": 1, - "configVersion": "2026.05.18-private.1", - "deployment": "PRIVATE", - "appKey": "ak_private_default", - "controlBaseUrl": "https://console.customer.com", - "fileBaseUrl": "https://file.customer.com", - "imApiBaseUrl": "https://im.customer.com", - "imWsUrl": "wss://im.customer.com/ws/im", - "pushBaseUrl": "https://push.customer.com", - "updateBaseUrl": "https://update.customer.com", - "licenseBaseUrl": "https://license.customer.com", - "docsBaseUrl": "https://docs.customer.com", - "features": { - "file": true, - "im": false, - "push": false, - "update": false, - "license": false - }, - "connectTimeoutMs": 10000, - "readTimeoutMs": 30000, - "logLevel": "WARN" -} diff --git a/config/tenant/bootstrap.env b/config/tenant/bootstrap.env deleted file mode 100644 index c17d174..0000000 --- a/config/tenant/bootstrap.env +++ /dev/null @@ -1,5 +0,0 @@ -TENANT_BOOTSTRAP_EMAIL=admin@customer.com -TENANT_BOOTSTRAP_USERNAME=admin -TENANT_BOOTSTRAP_PASSWORD=change-me-on-first-login -TENANT_BOOTSTRAP_APP_KEY=ak_private_default - diff --git a/config/vendors/push.env b/config/vendors/push.env deleted file mode 100644 index 0561228..0000000 --- a/config/vendors/push.env +++ /dev/null @@ -1,41 +0,0 @@ -# ========== Huawei Push (HMS) ========== -HUAWEI_PUSH_ENABLED=false -# HUAWEI_PUSH_APP_ID= -# HUAWEI_PUSH_APP_SECRET= -# HUAWEI_PUSH_CLIENT_ID= -# HUAWEI_PUSH_CLIENT_SECRET= - -# ========== Xiaomi Push ========== -MI_PUSH_ENABLED=false -# MI_PUSH_APP_SECRET= -# MI_PUSH_PACKAGE_NAME= - -# ========== OPPO Push ========== -OPPO_PUSH_ENABLED=false -# OPPO_PUSH_APP_KEY= -# OPPO_PUSH_MASTER_SECRET= - -# ========== vivo Push ========== -VIVO_PUSH_ENABLED=false -# VIVO_PUSH_APP_ID= -# VIVO_PUSH_APP_KEY= -# VIVO_PUSH_APP_SECRET= - -# ========== Honor Push ========== -HONOR_PUSH_ENABLED=false -# HONOR_PUSH_APP_ID= -# HONOR_PUSH_CLIENT_ID= -# HONOR_PUSH_CLIENT_SECRET= - -# ========== APNs (Apple Push) ========== -APNS_ENABLED=false -# APNS_KEY_ID= -# APNS_TEAM_ID= -# APNS_BUNDLE_ID= -# APNS_KEY_FILE=/config/vendors/apns-key.p8 -# APNS_PRODUCTION=false - -# ========== FCM (Firebase Cloud Messaging — optional) ========== -FCM_ENABLED=false -# FCM_SERVER_KEY= -# FCM_PROJECT_ID= diff --git a/config/vendors/store-submit.env b/config/vendors/store-submit.env deleted file mode 100644 index 164bc4e..0000000 --- a/config/vendors/store-submit.env +++ /dev/null @@ -1,28 +0,0 @@ -# ========== Huawei AppGallery Connect ========== -HUAWEI_STORE_ENABLED=false -# HUAWEI_STORE_CLIENT_ID= -# HUAWEI_STORE_CLIENT_SECRET= -# HUAWEI_STORE_APP_ID= - -# ========== Xiaomi Developer Platform ========== -MI_STORE_ENABLED=false -# MI_STORE_USERNAME= -# MI_STORE_PASSWORD= -# MI_STORE_APP_ID= - -# ========== OPPO Open Platform ========== -OPPO_STORE_ENABLED=false -# OPPO_STORE_CLIENT_ID= -# OPPO_STORE_CLIENT_SECRET= -# OPPO_STORE_PKG_NAME= - -# ========== vivo Open Platform ========== -VIVO_STORE_ENABLED=false -# VIVO_STORE_ACCESS_KEY= -# VIVO_STORE_ACCESS_SECRET= - -# ========== Honor Developer Center ========== -HONOR_STORE_ENABLED=false -# HONOR_STORE_CLIENT_ID= -# HONOR_STORE_CLIENT_SECRET= -# HONOR_STORE_APP_ID= diff --git a/config/xuqm.env b/config/xuqm.env deleted file mode 100644 index 364e593..0000000 --- a/config/xuqm.env +++ /dev/null @@ -1,37 +0,0 @@ -DEPLOYMENT_MODE=PRIVATE -TENANT_REGISTER_ENABLED=false -TENANT_BOOTSTRAP_ENABLED=true - -ENABLE_FILE=true -ENABLE_IM=false -ENABLE_PUSH=false -ENABLE_UPDATE=false -ENABLE_LICENSE=false - -MYSQL_HOST=127.0.0.1 -MYSQL_PORT=3306 -MYSQL_DATABASE=xuqm_private -MYSQL_USERNAME=xuqm - -REDIS_HOST=127.0.0.1 -REDIS_PORT=6379 -REDIS_DATABASE=0 - -CONSOLE_DOMAIN=https://console.customer.com -OPS_DOMAIN=https://ops.customer.com -DOCS_DOMAIN=https://docs.customer.com -FILE_DOMAIN=https://file.customer.com -IM_DOMAIN=https://im.customer.com -UPDATE_DOMAIN=https://update.customer.com -LICENSE_DOMAIN=https://license.customer.com -PUSH_DOMAIN=https://push.customer.com - -# Internal service URLs (used by SDK config endpoint) -SDK_FILE_SERVICE_URL=https://file.customer.com -SDK_IM_API_URL=https://im.customer.com -SDK_IM_WS_URL=wss://im.customer.com/ws/im - -# 系统 IM 通信应用 key(私有化服务间消息通知使用此 app_key 连接 IM 服务) -# 由 deploy 脚本或 migrate-tenant.sh 自动写入,此处为默认值 -SYSTEM_APP_KEY=ak_409e217e4aa14254ad73ad3c -