私人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即可。