「自宅に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 cloudflared で active (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 に投稿されたオリジナル記事をもとに、追加情報を加えて解説しています。
