サービスはエンドツーエンドの暗号化と接続を提供するものです。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,
}
]
}
}
}
}
以上です。