#!/usr/bin/env bash # 在 Mac 上执行的一键部署入口: # rbw 取 token → 送到 NAS → 上传并执行 setup-frp-on-nas.sh(sudo 会提示输 DSM 密码) # 用法: # bash scripts/setup-frp-remote.sh # 默认走 Tailscale IP(人在外) # bash scripts/setup-frp-remote.sh wangjia@192.168.3.200 # 在家走局域网 # 前提:Mac 已连 Tailscale(pangolin 先断开);rbw 已 unlock。 set -euo pipefail NAS_HOST="${1:-wangjia@100.95.151.13}" cd "${0%/*}" # scripts/ 目录 echo "==> 从 Bitwarden 取 frp token" TMPTOKEN=/tmp/frp-token.$$ rbw get "frp home-tunnel" > "$TMPTOKEN" [ -s "$TMPTOKEN" ] || { echo "!! rbw 取 token 失败(先 rbw unlock)"; rm -f "$TMPTOKEN"; exit 1; } chmod 600 "$TMPTOKEN" echo "==> 上传 token 与脚本到 $NAS_HOST:/tmp/frp-setup/" # 用 ssh cat 管道而非 scp:DSM 默认没开 SFTP 子系统,新版 scp(走SFTP协议)会 Connection closed ssh "$NAS_HOST" 'mkdir -p /tmp/frp-setup && chmod 700 /tmp/frp-setup' ssh "$NAS_HOST" 'cat > /tmp/frp-setup/token && chmod 600 /tmp/frp-setup/token' < "$TMPTOKEN" ssh "$NAS_HOST" 'cat > /tmp/frp-setup/setup-frp-on-nas.sh' < setup-frp-on-nas.sh rm -f "$TMPTOKEN" echo "==> 在 NAS 上执行(sudo 步骤会提示输入 DSM 密码)" ssh -t "$NAS_HOST" 'bash /tmp/frp-setup/setup-frp-on-nas.sh'