コミュニティソリューション

TailscaleでCasaOSにリモートアクセスする方法

A 2023 CasaOS community tutorial showing how to run the Tailscale Docker client, authenticate it with TS_AUTHKEY, join other devices to the same tailnet, and reach CasaOS remotely without conventional port forwarding.

Tailscaleを使うと、CasaOSサーバーにプライベートアドレスが割り当てられ、自宅から離れているときでも、自分が認証したデバイスからアクセスできるようになります。2023年10月にCasaOS 0.4.4と旧バージョンのTailscale向けに公開されたIceWhale Communityの元チュートリアルでは、公式のTailscale Dockerイメージ、認証キー、そして2台目のTailscaleクライアントを使って、このプライベートなメッシュ接続を構築していました。

基本的な考え方は現在も有効です。CasaOSホストでTailscaleを実行してtailnetに参加させ、リモートのスマートフォンやコンピューターにもTailscaleをインストールし、TailscaleのIPアドレスまたは設定したDNS名を使ってCasaOSを開きます。ただし、スクリーンショットとDockerの項目名や配置は過去のものです。現在のTailscaleコンテナのデプロイでは、Tailscaleの状態も永続化し、認証情報を保護するとともに、最新のアクセス制御ガイダンスに従う必要があります。

このCasaOS + Tailscaleセットアップでできること

このコミュニティガイドは、従来の公開ポート転送を避けるために作成されました。CasaOSダッシュボードをインターネットに直接公開する代わりに、デバイスをtailnetと呼ばれる同じTailscaleネットワークに参加させ、Tailscaleのアドレスを通じて通信します。

元のワークフローは次のとおりでした。

  1. CasaOSサーバーでTailscaleクライアントを実行します。
  2. Tailscaleアカウントを作成するか、サインインします。
  3. 認証キーを生成し、Tailscaleコンテナに渡します。
  4. リモートのノートパソコン、スマートフォン、その他のデバイスにTailscaleをインストールします。
  5. そのデバイスを同じtailnetにサインインさせます。
  6. TailscaleのIPアドレスまたはtailnetのDNS名を使ってCasaOSを開きます。

これはプライベートネットワーク経由のアクセスです。Tailscale経由でCasaOSを利用するだけなら、通常は自宅のルーターでCasaOSダッシュボードのポートを転送する必要はありません。

元のチュートリアルにおける重要なバージョンの境界

元の記事では、CasaOS 0.4.4Tailscale 1.21.3が明記されています。この記事は2023年に書かれたもので、それ以降、CasaOSとTailscaleコンテナの設定は変化しています。現在のCasaOSやDockerのUIで、すべての項目がまったく同じ場所に表示されるとは限らないため、以下のスクリーンショットはワークフローを理解するために利用してください。

現在の公式Tailscale Dockerガイドでも、TS_AUTHKEYを使ったコンテナの認証に対応していますが、コンテナに必要な永続状態と機能についても説明しています。

ステップ1:TailscaleコンテナをCasaOSに追加する

2023年のガイドでは、公式のTailscale DockerイメージをCasaOSにインポートしていました。過去のUIワークフローを再現する場合は、イメージのソースが公式のものであることを確認してください tailscale/tailscale 不明なサードパーティ製コンテナではなく、イメージを使用します。

Tailscale Dockerコンテナのインポートに使用するCasaOSカスタムアプリケーション画面
元のCasaOSガイドは、TailscaleをDockerアプリケーションとしてインポートすることから始まります。
Tailscaleコンテナアプリケーション用のCasaOS Docker設定画面
ここに示す正確なCasaOSのフィールドは2023年のインターフェースに基づいているため、現在のインストール環境で確認してください。

最新のスタンドアロンTailscaleコンテナでは、公式ドキュメントに概念的な基本パターンとして次のように示されています。

