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 <