IoT

Raspberry Pi + Cloudflare Tunnelで自宅Webサーバーを安全・格安構築する完全ガイド

「自宅にWebサーバーを立てたいけど、セキュリティが心配…」「固定IPなんて持ってないし…」——そんな悩みをRaspberry Pi+Cloudflare Tunnelの組み合わせが一気に解決してくれます。固定IPもポート開放も不要で、無料から始められる自宅Webサーバー構築の全手順をコード付きで解説します。

先日 Zenn に投稿された記事をきっかけに、この構成が技術者コミュニティで大きな注目を集めています。本記事ではその内容をさらに掘り下げ、セットアップ手順・自動起動設定・注意点まで網羅的にまとめました。

Cloudflare Tunnelとは?自宅サーバー公開の何が変わるのか

通常、自宅サーバーをインターネットに公開しようとすると、次のような壁が次々と立ちはだかります。

  • ISPから固定IPアドレスを契約する必要がある(月額コスト発生)
  • ルーターのポート開放が必要でセキュリティリスクが高まる
  • DDoS攻撃やBot攻撃への対策を自前で用意しなければならない
  • 動的IPの場合はDDNSの管理が煩雑になる

Cloudflare Tunnel(旧称: Argo Tunnel)を使うと、これらの問題をまるごと回避できます。仕組みはシンプルで、ラズパイ側からCloudflareのエッジサーバーへアウトバウンドのトンネルを張るだけ。外部からのHTTPSアクセスはすべてCloudflare経由で中継されるため、自宅のルーターに穴を開ける必要がありません。

Cloudflare Tunnelの主なメリット一覧

  • 固定IPアドレス不要:動的IPでもドメインで安定アクセス可能
  • ルーターのポート開放不要:自宅ネットワークのセキュリティリスクを最小化
  • 無料プランで利用可能:個人利用なら追加コストほぼゼロ
  • DDoS保護・WAFが標準搭載:エンタープライズ級の防御を無料で享受
  • 自動HTTPS化:SSL証明書の管理が不要
  • Cloudflare Access連携:認証ゲートウェイとの組み合わせも可能

必要なものと事前準備

構築に必要なものは以下の3点だけです。すでにラズパイを所有している方なら、追加の金銭的コストはほぼゼロで始められます。

  • Raspberry Pi(Pi 3B以降推奨。既存のものを流用可)
  • Cloudflareアカウント(無料プランでOK)
  • Cloudflareで管理しているドメイン(お名前.com・Google Domainsなどで取得したドメインのネームサーバーをCloudflareに向けるだけ)

ドメインをまだ持っていない方は、年間数百円〜で取得できます。Cloudflareのネームサーバーへの切り替えはドメイン管理画面から数分で完了します。

Raspberry Pi + Cloudflare Tunnelのセットアップ手順【完全版】

① cloudflaredのインストール(ARM64対応)

まずはラズパイに cloudflared(Cloudflareのトンネルクライアント)をインストールします。Raspberry Pi 4以降のArm64環境では以下のコマンドを実行してください。

# ARM64用バイナリをGitHubからダウンロード
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64

# 実行権限を付与して/usr/local/binに移動
chmod +x cloudflared-linux-arm64
sudo mv cloudflared-linux-arm64 /usr/local/bin/cloudflared

# インストール確認(バージョンが表示されればOK)
cloudflared --version

⚠️ Raspberry Pi 3(32bit OS)を使っている場合cloudflared-linux-arm(末尾に64なし)のバイナリを使用してください。

② CloudflareにログインしてトンネルIDを取得する

次に、Cloudflareアカウントへの認証とトンネルの作成を行います。

# Cloudflareにログイン(実行するとブラウザが自動で開きます)
cloudflared tunnel login

# トンネルを作成(名前は任意。ここでは「my-home-server」)
cloudflared tunnel create my-home-server

トンネル作成後、~/.cloudflared/ ディレクトリに <トンネルID>.json という認証情報ファイルが生成されます。このIDを次のステップで使用します。

③ 設定ファイル(config.yml)の作成

どのホスト名をどのローカルサービスに向けるか、ルーティングルールを設定ファイルで定義します。

