feat(mobile,deploy): 接入安卓极光与华为通道并准备公网部署配置

客户端默认指向 jxd.jinniu.ink 的 HTTPS/WSS;登录后把 OpenIM userID 设为极光 alias。
华为 agconnect-services.json 不伪造、不入库。Master Secret 只从服务器文件注入。

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
编码工程师
2026-08-30 21:32:58 +08:00
co-authored by multica-agent
parent f35e1f03d5
commit f1fe4a3928
35 changed files with 687 additions and 64 deletions
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# 香港测试机公网部署入口(jxd.jinniu.ink)。由总工执行;施工员本卡不跑本脚本,也不 SSH 改现网。
# 用法: ./scripts/deploy-public.sh
# 回滚: ./scripts/rollback-public.sh
set -euo pipefail
cd "$(dirname "$0")/.."
if [ ! -f .env ]; then
echo "没有 .env。先从 .env.example 复制,再按 deploy/public/.env.public.example 补公网项。" >&2
exit 1
fi
# 注入 Master Secret(失败则停,避免空密钥启动)
# shellcheck disable=SC1091
source ./scripts/load-jpush-secret.sh
if [ -z "${JPUSH_MASTER_SECRET:-}" ]; then
echo "Master Secret 未注入,拒绝启动" >&2
exit 1
fi
mkdir -p deploy/public/acme components/redis/config components/mnt/data components/mongodb components/etcd components/kafka
touch components/redis/config/redis.conf
docker compose \
-f docker-compose.yaml \
-f deploy/public/docker-compose.public.yaml \
pull
docker compose \
-f docker-compose.yaml \
-f deploy/public/docker-compose.public.yaml \
up -d
echo "已提交 compose 启动。检查: docker compose -f docker-compose.yaml -f deploy/public/docker-compose.public.yaml ps"
echo "证书未就绪时先用 nginx.bootstrap.conf 申请证书,见 deploy/public/README.md"
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# 从服务器安全文件注入极光 Master Secret 到环境变量。
# 不打印文件内容、不写入仓库。供总工部署时 source,本卡不执行。
set -euo pipefail
SECRET_FILE="${JPUSH_MASTER_SECRET_FILE:-/root/.config/jinxunda/jpush_master_secret}"
if [ ! -f "$SECRET_FILE" ]; then
echo "缺少极光 Master Secret 文件(已配置路径,不打印内容)" >&2
exit 1
fi
perm=$(stat -c '%a' "$SECRET_FILE" 2>/dev/null || stat -f '%OLp' "$SECRET_FILE")
if [ "$perm" != "600" ] && [ "$perm" != "400" ]; then
echo "Master Secret 文件权限应为 600 或 400(当前 $perm" >&2
exit 1
fi
len=$(wc -c < "$SECRET_FILE" | tr -d ' ')
if [ "$len" -lt 16 ] || [ "$len" -gt 64 ]; then
echo "Master Secret 文件长度异常(不打印内容)" >&2
exit 1
fi
JPUSH_MASTER_SECRET="$(tr -d '\n\r' < "$SECRET_FILE")"
export JPUSH_MASTER_SECRET
# 有意不 echo 该变量
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
# 公网 overlay 回滚到内网 compose:停掉 edge,按原 docker-compose.yaml 拉起。
# 不删除 components/ 与 data/,不改现网数据文件。
set -euo pipefail
cd "$(dirname "$0")/.."
docker compose -f docker-compose.yaml -f deploy/public/docker-compose.public.yaml stop edge || true
docker compose -f docker-compose.yaml -f deploy/public/docker-compose.public.yaml rm -f edge || true
docker compose -f docker-compose.yaml up -d
echo "已回到内网 compose。数据目录未动。检查: docker compose ps"