123 lines
6.9 KiB
Bash
Executable File
123 lines
6.9 KiB
Bash
Executable File
#!/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=BCubTUsGcYCVmb4bjCFO0BRbdGeTSwNZNK4EOWTZ
|
||
|
||
# ── 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-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}"
|