From 9b56e2667b57cbcd8c5b540d5ddbbd4497b61fda Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Mon, 6 Jul 2026 16:32:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(deploy):=20cloudflared=20=E5=87=BA?= =?UTF-8?q?=E7=AB=99=E9=9A=A7=E9=81=93=E5=89=8D=E7=BD=AE=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E9=9D=A2=20API(api.yanmeiai.com=E2=86=92127.0.0.1:8080)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deploy.sh 在 systemd 安装段新增 cloudflared 二进制(apt 源)+ unit 安装; enable-on-boot 用 /etc/pangolin/cloudflared.env(TUNNEL_TOKEN)存在与否作 门槛,避免全新单机部署在 token 未落地前因 cloudflared 起不来而失败。 Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u --- deploy/single-node/deploy.sh | 27 +++++++++++++++++++ .../single-node/systemd/cloudflared.service | 19 +++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 deploy/single-node/systemd/cloudflared.service diff --git a/deploy/single-node/deploy.sh b/deploy/single-node/deploy.sh index c4efc45..4faa6ae 100755 --- a/deploy/single-node/deploy.sh +++ b/deploy/single-node/deploy.sh @@ -257,6 +257,24 @@ sed "s#/usr/local/bin/sing-box#${SB_BIN}#g" \ chmod 644 /etc/systemd/system/sing-box.service install -d -m 755 /etc/polkit-1/rules.d install -m 644 "$HERE/polkit/49-pangolin-singbox.rules" /etc/polkit-1/rules.d/ + +# ── cloudflared(控制面 API 出站隧道,Cloudflare apt 源)───────────────────────── +if ! command -v cloudflared >/dev/null 2>&1; then + log "安装 cloudflared(Cloudflare apt 源)..." + install -m 0755 -d /usr/share/keyrings + curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg \ + -o /usr/share/keyrings/cloudflare-main.gpg + echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bookworm main' \ + > /etc/apt/sources.list.d/cloudflared.list + apt-get update -qq + apt-get install -y -qq cloudflared +fi +# apt 固定装到 /usr/bin;软链到 unit 期望的 /usr/local/bin(与其他 pangolin 二进制一致)。 +CFD_BIN=/usr/bin/cloudflared +[ -x "$CFD_BIN" ] || die "cloudflared 安装失败:$CFD_BIN 不存在。" +ln -sf "$CFD_BIN" /usr/local/bin/cloudflared +install -m 644 "$HERE/systemd/cloudflared.service" /etc/systemd/system/ + systemctl daemon-reload log "启动控制面(pangolin-server,以 $PUSER 运行)..." @@ -275,6 +293,15 @@ if command -v ufw >/dev/null 2>&1 && ufw status 2>/dev/null | grep -q "Status: a log "ufw 放行 ${HTTP_PORT}/tcp(控制面 API,明文)" fi +# ── cloudflared:按需启用(需 /etc/pangolin/cloudflared.env 提供 TUNNEL_TOKEN)─── +if [ -f /etc/pangolin/cloudflared.env ]; then + log "启用 cloudflared(检测到 /etc/pangolin/cloudflared.env)..." + systemctl enable --now cloudflared.service +else + log "cloudflared 已安装但未启动:等 /etc/pangolin/cloudflared.env(TUNNEL_TOKEN)就绪后执行:" + log " systemctl enable --now cloudflared.service" +fi + # ── 11. 摘要 ────────────────────────────────────────────────────────────────── log "完成。单机栈已起(SQLite + pangolin 用户)。" cat <