docker run -d \
  --name tailscale \
  --hostname casaos-server \
  -e TS_AUTHKEY=<tskey-YOUR-AUTH-KEY> \
  -e TS_STATE_DIR=/var/lib/tailscale \
  -v ./tailscale-state:/var/lib/tailscale \
  --cap-add=net_admin \
  --cap-add=net_raw \
  --restart unless-stopped \
  tailscale/tailscale:latest

認証キーを公開投稿、スクリーンショット、リポジトリ、サポートチケットに貼り付けないでください。パスワードと同じように扱ってください。ここに示すCasaOS Custom Installの各フィールドは、Dockerに必要な設定を同じように表す必要がありますが、お使いのバージョンで利用できるGUIに合わせてください。

ステップ2:Tailscale認証キーを生成する

コミュニティチュートリアルでは次に、Tailscaleアカウントを作成し、Tailscaleの管理インターフェースから認証キーを生成しました。そのキーを、次の項目を通じてCasaOSコンテナに渡しました。 TS_AUTHKEY 環境変数。

CasaOS用の認証キーを作成するために使用したTailscale管理ページ
元のチュートリアルでは、CasaOSコンテナがtailnetに参加できるよう、認証キーを生成しました。
TS_AUTHKEYを設定したCasaOSのTailscaleコンテナ環境変数フィールド
生成された認証情報は、TS_AUTHKEY環境変数を通じてTailscaleコンテナに渡されます。

現在のTailscaleドキュメントでも引き続きサポートされています TS_AUTHKEY認証キーは、再利用可能やエフェメラルなど、さまざまな特性を持つものとして作成できます。サーバーに適した権限と有効期間だけを選択し、キーが漏えいしたと思われる場合はローテーションしてください。

再起動しても新規インストール時のように動作しないよう、Tailscaleの状態を永続化する

この点は、古いスクリーンショットから分かる以上に、現在のデプロイメントでは重要です。現在のTailscaleのDocker例では、次のように設定されています。

TS_STATE_DIR=/var/lib/tailscale

そのディレクトリをDockerボリュームまたはバインドマウントで永続化します。状態が永続化されていない場合、コンテナを再作成すると、認証やノードIDの動作が予期せず変わることがあります。

Tailscaleはさらに TS_AUTH_ONCE=true コンテナに保存済みのログイン状態がない場合にのみ認証するデプロイメント向けです。このオプションを使用する場合は、状態ディレクトリが実際に永続化されていることを確認してください。

新しいコンテナ構成に古いCasaOSのスクリーンショットを置き換えて翻訳する前に、現在のTailscale Docker設定パラメータを確認してください。

ステップ3:CasaOSノードがTailscaleに表示されることを確認する

コンテナが正常に起動したら、Tailscaleのデバイス管理ページを開き、CasaOSノードが接続済みとして表示されることを確認します。元のチュートリアルでは、その後デバイス一覧を使ってサーバーに割り当てられたTailscaleアドレスを特定していました。

tailnetに接続されたCasaOSサーバーを表示するTailscaleデバイス一覧
認証が完了すると、CasaOSサーバーが同じTailscaleネットワーク内のデバイスとして表示されます。

コンテナは実行されているのにサーバーが接続済みとして表示されない場合は、コンテナのログを確認し、認証キーが有効であることを確認し、現在使用しているTailscaleイメージに必要な状態管理およびネットワーク機能が設定されていることを確認してください。

ステップ4:リモートデバイスにTailscaleをインストールする

自宅外で使用するノートパソコン、スマートフォン、タブレットにTailscaleクライアントをインストールし、同じtailnetにサインインします。両方のデバイスがTailscaleに接続されていれば、同じWi-Fiネットワークに接続する必要はありません。

現在のTailscale接続は、ネットワークの状況に応じて直接接続または中継接続になります。Tailscaleのドキュメントによると、直接接続、DERP中継、Tailscale Peer Relay接続はいずれもWireGuardによるエンドツーエンド暗号化を維持します。主な違いは、ペイロードが暗号化されるかどうかではなく、パフォーマンスです。

