Nexmoe

Nexmoe

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

Caddy、Docker シンプルな自己構築 Tailscale DERP

サービスはエンドツーエンドの暗号化と接続を提供するものです。Tailscale の無料アカウントは現在、100 台のデバイスに接続することができます。これは個人ユーザーにとって十分です。私のネットワーク内のデバイスのほとんどは Tailscale を使用して接続しています。以前の記事「VS Code でサーバーを管理する、私のユニークなサーバー管理方法」で、私は Remote SSH を使用するのが好きで、Tailscale を使用してリモート開発を行っています。

ただし、Tailscale は中国本土のネットワーク環境では遅延や接続の問題が頻繁に発生するという問題があります。幸いなことに、公式ではユーザーが自分自身で DERP サーバーを構築し、この問題を解決することを許可しています。これにより、コードを書いている最中に突然切断される心配はなくなります。また、優れたネットワーク体験により、VS Code のポートフォワードの体験が向上し、リモートプレビュー開発が容易になります。

私自身、低構成のクラウドサーバーを所有しており、以前は Caddy を逆プロキシサーバーとして使用していました。今回も同じサーバーで DERP プロジェクトをデプロイするために Caddy を逆プロキシとして使用することを考えています。

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 の設定#

アクセスコントロールで設定します。

直接リンク: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 中转服务
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。