私人AI第二部:使用Tailscale Aperture實現安全遠端訪問
本文介紹如何透過Tailscale私有網路和Aperture AI閘道器,安全地遠端訪問自託管的大語言模型,避免暴露在公共網際網路上。
在《私人AI》系列的第一部分中,我們成功在GB10 NVIDIA DGX Spark上執行了Qwen3.6-35B-A3B-FP8模型,並透過vLLM提供了相容OpenAI的API。然而,該服務僅在本地主機(localhost:8000)可訪問。本第二部分將帶你完成後續步驟,使模型能夠從任何授權裝置安全訪問,而無需暴露在公網。
核心思路:採用兩層保護機制——Tailscale(私有網格網路)和Aperture(AI閘道器)。Tailscale在裝置間建立加密的直接連線,如同位於同一區域網;Aperture則透過請求者的Tailscale身份進行認證,並集中記錄所有使用情況。
第三階段:將伺服器加入私有網路
首先,在AI伺服器(例如DGX Spark)上安裝並啟動Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up瀏覽器開啟輸出的URL,使用你的Tailscale賬號登入。記下伺服器的Tailscale IP(如100.92.0.10),後續配置需要。如果伺服器啟用了防火牆(如ufw),記得允許Tailscale介面上的8000埠。
第四階段:部署Aperture閘道器
前往aperture.tailscale.com申請訪問(測試版免費)。成功後在Tailscale管理控制台可看到名為gateway的節點,其儀表盤地址為http://gateway/ui。
在Aperture儀表盤的Configuration中編輯原始的HuJSON配置,在providers塊內新增自定義提供商:
"sovereign": {
"baseurl": "http://100.92.0.10:8000",
"apikey": "local-no-auth",
"models": ["Qwen/Qwen3.6-35B-A3B-FP8"]
}注意:baseurl僅包含主機和埠,不要新增/v1;apikey可為任意字串;models必須與vLLM提供的模型ID完全一致。
然後,在grants塊中新增訪問規則,例如允許所有使用者訪問所有模型:
"grants": [
{
"src": ["*"],
"app": {
"tailscale.com/cap/aperture": [
{ "role": "admin" },
{ "models": "**" }
]
}
}
]儲存配置後,在Models選項卡中點選Play按鈕測試,綠色表示連線成功。
第五階段:客戶端連線
在客戶端(如筆記型電腦)同樣安裝並登入Tailscale,確保使用與伺服器相同的賬號。然後測試連線:
curl http://gateway/v1/models若返回模型列表,則MagicDNS生效。接著發起真實請求:
curl http://gateway/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"Qwen/Qwen3.6-35B-A3B-FP8","messages":[{"role":"user","content":"hello from my laptop"}]}'無需API金鑰,Tailscale身份即認證憑證。請求日誌將在Aperture儀表盤中可見。
常見故障排除
- Play按鈕顯示紅X:檢查Tailscale ACL是否允許Aperture節點訪問伺服器的8000埠。
- 路徑錯誤:確保baseurl不含/v1。
- 模型未顯示:確認apikey非空且模型ID正確。
- 無法解析gateway:啟用MagicDNS或使用Aperture節點的Tailscale IP。
- 訪問被拒:檢查grants配置。
現在,你已經擁有一個私密、安全、可遠端訪問的AI模型。後續可將各類應用指向http://gateway/v1,API金鑰隨意填寫,模型選擇相應ID即可。