ステップ5:Tailscale IPアドレスでCasaOSを開く

元のガイドでは、CasaOSサーバーのTailscale IPアドレスをコピーし、リモートデバイスのブラウザーに入力していました。

Tailscaleアドレスを介してリモートでCasaOSダッシュボードに接続するブラウザー
両方のデバイスが同じtailnetに属していれば、リモートクライアントはサーバーのTailscaleアドレスを使ってCasaOSを開けます。

通常、このアドレスはTailscale 100.x.x.x IPアドレスです。tailnetでMagicDNSを使用しており、CasaOSノードに適切なマシン名が設定されている場合は、IPアドレスを覚える代わりにTailscaleのDNS名も使用できます。

実際のインストール環境でCasaOSが待ち受けているダッシュボードのポートを使用してください。CasaOSがデフォルト以外のポートに設定されている場合は、URLにそのポートを含めます。

TailscaleのIPアドレスとホームLANのIPアドレスは別物

混乱が生じやすいのは、1台のサーバーでTailscaleを使えば、通常のホームネットワーク内にあるすべてのIPアドレスへ自動的にアクセスできると考えてしまうことです。CasaOSマシンへTailscaleアドレスで直接接続する構成と、例えば 192.168.1.x、これは「サブネットルーティング」と呼ばれる別のTailscale機能です。

同じホスト上で動作しているCasaOSのダッシュボードとアプリだけが必要な場合は、まずサーバーのTailscale IPを使用してください。Tailscaleノードから自宅ネットワーク内の他のデバイスやサブネットへ意図的にトラフィックをルーティングしたい場合にのみ、サブネットルーティングを設定してください。

セキュリティに関する訂正:Tailscaleの周囲に通常は別のVPNは必要ありません

元の2023年の投稿には、機密性の高い転送には追加のVPNを使用できるという注記がありました。この表現は誤解を招く可能性があります。Tailscale自体がWireGuardを基盤とする暗号化されたプライベートネットワークシステムです。現在のTailscaleドキュメントでは、接続が中継される場合も含め、Tailscaleデバイス間のトラフィックはエンドツーエンドで暗号化されると説明されています。

したがって、Tailscaleノード間ですでに転送されているCasaOSのトラフィックを暗号化するだけなら、通常は追加のVPNは必要ありません。複数のVPN製品を同時に実行すると、ルーティングの競合が発生する可能性もあります。より有効なセキュリティ対策は次のとおりです。

  • tailnetへのアクセスに使用するIDアカウントを保護してください。
  • 認証キーとOAuth認証情報は秘密情報として扱ってください。
  • 古いデバイスや認識できないデバイスをtailnetから削除してください。
  • すべてのノードがすべてのサービスに無期限でアクセスできるようにするのではなく、最小権限のアクセスルールを適用してください。
  • CasaOS、Docker、Tailscale、ホストしているアプリケーションを常に最新の状態に保ってください。
  • Tailscaleもインストールされているからといって、CasaOSのダッシュボードを公開インターネットに公開しないでください。

Tailscaleは現在、特定のサービスにアクセスできるユーザーやデバイスを制限するために、Grantsとアクセス制御ポリシーを推奨しています。

後のZimaOSに関する返信で追加された内容

2024年の返信では、ZimaOSを実行している現行のZimaCubeパーソナルクラウドNASでも同じチュートリアルが機能するか尋ねていました。ユーザーはTailscale上でデバイスが接続済みとして表示されることを確認できましたが、ZimaOSのインターフェースは一部しか読み込まれず、「アプリの読み込みに失敗しました」というメッセージが繰り返し表示されました。元の投稿者は再起動を提案し、ZimaOSにも独自のリモートアクセス機能があると説明しました。その後、ユーザーはZimaOSをバージョン1.2.2に更新したところ問題が解決したと報告しました。

