AI News HubLIVE
站內改寫2 分鐘閱讀

私人AI第二部:使用Tailscale Aperture實現安全遠程訪問

本文介紹如何通過Tailscale私有網絡和Aperture AI網關,安全地遠程訪問自託管的大語言模型,避免暴露在公共互聯網上。

來源Hacker News AI作者: anactofgod

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