Files
story/deploy/server/README.md
T

4.4 KiB
Raw Blame History

阿里云单机演示部署

该配置用于单机公网演示,不是生产验收配置。只向公网发布HTTP 80和HTTPS 443;PostgreSQL、Redis、MinIO、Keycloak内部端口以及API/Worker端口均不映射到宿主机。当前阿里云演示机使用Let's Encrypt短期IP证书,certbot-ip-renew.timer负责自动续期。单机备份覆盖PostgreSQL、Redis、MinIO对象和当前Keycloak数据目录,并执行数据库级隔离恢复校验;五分钟健康检查覆盖公网入口、OIDC、容器、备份、证书、定时任务和磁盘。跨故障域备份、真实告警接收器、真实RTC、模型、内容安全和云KMS仍按阶段8验收清单执行。

服务器至少需要Docker Engine 29与Compose 2.40。首次部署先生成权限为600的服务器专用配置:

./deploy/server/bootstrap-secrets.sh \
  https://SERVER_IP \
  0.64.0-rc.cloud1 \
  FULL_GIT_COMMIT \
  2026-08-26T00:00:00Z

载入同一候选版本的data-terminal-cloud-backend和data-terminal-cloud-web镜像后执行:

docker compose -f compose.yaml -f deploy/server/compose.override.yaml \
  --env-file deploy/server/.env up -d --no-build \
  postgres redis minio keycloak migrate seed mock-alert-receiver callbacks \
  mock-provider api worker web gateway

安全组和主机防火墙只保留TCP 80、443以及受限来源的SSH 22。HTTP 80仅用于跳转到标准HTTPS 443。正式环境仍应配置自有域名、生产OIDC和真实外部服务,并切换到Kubernetes生产覆盖层。

自动备份与恢复校验

首次安装定时任务:

chmod 0755 deploy/server/backup.sh deploy/server/verify-backup.sh deploy/server/install-backup.sh
sudo deploy/server/install-backup.sh
sudo systemctl start platform-backup.service
sudo systemctl status platform-backup.service --no-pager

备份以AES-256-CBC、PBKDF2和独立随机口令加密,默认保存在/var/backups/data-terminal-cloud并保留14天。每次定时任务会实际把PostgreSQL恢复到随机隔离数据库,对比迁移状态、客户组织、账号、表和外键计数,再删除临时数据库。Redis RDB、MinIO对象和暂停后的Keycloak数据目录会进入同一加密归档并进行逐文件SHA-256校验;当前单机配置不把这些文件级检查冒充跨故障域生产恢复。

手工验证已有备份:

sudo deploy/server/verify-backup.sh /var/backups/data-terminal-cloud/platform-YYYYmmddTHHMMSSZ.tar.gz.enc

加密口令位于/etc/data-terminal-cloud/backup-passphrase且仅root可读。必须把该口令和加密备份复制到不同故障域;口令丢失将无法恢复备份。

健康监测与告警

chmod 0755 deploy/server/health-monitor.sh deploy/server/install-monitoring.sh
sudo deploy/server/install-monitoring.sh
sudo systemctl start platform-health-monitor.service
sudo systemctl show platform-health-monitor.service -p Result -p ExecMainStatus
python3 -m json.tool /var/lib/data-terminal-cloud-monitor/status.json

监测任务每五分钟执行,正常状态为healthy。它还要求宿主机所有非回环TCP监听只能使用22、80和443,避免安全组误放行与错误容器端口映射叠加后暴露数据库或缓存。默认只记录结构化状态和systemd日志;在/etc/data-terminal-cloud/monitor.env配置ALERT_WEBHOOK_URL后,状态变化会发送带时间戳和HMAC-SHA256签名的JSON通知。完整检查项、签名规则、阈值和失败分支见《单机云端健康监测与告警手册》。

OSS异地备份适配

chmod 0755 deploy/server/install-ossutil.sh \
  deploy/server/install-offsite-backup.sh \
  deploy/server/sync-backup-offsite.sh
sudo deploy/server/install-offsite-backup.sh

安装后默认为禁用状态,不会访问OSS。默认认证方式为ecs_ram_role,使用cn-hangzhou地域端点并强制先通过IMDSv2确认实例角色,不保存长期AccessKey。创建私有Bucket并绑定最小权限ECS RAM角色后,在/etc/data-terminal-cloud/offsite-backup.env填写Bucket和前缀、设置OFFSITE_BACKUP_ENABLED=true与OFFSITE_BACKUP_REQUIRED=true,再手工启动一次platform-offsite-backup.service。任务会上传加密归档及摘要、重新下载并复算SHA-256;健康检查在启用后强制要求最新本机归档已有对应远端验证。配置和真实验收步骤见《阿里云OSS异地备份适配与门禁》。