サービスは、エンドツーエンドの接続を持ち、フルエンドツーエンドの暗号化を提供する。Tailscale の無料アカウントは現在、100 台のデバイスに接続することができ、個人ユーザーには十分な容量がある。私のローカルネットワークのデバイスのほとんどは Tailscale を使用して接続しています。以前の記事「VS Code でサーバーを管理する - 私のユニークなサーバー管理方法」で、私は Remote SSH を使用するのが好きで、Tailscale を使用してローカルネットワークを構築し、Remote SSH を使用してリモート開発を行っています。
しかし、Tailscale は中国のネットワーク環境では遅延や接続の問題が頻繁に発生するという問題があります。幸いなことに、公式ではユーザーが自分自身で DERP サーバーを構築し、この問題を解決することを許可しています。コードを書いている最中に接続が途切れる心配はもうありませんし、優れたネットワーク体験により、VS Code のポートフォワードの体験も向上し、リモートプレビュー開発が容易になります。
私自身、低構成のクラウドサーバーを持っているため、以前は Caddy を逆プロキシサーバーとして使用して Alist プロジェクトを実行していました。したがって、今回は同じサーバー上で 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,
}
]
}
}
}
}
以上です。