その返信は現在の互換性を保証するものではなく、過去の状況を示す証拠です。特定のバージョンのZimaOS UIでアプリの読み込みに問題が残っている状態でも、Tailscale接続を確立できることを示しています。2025年後半の別の返信では、その手順に沿った方法でZimaOS上でTailscaleを動作させられたと報告されています。

CasaOSではなく最新のZimaOSを使用している場合は、2023年のCasaOSカスタムインストール画面を最適な設定方法だと決めつけず、最新のZimaOSアプリおよびリモートアクセスのドキュメントに従ってください。両OSにはエコシステム上の共通の歴史がありますが、現在のアプリ管理とリモートアクセスのワークフローは同一ではありません。

CasaOS Tailscaleトラブルシューティングチェックリスト

  1. TailscaleコンテナがCasaOSで実行されていることを確認します。
  2. イメージが公式のTailscaleコンテナ、または意図的に信頼している別の提供元のものであることを確認します。
  3. 認証情報が有効で、有効期限切れや取り消しになっていないことを確認します。
  4. 永続化 /var/lib/tailscale これにより、コンテナを再作成してもノードが状態を保持できます。
  5. Tailscaleのデバイス一覧で、CasaOSサーバーが接続済みとして表示されることを確認します。
  6. リモートデバイスにTailscaleをインストールし、同じ許可済みtailnetにサインインします。
  7. CasaOSサーバーのTailscaleアドレスをテストする 100.x.x.x 通常のLANアドレスを試す前に、アドレスを確認してください。
  8. IPアドレスでは接続できるのにホスト名では接続できない場合は、DNSまたはMagicDNSの設定を確認してください。
  9. 他のLANデバイスにもアクセスする必要がある場合は、サブネットルーティングを別途設定してください。
  10. 意図したユーザーとデバイスだけがCasaOSのサービスにアクセスできるよう、tailnetのアクセスルールを確認してください。

CasaOS Tailscaleリモートアクセスに関するよくある質問

ルーターでCasaOSのポート転送を設定する必要がありますか?

ここで説明している通常のTailscaleワークフローには必要ありません。CasaOSサーバーとリモートクライアントの両方が同じプライベートtailnetに参加するため、CasaOSのダッシュボードをパブリックインターネットに直接公開するのではなく、Tailscaleアドレスを介してサーバーにアクセスします。

TS_AUTHKEYとは何ですか?

TS_AUTHKEY これは、コンテナをtailnetに認証するために使用するTailscale Docker環境変数です。現在のTailscale Dockerドキュメントでも引き続きサポートされています。この値は秘密情報として扱い、漏えいした場合はローテーションしてください。

/var/lib/tailscaleを永続化する必要があるのはなぜですか?

このディレクトリには、コンテナ用のTailscaleの状態が保存されます。これを永続化すると、Dockerがコンテナを再起動または再作成した場合でも、コンテナがノードIDと認証状態を保持できます。

100.xのTailscale IPには接続できますが、自宅の192.168.x.xアドレスには接続できないのはなぜですか?

CasaOSサーバー自体への接続と、ホームサブネット全体のルーティングは異なる構成です。通常のTailscaleノードへのアクセスでは、サーバーのTailscale IPを使用します。その他のLANアドレスにアクセスするには、サブネットルーティングの設定と承認が必要です。

Tailscaleは暗号化されていますか?

はい。Tailscaleは、tailnet内のデバイス間の暗号化通信にWireGuardを使用します。現在のTailscaleのドキュメントでは、直接接続と中継接続のいずれもエンドツーエンドで暗号化されると説明されています。

2023年のCasaOSのスクリーンショットは、現在も有効ですか?

歴史的なUIの参考資料として扱ってください。Tailscaleの実行、ノードの認証、リモートデバイスの接続という基本的なワークフローは現在も有効ですが、現在のDockerパラメーターやCasaOS、ZimaOSのインターフェースは異なる場合があります。