Tailscale 跨設備 GPU 共享(浮動 IP 場景)¶
概念概覽
透過 Tailscale P2P mesh VPN 讓電腦白痴朋友(浮動 IP、Windows RTX 5070 Ti)快速分享 GPU 給 WSL 端的 ComfyUI 工作流使用。涵蓋 Tailscale vs Cloudflared 方案選型、Windows 一鍵設置腳本(setup_friend_win.ps1)、WSL 端安裝除錯,以及 PowerShell 腳本中文編碼的實際踩坑記錄。
核心知識¶
方案選型:Tailscale vs Cloudflared¶
| 項目 | Tailscale | Cloudflared |
|---|---|---|
| 設定難度 | 低(GUI 安裝即完成) | 中(需設定 tunnel) |
| 浮動 IP 支援 | 原生支援,自動處理 | 需額外設定 |
| 電腦白痴友好 | 高(Windows 版一鍵安裝) | 低 |
| SSH 支援 | 原生支援 TCP SSH | 不原生支援 TCP SSH |
| 適合場景 | 朋友 GPU 機、長期使用 | HTTP 公開服務曝光、臨時存取 |
結論:浮動 IP + 對方為非技術用戶 + 需要 SSH → Tailscale 最優解。Cloudflared 適合 HTTP API 暴露場景。
朋友端(Windows)設置步驟¶
- 對方執行
setup_friend_win.ps1:自動安裝 OpenSSH Server、設定開機自啟、開放 Windows Firewall 規則 - 對方安裝 Tailscale Windows 版(GUI 一鍵)並登入**同一 tailnet 帳號**
- 腳本完成後自動輸出連線資訊,截圖傳給己方:
- 己方透過
ssh info@<tailscale-ip>連入,再遠端協助設定 ComfyUI
重要:朋友端必須先登入同一 Tailscale 帳號才能被連到,這步驟需親自引導。
我方(WSL)安裝 Tailscale¶
curl -fsSL https://tailscale.com/install.sh | sh
# 若遇到 dpkg was interrupted 錯誤,先修復:
sudo dpkg --configure -a
# 然後重新安裝:
sudo apt-get install -y tailscale
# 啟動並加入 tailnet:
sudo tailscale up
- WSL 是 Linux 環境,需安裝 Linux 版 Tailscale,不是 Windows 版
- WSL 與 Windows 主機各自安裝自己的版本,兩者共存不衝突
- 安裝完成後執行
tailscale status,確認雙端都出現在 tailnet 列表中再進行下一步 - WSL 若無 systemd,Tailscale service 需手動啟動
PowerShell 腳本中文編碼問題¶
根本原因:Windows PowerShell 5.x 預設以系統編碼(Big5/ANSI)讀取腳本,UTF-8 無 BOM 的中文字元會被錯誤解析,導致語法錯誤:
TerminatorExpectedAtEndOfString(字串未正確結尾)MissingEndCurlyBrace/Missing closing '}'(花括號不匹配)
解法(擇一): 1. 儲存時明確指定 UTF-8 with BOM 編碼 2. 將所有中文輸出改為英文 / ASCII,從根本規避問題
PowerShell 腳本「跑完啥都沒發生」¶
可能原因一:execution policy 限制,需以系統管理員身份執行,或先設定:
可能原因二:腳本處於靜默模式,加 -Verbose 查看詳細輸出。
設計原則:給非技術使用者的腳本,執行後**必須**有明確的成功/失敗文字輸出或彈出視窗,讓用戶知道是否完成。
RTX 5070 Ti 規格與可行性¶
- VRAM:約 16GB(實測 16303 MiB)
- 跑 14B WAN 2.2 動畫生成 workflow:足夠,不需升級到 5090
- 跑 14B FP8 模型:勉強可行,需搭配 CPU offload
- 若品質要求較高,建議使用 Q4/Q5 量化版本(會有輕微品質折損)
- 對動漫風格動畫生成和遊戲 icon 工作流已足夠
注意:RTX 5090 使用 DISM 安裝 OpenSSH 可能卡在 100% 長達 5 分鐘,這是正常現象,需等待。
經驗教訓¶
-
Tailscale 是浮動 IP + 電腦白痴使用情境的最佳解,比 Cloudflare Tunnel 更適合需要 SSH 的場景,浮動 IP 問題由 Tailscale 自動處理,無需動態 DNS 或教對方查 IP
-
PowerShell 腳本含中文字串時,必須以 UTF-8 with BOM 存檔;最保險的做法是腳本全用英文輸出,從根本規避 PowerShell 5.x 的編碼解析問題
-
WSL 中 dpkg 中斷後必須先
sudo dpkg --configure -a修復,否則後續所有 apt-get install 都會失敗 -
給非技術使用者的腳本,執行後必須有明確的成功/失敗文字輸出或視覺回饋,靜默成功會讓使用者以為腳本沒作用
-
WSL 是 Linux 環境,安裝工具應選 Linux 版,即使主機是 Windows;WSL 版與 Windows 版 Tailscale 共存不衝突
-
Tailscale 帳號共用(同一 tailnet)可避免授權複雜度,是最簡單的多設備共享方式
-
朋友端的設置步驟應盡可能壓縮到「跑一個腳本」,降低對方操作複雜度,再由己方遠端接手設定 ComfyUI
常見陷阱¶
-
PowerShell 5.x 對非 UTF-8 BOM 的中文字串解析失敗,出現 TerminatorExpectedAtEndOfString 或 MissingEndCurlyBrace,不易直覺察覺是編碼問題
-
Cloudflare Tunnel 不原生支援 TCP SSH,不適合需要 SSH 存取的 GPU 分享場景,誤選會導致架構重做
-
WSL 中 dpkg interrupted 狀態若不先以
sudo dpkg --configure -a修復,後續所有 apt-get install 都會失敗 -
朋友端 Tailscale 必須先登入同一帳號才能被連到,這步驟容易被忽略,導致 tailnet 裡看不到對方機器
-
PowerShell try-catch block 的
}配對錯誤(Missing closing '}')需仔細逐行檢查腳本語法,不易察覺 -
WSL 裡安裝 Tailscale 與 Windows 本機安裝是兩件事;若在錯誤環境安裝,
tailscale指令會直接 command not found -
RTX 5070 Ti 跑 14B FP8 模型需搭配 CPU offload,直接全 GPU 載入可能 OOM;建議先用 Q4/Q5 量化版測試
-
RTX 5090 使用 DISM 安裝 OpenSSH 可能卡在 100% 長達 5 分鐘,這是正常現象,強行中斷會導致安裝不完整
最佳實踐¶
-
朋友 GPU 共享優先選 Tailscale,一鍵解決浮動 IP 問題
-
PowerShell 腳本存 UTF-8 with BOM 或全用英文輸出,避免 PowerShell 5.x 編碼解析問題
-
setup_friend_win.ps1腳本完成後應自動輸出連線資訊(Tailscale IP、SSH user、GPU 型號),讓對方截圖傳給你 -
設置完成後執行
tailscale status,確認雙端都出現在 tailnet 列表中再進行後續連線 -
讓朋友只執行一個 PS1 腳本,腳本內含 OpenSSH 安裝、防火牆規則、進度提示,降低操作門檻
-
連線建立後再幫朋友遠端設定 ComfyUI,減少對方需要理解的步驟
-
Tailscale 使用共用帳號(同一 tailnet)比分開帳號授權更簡單,適合信任的朋友間共享
相關概念¶
- ComfyUI Game Icon Generation with Custom LoRA
- ComfyUI Z-Image WAN2.2 動畫生成流程
- ComfyUI Z-Image WAN 2.2 Character Animation Pipeline
- RunPod Secure GPU Deployment
- ComfyUI Z-Image + WAN 2.2 動漫圖生視頻 Pipeline
來源 Sessions¶
| 日期 | Session | 貢獻摘要 |
|---|---|---|
| - | 6a11d50e-fabd-4e49-90a1-34f9d114caff | 融合自原始頁面 comfyui-friend-gpu-sharing |