#!/usr/bin/env bash # ============================================================================= # 01-init-env.sh — 生成 .env.deploy-test 配置模板(测试服务器环境) # # 作用:在项目根目录写入 .env.deploy-test,填写各服务的连接信息 # 若文件已存在:默认覆盖(覆盖前将旧文件备份为 .env.deploy-test.bak.<时间戳>) # 后续步骤:编辑 .env.deploy-test,然后执行 02-patch-config.sh # ============================================================================= set -euo pipefail source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh" init_dirs init_script_log # ← 脚本执行日志 header "步骤 1 / 5 — 初始化 .env.deploy-test 配置" if [[ -f "$ENV_FILE" ]]; then bak="${ENV_FILE}.bak.$(date +%Y%m%d-%H%M%S)" warn ".env.deploy-test 已存在,将覆盖;旧文件已备份为 ${bak##*/}" cp -a "$ENV_FILE" "$bak" fi cat > "$ENV_FILE" <<'EOF' # ============================================================================= # 测试服务器环境配置 — .env.deploy-test # 部署场景:测试服务器(有公网 IP),所有服务本地运行 # 编辑完成后执行:./deploy-test/02-patch-config.sh # ============================================================================= # ── 连接检查脚本 check-conn.sh(可选)──────────────────────────────────────── # 为 1 时:以 root 运行 check-conn 会尝试用 apt/dnf/yum 安装缺失的 awscli / mongodb-mongosh # 非 root 或未安装包管理器时仍会跳过自动安装,仅打印提示 CHECK_CONN_AUTO_INSTALL=1 # ── 测试服务器公网 IP(必填)───────────────────────────────────────────────── # 本机(测试服务器)的公网 IP,LiveKit WebRTC 媒体流需要通过此 IP 对外暴露 # 本地 Mac 环境(deploy-local)也会引用此地址连接 LiveKit DEPLOY_TEST_IP=54.116.29.247 # ── MongoDB(远程服务,必填)───────────────────────────────────────────────── # open-im-server / chat / build-server 共用同一个连接,只是 DB 名不同 MONGO_HOST=47.237.103.4 MONGO_PORT=27017 MONGO_USERNAME=minio_pC5wMB MONGO_PASSWORD=rI57PJsJhnz_qlRkfnTa0RPT MONGO_AUTHSOURCE=admin # 连接 URI 中 authSource=…,须与创建该用户时所在库一致 MONGO_DATABASE=openim_v3 # open-im-server / chat 业务库名 BUILD_MONGO_DATABASE=build # build-server 使用 # ── MinIO(Docker 本机 dev-minio,open-im-server 对象存储,必填)────────────── # 对应 open-im-server/config/minio.yml + openim-rpc-third.yml → object.enable: minio # 03-start-infra.sh 会启动容器并映射端口;本机服务用 internal,手机/外网用 external MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=openIM123minio MINIO_BUCKET=openim MINIO_API_PORT=9000 MINIO_CONSOLE_PORT=9001 MINIO_INTERNAL_ADDRESS=127.0.0.1:9000 # 外网访问地址(与 DEPLOY_TEST_IP 一致,客户端下载/预览文件用)。须安全组放行 TCP ${MINIO_API_PORT} MINIO_EXTERNAL_ADDRESS=http://54.116.29.247:9000 MINIO_PUBLIC_READ=true # ── Amazon S3 — build-server(App APK/IPA 构建产物存储,必填)─────────────── # 对应 build-server/config/config.yaml → aws BUILD_AWS_REGION=ap-east-1 BUILD_AWS_BUCKET=im-hk-apk BUILD_AWS_ACCESS_KEY=AKIASJ7PFAWCXUDC7KQV BUILD_AWS_SECRET_KEY=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 # ── Redis(Docker 本地运行)───────────────────────────────────────────────── REDIS_PORT=6379 REDIS_PASSWORD=openIM123 # ── Kafka(Docker 本地运行,KRaft 模式)──────────────────────────────────── # KAFKA_PORT:本机 open-im-server / chat 等使用的 bootstrap(127.0.0.1:KAFKA_PORT) # KAFKA_EXTERNAL_PORT:外网客户端 bootstrap(DEPLOY_TEST_IP:KAFKA_EXTERNAL_PORT),PLAINTEXT 无加密,须防火墙/安全组放行 KAFKA_PORT=9092 KAFKA_EXTERNAL_PORT=9094 # ── Etcd(Docker 本地运行,服务发现注册中心)─────────────────────────────── ETCD_PORT=2379 # ── LiveKit Server(Docker 本地运行,使用本机公网 IP)────────────────────── # LiveKit 通过 Docker 启动(容器名: dev-livekit),复用 dev-redis。 # WebRTC 媒体流需要公网 IP,使用上方 DEPLOY_TEST_IP。 # # LIVEKIT_NODE_IP: = DEPLOY_TEST_IP,WebRTC 客户端通过此 IP 直连媒体流 # LIVEKIT_URL: 后端服务连接 LiveKit 的地址(服务器内部用回环即可) # LIVEKIT_API_KEY / LIVEKIT_API_SECRET: 来自 livekit/livekit.yaml → keys 段 LIVEKIT_NODE_IP=54.116.29.247 # 与 DEPLOY_TEST_IP 保持一致 LIVEKIT_URL=ws://127.0.0.1:7880 LIVEKIT_API_KEY=API8462dba2 LIVEKIT_API_SECRET=U0l7/3IQjWzusK2eOrWlGmLD5jSzALvV2G5tIxGQaQc= # ── Cloudflare Stream(livestream 服务使用)────────────────────────────────── # 来源: livestream/config.yaml → cloudflare 段 CF_ACCOUNT_ID=4b4edea43b310982a528b559136c55d7 CF_API_TOKEN=pGm6FfL_H1WakVz8yMBJILc6BpQpGHAUSM3oqaKx CF_EMAIL= CF_API_KEY= CF_CUSTOMER_CODE=huonxouoa55ent9z # ── 腾讯云 RTC(livecloud 服务使用)───────────────────────────────────────── # 来源: livecloud/config/config.yml → cloud.tencent 段 TENCENT_SDK_APP_ID=20033091 TENCENT_SDK_SECRET_KEY=cceba44084aaa04f8c48a1858ffd5385875c3a5ec006d34278d9d3714b40e3b0 # ── PC 客户端对接的后端公网地址(可选)─────────────────────────────────────── # 通过域名访问 Nginx 反代(sudo ./deploy-test/00-init-tools.sh nginx)。 # 填写 HTTPS 根地址,无末尾斜杠;Nginx 会将 / 指向 /app/pc/dist,并代理 API/WS。 # ./deploy-test/08-build-pc.sh 构建 pc 时会 export VITE_*,覆盖 pc/.env,无需改 pc 目录 # 若某路径与网关不一致,可单独覆盖:PC_VITE_API_URL / PC_VITE_WS_URL / PC_VITE_CHAT_URL / PC_VITE_USER_URL PC_PROXY_DOMAIN=cms-jack.imharry.work PC_BACKEND_ORIGIN=https://cms-jack.imharry.work EOF success ".env.deploy-test 已写入: $ENV_FILE" echo "" echo -e "${BOLD}下一步:${NC}" echo -e " 1. 确认 DEPLOY_TEST_IP 等关键配置正确:" echo -e " ${CYAN}vim $ENV_FILE${NC}" echo -e " 2. 将配置写入各服务 YAML:" echo -e " ${CYAN}./deploy-test/02-patch-config.sh${NC}"