Files
deploy-test/01-init-env.sh
2026-04-21 12:24:04 +07:00

123 lines
6.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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必填─────────────────────────────────────────────────
# 本机(测试服务器)的公网 IPLiveKit 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 使用
# ── MinIODocker 本机 dev-minioopen-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-serverApp 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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
# ── RedisDocker 本地运行)─────────────────────────────────────────────────
REDIS_PORT=6379
REDIS_PASSWORD=openIM123
# ── KafkaDocker 本地运行KRaft 模式)────────────────────────────────────
# KAFKA_PORT本机 open-im-server / chat 等使用的 bootstrap127.0.0.1:KAFKA_PORT
# KAFKA_EXTERNAL_PORT外网客户端 bootstrapDEPLOY_TEST_IP:KAFKA_EXTERNAL_PORTPLAINTEXT 无加密,须防火墙/安全组放行
KAFKA_PORT=9092
KAFKA_EXTERNAL_PORT=9094
# ── EtcdDocker 本地运行,服务发现注册中心)───────────────────────────────
ETCD_PORT=2379
# ── LiveKit ServerDocker 本地运行,使用本机公网 IP──────────────────────
# LiveKit 通过 Docker 启动(容器名: dev-livekit复用 dev-redis。
# WebRTC 媒体流需要公网 IP使用上方 DEPLOY_TEST_IP。
#
# LIVEKIT_NODE_IP: = DEPLOY_TEST_IPWebRTC 客户端通过此 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 Streamlivestream 服务使用)──────────────────────────────────
# 来源: livestream/config.yaml → cloudflare 段
CF_ACCOUNT_ID=4b4edea43b310982a528b559136c55d7
CF_API_TOKEN=pGm6FfL_H1WakVz8yMBJILc6BpQpGHAUSM3oqaKx
CF_EMAIL=
CF_API_KEY=
CF_CUSTOMER_CODE=huonxouoa55ent9z
# ── 腾讯云 RTClivecloud 服务使用)─────────────────────────────────────────
# 来源: 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-static-frontend.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=pc-jack.imharry.work
PC_BACKEND_ORIGIN=https://pc-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}"