- 自宅サーバー公開の悩み:
「自宅サーバーでブログを公開したいけど、ルーターのポート開放(80/443)が怖い…」「固定IPじゃないからDDNSの設定が面倒…」「ApacheのSSL(Let’s Encrypt)設定で躓いた…」 - この記事で解決すること:
Cloudflare Tunnelを使えば、ポート開放「ゼロ」、SSL設定「ゼロ」で、安全かつ一瞬で自宅サーバーを世界中に公開できます! - 自宅サーバー側の環境:
AlmaLinux 9 / Apache (HTTPのままでOK)
※CloudFlareの登録済み前提で記載しています。
CloudFlareの基本はこちら⇒「【Cloudflare】基本概要と仕組み」
ステップ①:Cloudflareダッシュボードでの設定手順
ブラウザでCloudflareにログインし、以下の手順で設定を進めます。
1.左側メニューの [Zero Trust] をクリックします。

2.Zero Trustダッシュボードの左側メニューから [ネットワーク] > [コネクタ] を選択します。

3.[トンネルを作成] をクリックします。

4.トンネルの種類で [Cloudflared] を選択し、[次へ] をクリックします。

5.トンネル名(例: home-server-link)を入力し、[トンネルを保存] をクリックします。

ステップ②:AlmaLinuxへのインストールと起動
トンネルを保存すると環境選択画面が表示されます。[Red Hat] > [64-bit] を選択し、画面に表示されるコマンドをコピーしてAlmaLinuxのターミナルで実行します。

# cloudflaredのダウンロード、インストール、自動起動サービス化を一括実行
[root@almalinux ~]# curl -L --output cloudflared.rpm https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm && \
[root@almalinux ~]# sudo dnf localinstall -y cloudflared.rpm && \
[root@almalinux ~]# sudo cloudflared service install <画面に表示された固有のトークン文字列>
実行後、Cloudflareの画面側でコネクタのステータスが 「正常(Healthy)」 に変わったことを確認し、[次へ] をクリックします。

ステップ③:公開するドメイン(ルーティング)の設定
CloudflareのWeb画面でそのままドメインの紐付けを行います。
1.コネクタ(トンネル)が正常(Healthy)になったことを確認し、[次へ](またはトンネル編集画面)に進みます。
2.[公開されたアプリケーションルート]をクリック。

3.[公開されたアプリケーションルートを追加する] をクリックし。

4.公開アプリケーションルートの設定

- サブドメイン: (空欄のままでOKです。
https://softdev-learn.ccのようにルートドメインのまま公開する場合、ここには何も入力しません) - ドメイン: ドロップダウンから
softdev-learn.ccを選択します。 - パス: (空欄のままでOKです)
- タイプ:
HTTPを選択します。 - URL:
localhost:80(または127.0.0.1:80)を入力します。
入力内容を確認し、画面右下の [保存] をクリックします。
💡 これを保存した瞬間、Cloudflareの通常のDNS設定(AレコードやCNAME)には自動的にTunnel用のレコードが生成されるため、手動でDNSレコードを追加する必要はありません。
ステップ④:WordPress特有の干渉対策(必須設定)
Cloudflare Tunnelを経由してWordPressを正常に動作させるため、サーバー側の設定を確認・調整します。
1. 無限リダイレクトを防止するスマートな設定
通常、Cloudflare Tunnel(HTTPS)から自宅内のApache(HTTP)へ通信が渡ると、WordPressは「安全ではない接続」と誤認して無限リダイレクトを起こしてしまいます。
これを防ぐための最もスマートな解決策が、WordPressのURLをHTTPSで固定化し、強制的に制御することです。
/var/www/html/wp-config.php の先頭(<?php の直後)に、以下の記述が正しく設定されているか確認してください。
[root@almalinux ~]# vi /var/www/html/wp-config.php
<?php
/** サイトのURLをHTTPSで完全に固定化(リダイレクトループ防止) */
define('WP_HOME', 'https://softdev-learn.cc');
define('WP_SITEURL', 'https://softdev-learn.cc');
/** ドメインの変更や不整合時の一時的な救済設定(有効化) */
define('RELOCATE', true);
// ※注意:上記URL固定化が完了しているため、以下の「プロキシ指示コード」はコメントアウトのままでOKです。
// if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
// $_SERVER['HTTPS'] = 'on';
// }
2. 訪問者のリアルタイムIPアドレスの復元について
Cloudflare Tunnelを経由すると、WordPressのコメント欄やアクセスログに記録されるIPアドレスがすべて「CloudflareのサーバーIP」になってしまいます。
これをもともとの訪問者のIPアドレス(リアルタイムIP)に復元するためのApache(mod_remoteip)の設定手順については、以下の別記事で詳しく解説していますので、合わせて設定を行ってください。
🔗 関連記事リンク:【Cloudflare】 Tunnel経由のApacheで、アクセスログを生IPアドレスに書き換える方法(mod_remoteip)
ステップ⑤:自宅サーバー運用のアドバイス(まとめ)
- ファイアウォール(firewalld)のセキュリティ: 外部からの直接アクセスはCloudflareがすべて遮断するため、AlmaLinuxの
firewalldで外部向けに80番や443番ポートを開放する必要はありません。完全に閉じた状態で運用可能です。 - 宅内LANからのアクセス: 公開したURL(
https://blog.yourdomain.com)には、宅内LANからでもルーターの制限(ヘアピンNAT等)を受けずにそのままアクセス可能です



コメント