Nexmoe

Nexmoe

一个开发者。关于勇敢与热爱,互联网/创造/赛博朋克
twitter
github

Caddy,Docker 簡單的自建 Tailscale DERP

作為一個擁有全端加密且能進行端到端連接的服務。Tailscale 現在的免費帳戶已經支持連接 100 台設備,這對於個人用戶來說綽綽有餘。我的內網設備幾乎都在使用 Tailscale 連接。在前段時間發布的 用 VS Code 管理伺服器,我有獨特的伺服器管理方式 中表明我很喜歡用 Remote SSH,我經常借住 Tailscale 組成的內網使用 Remote SSH 進行遠程開發。

然而,Tailscale 在中國大陸的網路環境中存在一個問題,就是經常出現高延遲或者連接不上的情況。好在官方允許用戶自建 DERP 服務,以充當中繼,解決這個問題。再也不用擔心寫程式寫一半就突然斷了,而且優秀的網路體驗也能提高 VS Code 的 Port Forward 的體驗,方便遠程預覽開發。

由於我本身就有一台低配置的雲伺服器,過去曾經使用 Caddy 作為反向代理伺服器來運行我的 Alist 專案。所以這次也考慮在同一台伺服器上使用 Caddy 作為反向代理來部署 DERP 專案。

採用 Caddy 主要是他相比較於 Nginx 使用很簡單的配置就能滿足大部分需求,還有體驗良好的自動 SSL 管理。能省很多事。

廢話不多說,直接開始配置了。

配置 Docker#

// docker-compose.yml
version: '3'
services:
  derper:
    image: fredliang/derper
    restart: always
    ports:
      - 3478:3478/udp
      - 23333:443
    environment:
      - DERP_DOMAIN=derp.example.com

然後啟動

sudo docker compose up

配置 Caddy#

// Caddyfile
derp.example.com {
    reverse_proxy localhost:23333
}

重載 Caddy 的配置

sudo docker compose exec -w /etc/caddy caddy caddy reload

別忘了解析你的域名到你的 Caddy 伺服器上。

配置 Tailscale#

在 Access Controls 中配置

直達連結:https://login.tailscale.com/admin/acls/file

{
  // ... 其他 ACL 配置
  "derpMap": {
    "OmitDefaultRegions": true, // 是否只連接自建 derper 節點
    "Regions": {
      "900": {
        "RegionID": 900,
        "RegionCode": "myderp",
        "Nodes": [
          {
            "Name": "1",
            "RegionID": 900,
            "HostName": "derp.example.com", // 域名
            "STUNPort": 3478,
            "DERPPort": 443,
          }
        ]
      }
    }
  }
}

結束。

參考#

  1. GitHub - fredliang44/derper-docker: tailscale‘s selfhosted derp-server docker image
  2. Custom DERP Servers
  3. How NAT traversal works
  4. Tailscale 基礎教程:部署私有 DERP 中繼伺服器
  5. 淺探 Tailscale DERP 中轉服務
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。