なぜ Tailscale を内蔵したか
セルフホストするもの ── ホームラボ、自分の Tailscale ネットワーク背後の VPS 数台、小さなオフィス ── を運用しているなら、iOS で私たちと同じ摩擦に出会ったことがあるはず:Tailscale アプリを開いてトンネルを上げ、SSH アプリに切り替え、トンネルがまだ落ちていないことを祈る、落ちていたら戻って繋ぎ直す。モバイルでこのコンテキストスイッチは聞こえより重いのです。iOS は積極的にアプリを停止し;プライベートホスト名に SSH が到達するためには Tailscale が生きていなければなりません。
そこで Tailscale SDK を直接埋め込みました。第二のアプリはなし。TermAI を開くと、トンネルはアプリのライフサイクルの一部になります。tailnet デバイスは公衆インターネット上にあるかのように SSH リストに表示され、WireGuard で暗号化された経路が裏で処理されます。
前提条件
- Tailscale アカウント(100 デバイスまで無料)
- tailnet 上で
sshdを動かしている少なくとも 1 台のデバイス ── Mac、Linux サーバー、Raspberry Pi、何でも - iOS 16 以降に TermAI インストール済み
tailnet をまだ持っていなければ、まず tailscale.com で登録し、Mac や Linux に Tailscale をインストール。5 分 ── 待ちます。
TermAI で Tailscale を有効化
- TermAI を開く → 設定 → ネットワーク
- Tailscale を ON にする
- 初回、iOS が VPN 設定の追加を求めます。これは iOS での WireGuard の動作 ── OS がトンネルを処理し、TermAI がそれと通信します。許可 をタップ。
設定プロンプトは一度きり。それ以降、TermAI を開くたびにトンネルが自動的に上がります。
OAuth でサインイン
スイッチがオンになると、TermAI がサインインを促します。Tailscale でサインイン をタップ。Safari に飛んで Tailscale OAuth フロー(Google / GitHub / Microsoft / Okta、アカウントが使用しているもの)に通り、TermAI に戻ります。
公式 Tailscale OAuth API を使用。パスワードが TermAI に入ることはなく、Tailscale 資格情報を保存もしません。
サインインはデバイスごと。iPhone と iPad でサインインすると、Tailscale 管理コンソールで両方が別個に表示されます ── モバイルに異なるアクセス権を与えたい ACL に便利。
最初の tailnet SSH
SSH リストに戻り、+ をタップして新規接続を追加。ホスト名を入力する代わりに、フォーム上部の Tailnet タブをタップ。現在オンラインのすべての tailnet デバイスのリストが表示されます。
1 つをタップ ── 例えば nas という名前のホームラボ。TermAI が自動入力:
- ホスト:デバイスの tailnet IP(100.x.y.z)
- ユーザー名:空 ── あなたが記入
- ポート:22(
sshdが別の場所で動いている場合は上書き)
ユーザー名を追加し、TermAI 鍵マネージャから秘密鍵を選ぶ(または新しく生成)、保存。接続をタップ。入りました。
MagicDNS ホスト名を使う
数字の tailnet IP も動きますが、MagicDNS は生活を良くします。tailnet で MagicDNS を有効にしていれば、ホスト名で接続できます ── ssh 100.96.4.21 ではなく ssh nas。
Tailscale 管理コンソールの DNS 下で MagicDNS を有効化。TermAI は自動的に検出 ── 有効化後、Tailscale スイッチを一度再起動してリゾルバをリフレッシュ。それ以降、SSH フォームの ホスト フィールドは nas を直接受け付けます。
トラブルシューティング
Tailscale デバイスがピッカーに表示されない。トンネルが実際に上がったか確認:設定 → ネットワーク → Tailscale → ステータス。「接続中」のままなら、iOS デバイスが VPN 設定を受け入れていない ── スイッチを再トグルして iOS プロンプトを再受け入れ。
Wi-Fi で動くが、モバイルで動かない。一部のキャリアは Tailscale が好む UDP をブロック;クライアントは自動的に DERP リレーにフォールバックしますが、フォールバックは遅い。モバイルで一貫して遅いなら、詳細設定で DERP を強制。
tailnet 接続成功後の「Permission denied (publickey)」。トンネルは上がっている;SSH 認証が失敗。ユーザー名を再チェックし、TermAI 公開鍵がサーバーの ~/.ssh/authorized_keys にあるか確認。この時点で tailnet 部分は問題と無関係。
もう一つ:Tailscale は中国本土ビルドで現地規制により無効化されています。その地域に出荷する場合は /docs/china で代替ネットワーキングパスを参照。
クイックファクト
- Tailscale 内蔵:スマホ側に別途 VPN アプリは不要
- 設定:Tailscale の API キーと tailnet を入力すると、ホームタブがデバイス一覧になる
- ワンタップ接続:オンラインのデバイスに SSH と SFTP のショートカットボタンが出る
- ポート転送不要:tailnet の安定した 100.x アドレスでどこからでもプライベートサーバーに到達
- 両プラットフォーム共通:iOS と Android で内蔵 Tailscale は同一