Raspberry Piトンネル設定
常時稼働のホームサーバー向けRaspberry PiでのCloudflare Tunnel設定
Raspberry Piや小型PCでcloudflaredを常時オンラインにし、実際のホスト名を維持する際に役立つガイドです。セットアップ、systemd、セキュリティ確認、GhostlyShareやghs CLIの使い分けも解説。
目的は安定したアウトバウンド接続の確保であり、魔法のような匿名性ではありません。訪問者にルーターアクセスは不要ですが、Cloudflareやアカウント、利用環境は重要です。
トンネルをノートPCのスリープやデスクトップのログオフ、日常作業中も維持したい場合にRaspberry Piが有効です。GhostlyShareは手動サービスファイルよりアプリやCLI操作を好む長時間共有にも適しています。
目次
簡潔に:トンネルを常時接続するならRaspberry Piを使う
ウェブサイトやダッシュボード、Webhookエンドポイント、ラボサービスを日常のノートPCに依存せず常時アクセス可能にするなら、Raspberry Piは優れたCloudflare Tunnel接続機器です。長時間稼働の選択肢は他にもあり、GhostlyShareはより簡単なトンネル運用も可能です。
| 必要なもの | 利用する | 理由 |
|---|---|---|
| 家庭用サービスの常時稼働ホスト名 | Raspberry PiでのCloudflare Tunnel | Piは常時オンラインを維持し、再起動も安定。cloudflaredをLinuxサービスとして実行可能です。 |
| プレビュー、Webhookコールバック、管理共有 | GhostlyShare | GhostlyShareはアプリやCLIでトンネル管理を行い、cloudflared設定の手動管理より簡単です。 |
| より強力な分離が必要な本番アプリ | VPSやマネージドホスティング | 公開サーバーは監視やバックアップ、家庭内ネットワークからの分離が容易です。 |
シンプルな構成:訪問者、Cloudflare、Pi、ローカルサービス
Cloudflare Tunnelはオリジンサイドをアウトバウンドに保ちます。Raspberry PiがCloudflareへ接続を開き、Cloudflareは公開ホスト名をlocalhost:3000やLANアドレスなどのローカルサービスに割り当てます。
訪問者はご自宅のルーターのポートではなく、公開ホスト名とCloudflareのエッジにアクセスします。
Cloudflareが公開エッジ、DNSゾーン、トンネルのマッピング、ホスト名のリクエストパスを管理します。
cloudflaredはPi上で動作し、Cloudflareへのアウトバウンド接続を維持します。
実際のアプリはlocalhostや別ポート、Piがアクセス可能なLAN内のホストに置けます。
これはすべての相手に対するプライバシー壁ではありません。主に訪問者や不特定のスキャンが自宅ルーターや起点を直接知るのを防ぎます。
cloudflaredをインストールする前にRaspberry Piを準備する
多くのトンネル障害はCloudflareが原因ではなく、不安定な機器や変わるローカルサービスのアドレス、サービスユーザーが読めない設定ファイルに起因します。
Raspberry Pi OSかDebianから始め、更新を適用し、64ビット対応ならそちらを推奨します。
Piには信頼できるネットワーク経路を用意し、LANホストに届くなら有線EthernetやDHCP予約を推奨します。
CloudflareやDNS、systemdを使う前にアプリがローカルで動作するか確認してください。
管理画面を誤って公開しないように。プライベートツールはCloudflare Accessの背後かローカルに置きましょう。
ハード選び:基板だけでなくRaspberry Pi 5キットを選ぶ
トンネル接続には単体基板よりRaspberry Pi 5キットが安全です。基板、安定したUSB-C電源、冷却やケースファン、信頼できるストレージが必要です。Cloudflareの切断を疑う前に確認しましょう。
公式Raspberry Pi 27W USB-C電源か同等の5V/5A電源を推奨し、冷却は必須です。電源不足や熱はcloudflared設定が正しくてもトンネル不安定に見えます。
Cloudflare Tunnel Raspberry Piセットアップ手順
Piのアーキテクチャに合う最新パッケージコマンドはCloudflareダッシュボードや公式ドキュメントを参照してください。以下は安全な作業手順であり、URL変更の保証ではありません。
ステップ1:Piを更新しアーキテクチャを確認する
まず更新を適用し、アーキテクチャを確認して正しいcloudflaredパッケージコマンドをCloudflareからコピーします。
sudo apt update
sudo apt upgrade -y
dpkg --print-architectureステップ2:公式の最新コマンドでcloudflaredをインストールする
Cloudflareのダッシュボードやドキュメントで、環境に合ったLinux用コマンドを確認し、インストール後にバイナリを検証してください。
# Paste the current official Cloudflare install command for your Pi here.
cloudflared --versionステップ3:認証して名前付きトンネルを作成する
Cloudflareゾーンを認可し、名前付きトンネルを作成して、出力されたトンネルUUIDをコピーしてください。
cloudflared tunnel login
cloudflared tunnel create home-piステップ4:明示的なconfig.ymlを作成する
実行前にトンネルUUID、ホスト名、ローカルサービス、認証情報のパスを置き換えてください。フォールバックルールは最後に残す必要があります。
mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.ymltunnel: <tunnel-uuid>
credentials-file: /home/pi/.cloudflared/<tunnel-uuid>.json
ingress:
- hostname: app.example.com
service: http://localhost:3000
- service: http_status:404ステップ5:設定を検証し、DNSルートを作成してフォアグラウンドで実行する
ingressルールを検証し、DNSルートを作成したら、別ネットワークからのテスト中はトンネルをフォアグラウンドで実行してください。
cloudflared tunnel ingress validate
cloudflared tunnel route dns home-pi app.example.com
cloudflared tunnel run home-pi正しい設定パスでcloudflaredをLinuxサービスとして実行する
Linuxで重要なのは設定ファイルのパスです。sudoでサービスをインストールするとホームディレクトリがrootのものになり、piユーザーでテストした設定が見つからない場合があります。
サービス手順1:明示的な設定パスでサービスをインストールする
これにより、テストしたpiユーザーの設定とサービスアカウントのsudoホームディレクトリの不一致を防げます。
sudo cloudflared --config /home/pi/.cloudflared/config.yml service installサービス手順2:サービスを有効化し状態を確認する
systemdでcloudflaredを起動し、期待通りの設定が使われているか、正常に動作しているかを確認してください。
sudo systemctl enable --now cloudflared
systemctl status cloudflaredサービス手順3:ログを確認し再起動をテストする
ルートに依存する前に、ログで設定パス、認証情報、DNS、ローカルサービスのエラーを確認してください。
journalctl -u cloudflared -f
sudo systemctl restart cloudflared
systemctl status cloudflared常時稼働トンネルの運用チェックリスト
ホームトンネルが安定して使えるのは、再起動や更新、ログ、アクセスルールも安定している場合だけです。URLを広く共有する前にこれらを確認しましょう。
Piを再起動し、SSHセッションを開かずにホスト名が機能するか確認してください。
プライベートアプリはCloudflare Accessや強力なログイン、ローカル限定のネットワーク境界の内側に置いてください。
OSとcloudflaredを定期的に更新し、更新後にサービスが正常か確認してください。
トンネルIDやアカウントメール、ホスト名、プライベートサービス名が含まれるログやスクリーンショットは公開しないでください。
設定は意図的にバックアップし、トンネルの認証情報は秘密として保護してください。
この設定は訪問者からオリジンを隠しますが、Cloudflareアカウントやドメイン履歴、管理者の操作は隠しません。
トラブルシューティング:まず確認すべき主な障害
| 症状 | 考えられる原因 | 最初のチェック |
|---|---|---|
| アプリの代わりにCloudflareのエラーページが表示される | トンネルが停止している、サービスURLが間違っている、またはローカルアプリが待機していません。 | Pi上でsystemctl status cloudflared、journalctl、curlでローカルサービスを確認してください。 |
| インストール後にサービスが動作しないが、フォアグラウンドでは動作する | systemdが異なるホームディレクトリや設定パスを使用しています。 | --configオプションで/home/pi/.cloudflared/config.ymlを指定してサービスを再インストールしてください。 |
| ホスト名がトンネルに到達しない | DNSルート、ホスト名、またはCloudflareゾーンが指定したトンネルに接続されていません。 | Zero Trustで公開ホスト名を確認し、cloudflared tunnel info home-piを実行してください。 |
| 管理ページが公開されている | イングレスルールがアクセス制御のないプライベートツールを指しています。 | Cloudflare Accessの背後に移すか、そのサービスをローカル限定にしてください。 |
依存前に公式ドキュメントを必ず確認してください。
Piのセットアップ中はCloudflareの公式ドキュメントを開いておきましょう。製品名やコマンド、画面、プラン制限は変更されることがあります。
Raspberry PiでのCloudflare Tunnelに関するよくある質問
よくある質問
Raspberry PiはCloudflare Tunnelに適していますか?
小規模なホームサーバーやラボ用サービスの常時接続に最適です。低消費電力で安定し、日常的に使うノートPCよりも常時稼働させやすいです。
ルーターのポート開放は必要ですか?
いいえ。Cloudflare TunnelはcloudflaredからCloudflareへのアウトバウンド接続を使うため、訪問者がルーターへの直接の着信経路を必要としません。
代わりにGhostlyShare CLIを使うべきですか?
プレビューやWebhook、スクリプト共有、意図的に長時間オンラインにする共有にはGhostlyShareやghs CLIを使いましょう。サービスファイルやイングレス設定、ホストOSを完全に管理したい場合はRaspberry Piとcloudflaredの組み合わせが適しています。
これで自宅サーバーは匿名になりますか?
いいえ。訪問者からは起点を隠せますが、Cloudflareのアカウント情報やドメイン記録、支払い情報、ログ、コンテンツ、管理者の操作履歴などからプロジェクトとあなたが結びつく可能性があります。
