73e026a4df
deploy-pangolin / deploy (push) Has been cancelled
- edge 改为自定义镜像:官方 nginx + certbot + dns-cloudflare 插件 - pangolin-entrypoint.sh:后台每12h certbot renew,续期后本容器内 nginx -s reload - 不再需要宿主 cron / docker socket / 独立 certbot 服务做日常续期 - /etc/letsencrypt 改 rw 挂载,挂入 cloudflare.ini - compose 去掉 build:(宿主 docker-compose 不支持 compose build),改脚本 docker build - deploy.sh/cutover.sh: docker build -t pangolin-edge:local 后再 up Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
48 lines
1.6 KiB
Bash
Executable File
48 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# deploy.sh —— 幂等部署(免 root)。CI 与手动均可。
|
|
# - 总是确保 singbox(Hy2)在跑;
|
|
# - edge:若宿主 nginx 仍在(未切换)则只校验配置、不启动(避免抢 80/443);
|
|
# 宿主 nginx 已停(已切换)则正常拉起。
|
|
# 首次 nginx 切换由 cutover.sh(需 root 一次)完成。
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.." # -> deploy/
|
|
|
|
EDGE_IMAGE="nginx:1.27-alpine"
|
|
|
|
echo "==> [1/4] 生成/复用密钥与证书"
|
|
./scripts/gen-secrets.sh
|
|
|
|
echo "==> [2/4] 渲染配置"
|
|
# shellcheck disable=SC1091
|
|
source ./secrets/pangolin.env
|
|
sed "s|__HY2_PASSWORD__|${HY2_PASSWORD}|g" ./singbox/config.tmpl.json > ./singbox/config.json
|
|
|
|
echo "==> [3/4] 拉起 singbox(Hy2)"
|
|
docker-compose -p pangolin up -d singbox
|
|
docker-compose -p pangolin ps singbox
|
|
|
|
echo "==> [4/4] edge(分发层)"
|
|
edge_validate() {
|
|
docker run --rm \
|
|
-v "$PWD/edge/nginx.conf:/etc/nginx/nginx.conf:ro" \
|
|
-v "$PWD/edge/stream.conf:/etc/nginx/stream.conf:ro" \
|
|
-v "$PWD/edge/conf.d:/etc/nginx/conf.d:ro" \
|
|
-v /etc/letsencrypt:/etc/letsencrypt:ro \
|
|
-v /opt/jiu:/opt/jiu:ro \
|
|
-v /var/www/pay:/var/www/pay:ro \
|
|
"$EDGE_IMAGE" nginx -t
|
|
}
|
|
if systemctl is-active --quiet nginx 2>/dev/null; then
|
|
echo " 宿主 nginx 仍在运行 → 仅校验 edge 配置,不启动(切换请跑 cutover.sh)"
|
|
edge_validate && echo " edge 配置校验通过 ✅"
|
|
else
|
|
echo " 宿主 nginx 未运行 → 构建并拉起 edge"
|
|
edge_validate
|
|
docker build -t pangolin-edge:local ./edge
|
|
docker-compose -p pangolin up -d edge
|
|
docker-compose -p pangolin ps edge
|
|
fi
|
|
|
|
./scripts/print-clients.sh
|
|
echo "==> 完成 ✅"
|