TailscaleでVPSと自宅サーバを繋ぐ

最終的にはサービスのインターネット公開までするつもりだが、その前段階として。

目次

構成

  • VPS
    • Ubuntu 24.04
  • 自宅サーバ
    • macOS 14.8.1
graph TD subgraph VPS dev2(Ubuntu) end subgraph Home nat(NAT) subgraph LAN dev1(Mac) end end tail(TailScale Control Server) dev2 ---|VPN| nat --- dev1 dev1 -.- tail dev2 -.- tail

NAT越えの表現が微妙な気がしつつ、登場人物の理解のために。

要はVPNなんですけれど、各デバイスのグローバルIPやポート、公開鍵など管理のためにTailscaleのコントロールサーバが必要になります。つまりサインアップ必須。しかも認証基盤他所に依存してますね。しゃあなしなのでGitHubアカウント使いました。普段のデータ通信は端末間ですが、最初の疎通や、グローバルIPの変更などがあると、管理サーバが必要になるようです。

管理サーバを完全に廃したい場合は、「Headscale」というOSSがあるようですが、今回は試しません。

インストール

バイナリで配布されているので、そのまんま使います。実行後はサインインします。

VPS(Ubuntu)ではCLIなので以下。

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

テスト

Mac側でテスト用のWebサーバ。

echo "<h1>Hello from Home Server (macOS) via Tailscale</h1>" > index.html
# Pythonで一時的に8080ポートを開く
python3 -m http.server 8080

VPS側で疎通確認。

curl http://[ホームサーバのTailscale-IP]:8080

表示されたらOK。

MagicDNS

Tailscaleで割り当てられるIPアドレスは基本的にはスタティックと考えて良いようですが、覚えづらいし、端末の入れ替えなどあるかもしれないし、必ず固定というわけでもない、とか考えると、名前があったほうがよさそうです。

MagicDNSを使うこと絵、IPアドレスではなく名前を指定することができます。

MagicDNS · テールスケールドキュメント

自動翻訳そのまま。

マシン名の割り当てと編集
MagicDNS はデバイスのデバイスを自動的に使用します マシン名 DNS エントリの一部として。デバイスの名前を変更すると、MagicDNS エントリが自動的に変更されます。

デバイスを参照するために使用する特定の名前がある場合は、 マシン名を編集します デバイスの。

どうやらマシン名がそのまま使えるようです。

curl http://[マシン名]:8080

疎通確認。

ダッシュボードからマシン名を変えることで、任意の名前にできます。

次回はCaddyでリバースプロキシ

想像より随分でした。次は証明書発行までの機能をもつWebサーバCaddyと組み合わせて、Webサイトの外部公開を試みます。

この記事をいいなと思っていただけた方、よければ高評価・チャンネル登録……はないので、コメント・SNSでシェア・ブックマーク、RSSフィード登録を、よろしくお願い致します。

コメント

コメントする

目次