iPadからMac上の code-server へ、Tailscaleを利用して安全かつHTTPSでアクセスするための設定メモ。

1. 構成の概要

  • サーバー: Mac (自宅等に設置)
  • クライアント: iPad (外出先/自宅)
  • 通信パス: iPad -> Tailscale (HTTPS) -> Mac (localhost:8080)
  • 使用ツール: code-server, Tailscale

2. 事前準備 (Tailscale 管理画面)

設定を有効にするために、Tailscale Admin Console で以下の2点を確認:

  • MagicDNS: Enabled
  • HTTPS Certificates: Enabled (証明書自動発行のため必須)

3. Mac側の設定 (code-server)

設定ファイルの編集

~/.config/code-server/config.yaml を開き、待ち受けアドレスを localhost限定 にする。

bind-addr: 127.0.0.1:8080
auth: none
cert: false  # TailscaleがHTTPS化するため、アプリ側はfalseで良い

注意点: 初めtailscaleで付与されている公開ipである 100.x.x.x に設定したが、うまくhttps化できなかった。

4. Tailscale Serve の設定

Tailscaleのリバースプロキシ機能を使い、Mac内部の8080ポートを外部(Tailscale網内)に公開する。

設定コマンド

再起動後も設定が維持されるよう --bg (background) フラグを付ける。

# 既存設定のクリア
tailscale serve reset

# プロキシ設定の有効化
tailscale serve --bg http://127.0.0.1:8080

ステータス確認

tailscale serve status

出力結果に https://[マシン名].[ランダム文字列].ts.net/ が表示されれば成功。

5. 自動起動の設定 (常駐化)

Macを再起動したり、ログインし直したりした際に、自動で code-server が立ち上がるようにする

Homebrewによる常駐化

brew services start code-server
  • Tailscale: アプリが起動していれば、serve 設定は自動で復元される
  • code-server: brew services によりバックグラウンドで常に待機させる

6. トラブルシューティング

Q. 「This site can’t be reached」と出る場合

  • 原因1: Macの code-server が落ちている。

    • 対策: curl -I http://127.0.0.1:8080200 OK が返るか確認。
  • 原因2: 待ち受けIPの不一致。

    • 対策: tailscale serve の宛先と code-serverbind-addr が共に 127.0.0.1 であることを確認。Tailscale IP (100.x.x.x) を直接指定すると、Mac内部のルーティング問題で繋がらないことがある。

Q. なぜ Caddy を使わないのか?

  • Tailscale公式ドキュメントにはCaddyの使い方が載っているがTailscaleの serve 機能の方が、証明書の管理やインストール作業が不要でシンプルと判断した

7. 外出先からのアクセス確認

  1. iPadのTailscaleアプリを Connected にする。
  2. ブラウザ(Safari/Chrome)で、Tailscaleから提供されたHTTPS URLを開く。