メッシュ VPN は、静かにすべてを楽にしてくれる道具の一つです。ノート PC、自宅サーバー、スマートフォン、VPS が、どこにあってもプライベートアドレスで互いに見えるようになります。ホスト型メッシュ VPN の難点は調整サーバーで、ある企業があなたの持つすべてのデバイスの地図を握っています。Headscale はその制御サーバーのオープンソース代替です。小さな VPS で動かし、通常のクライアントアプリを使い続ければ、地図はあなたのものになります。
全体の組み立て
- Headscale(あなたの VPS 上)がアドレスを割り当て、公開鍵を配布し、ACL を適用します。
- クライアントはあなたのサーバーを向いた標準の Tailscale アプリです。
- 通信は WireGuard でデバイスからデバイスへ流れます。制御サーバーが運ぶことはありません。
この最後の点が、ごく小さなプランで足りる理由です。VPS が応答するのは小さな調整リクエストだけです。
必要なもの
- Nano-IP(月額 $8):2 vCPU と 1 GB RAM は Headscale の使用量をはるかに上回ります。
- 専用 IPv4 とドメイン(例:
hs.example.com)。デバイスは HTTPS で制御サーバーと通信するため、VPS は 443 番の受信を受け付ける必要があります。NAT プランではできません(詳細)。
インストール(Debian 12 / Ubuntu 24.04)
GitHub の Headscale リリースページから最新の .deb を取得します。バージョンは最新のものに置き換えてください。
HS_VER=0.26.1
wget -O headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HS_VER}/headscale_${HS_VER}_linux_amd64.deb"
apt install -y ./headscale.deb caddy
/etc/headscale/config.yaml を編集します。重要なのは次の 2 行です。
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
HTTPS のために前段に Caddy を置きます。
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
ユーザーとデバイスを追加する
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
古いリリースでは --user に ID ではなくユーザー名を指定します。headscale preauthkeys create --help で、お使いのバージョンが何を求めているか確認できます。
Linux デバイスでは次のとおりです。
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
スマートフォンやデスクトップでは、Tailscale アプリの設定でカスタムの制御サーバーを指定できます。VPS で headscale nodes list を実行すれば、デバイスが表示されるはずです。
リレーと NAT 越え
ほとんどのデバイスは直接つながります。2 台がつながれないとき(厳しいモバイル回線、二重 NAT)は、通信が DERP リレーを経由します。初期状態の Headscale は Tailscale の公開リレーを使い、そこで見えるのは暗号化されたパケットだけです。経路上に外部のものを一切置きたくなければ、config.yaml で内蔵リレーを有効にし(derp.server.enabled: true)、UDP 3478 を開けてください。中継トラフィックは VPS の帯域にカウントされます。
正直な制約
公式の Web ダッシュボードはありません。ユーザー、鍵、ルートはすべて CLI コマンドです(2 回やれば慣れます)。ホスト型サービスの新機能が Headscale に来るのは遅れてから、来るとしてもです。そして制御サーバーはあなたの責任になります。停止しても既存の接続は動き続けますが、新しいデバイスは参加できず、鍵も更新できません。バックアップを取りましょう。状態はすべて /var/lib/headscale にあります。
ホームラボ、家族、あるいはデバイスの地図を第三者のサーバーから引き上げたい小さなチームにとって、$8 の VPS の最良の使い道の一つです。
関連
- WireGuard VPN をセルフホストする:トンネルが一つで足りるなら素の WireGuard
- VPN 向け VPS
- Home Assistant にリモートアクセスするための VPS
コメント
まだコメントはありません。最初になりましょう。