# .cloudflaredディレクトリを作成(存在しない場合)
mkdir -p ~/.cloudflared

# 設定ファイルを作成(トンネルIDとドメインは各自のものに置き換えてください)
cat <<EOF > ~/.cloudflared/config.yml
tunnel: <トンネルID>
credentials-file: /home/pi/.cloudflared/<トンネルID>.json

ingress:
  - hostname: home.yourdomain.com
    service: http://localhost:8080
  - service: http_status:404
EOF

ingressセクションには複数のルールを追加できます。たとえばサブドメインごとに異なるサービス(ポート番号)を振り分けることも可能です。最後の http_status:404 はどのルールにも一致しないリクエストへのフォールバックとして必須です。

④ DNSレコードの自動登録とトンネルの起動

# CloudflareのDNSにCNAMEレコードを自動登録
cloudflared tunnel route dns my-home-server home.yourdomain.com

# トンネルを起動して動作確認
cloudflared tunnel run my-home-server

これだけで https://home.yourdomain.com にアクセスすると、ラズパイ上の localhost:8080 に繋がります。あとはそのポートでFlask・FastAPI・Nginx・Node.jsなど好きなWebアプリを動かすだけです!

systemdに登録して自動起動させる(本番運用に必須)

毎回手動でトンネルを起動するのは非現実的です。systemdサービスとして登録しておけば、ラズパイの再起動後も自動でトンネルが復帰します。本番運用では必ず設定しておきましょう。

# systemdサービスとしてcloudflaredを登録
sudo cloudflared service install

# 自動起動を有効化
sudo systemctl enable cloudflared

# 今すぐ起動
sudo systemctl start cloudflared

# 動作ステータスの確認
sudo systemctl status cloudflared

systemctl status cloudflaredactive (running) と表示されれば設定完了です。

よくある質問と注意点

無料プランでどこまで使える?

Cloudflare Tunnelの基本機能(トンネル接続・DDoS保護・自動HTTPS)は無料プランで全て利用可能です。帯域幅の制限もありません(ただし商用利用規模の大規模トラフィックはCloudflareのポリシー確認を推奨)。WAFの高度なルール設定などはProプラン以上が必要です。

TailscaleとCloudflare Tunnelは併用できる?

はい、併用可能です。今回の元記事の筆者も、Tailscale用に使っていたラズパイをそのままCloudflare Tunnel用に流用しています。Tailscaleはプライベートなデバイス間通信、Cloudflare Tunnelは外部向けの公開サービスという役割分担で共存できます。

セキュリティ上の注意点は?

Cloudflare TunnelはCloud側でDDoS保護・WAFが機能しますが、公開するWebアプリ自体のセキュリティは別途確保する必要があります。特に以下の点に注意してください。

  • 管理画面などはCloudflare Accessで認証ゲートウェイを追加する
  • 公開するアプリの依存パッケージを定期的にアップデートする
  • 不要なエンドポイントはingressルールに含めない

まとめ:Raspberry Pi + Cloudflare Tunnelは自宅サーバーの最適解

Raspberry Pi+Cloudflare Tunnelの構成は、「安全・安価・手軽」の三拍子が揃った自宅Webサーバー構築のベストプラクティスです。改めて要点を整理します。

  • 固定IPもポート開放も不要で、セキュリティリスクを最小化できる
  • Cloudflare無料プランでDDoS保護・自動HTTPSが手に入る
  • systemd登録で無人運用が可能
  • 既存のラズパイを流用すれば追加コストほぼゼロ

ポートフォリオサイトの公開・家庭内IoTダッシュボード・個人用メモアプリのホスティングなど、用途は多岐にわたります。ぜひ週末のプロジェクトとして試してみてください。

👉 関連記事:Tailscale + Raspberry Piでゼロトラストな自宅ネットワークを構築する方法も合わせてチェックしてみてください。VPNとトンネルの使い分けがさらによく分かります。

👉 関連記事:Raspberry PiにNginxをインストールしてWebサーバーを立てる基本手順も参考にどうぞ。Cloudflare Tunnelと組み合わせて本格的な構成が作れます。


参考:本記事は Zenn に投稿されたオリジナル記事をもとに、追加情報を加えて解説しています。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です