#!/usr/bin/env bash # ============================================================================= # 01-init-env.sh — 生成 .env.deploy-test 配置模板(测试服务器环境) # # 作用:在项目根目录生成 .env.deploy-test,填写各服务的连接信息 # 后续步骤:编辑 .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 warn ".env.deploy-test 已存在,跳过创建" echo "" echo -e "${BOLD}当前配置:${NC}" grep -v '^\s*#' "$ENV_FILE" | grep -v '^\s*$' | sed 's/^/ /' echo "" echo -e "如需重置:${YELLOW}rm $ENV_FILE && $0${NC}" exit 0 fi cat > "$ENV_FILE" <<'EOF' # ============================================================================= # 测试服务器环境配置 — .env.deploy-test # 部署场景:测试服务器(有公网 IP),所有服务本地运行 # 编辑完成后执行:./deploy-test/02-patch-config.sh # ============================================================================= # ── 测试服务器公网 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=openim_v3 MONGO_DATABASE=openim_v3 # open-im-server / chat 使用 BUILD_MONGO_DATABASE=build # build-server 使用 # ── Amazon S3 — open-im-server(IM 聊天文件存储,必填)────────────────────── # 对应 open-im-server/config/openim-rpc-third.yml → object.aws OPENIM_AWS_REGION=ap-southeast-1 OPENIM_AWS_BUCKET=im1688 OPENIM_AWS_ACCESS_KEY_ID=AKIA5TMMSZWVFYCLKJ2G OPENIM_AWS_SECRET_ACCESS_KEY=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 # 自定义 Endpoint(CloudFlare R2 / 其他 S3 兼容服务),留空则使用 AWS 官方 OPENIM_AWS_ENDPOINT= OPENIM_AWS_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=9092 # ── 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= CF_API_TOKEN= CF_EMAIL= CF_API_KEY= CF_CUSTOMER_CODE= # ── 腾讯云 RTC(livecloud 服务使用)───────────────────────────────────────── # 来源: livecloud/config/config.yml → cloud.tencent 段 TENCENT_SDK_APP_ID=20033091 TENCENT_SDK_SECRET_KEY=cceba44084aaa04f8c48a1858ffd5385875c3a5ec006d34278d9d3714b40e3b0 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}"