【2026年7月3日時点の情報です】
このブログは、自宅サーバーからCloudflare Tunnelを使って公開しています。自宅の回線(NURO光)はIPv6のMAP-E方式で、ルーターでポートを開けられないため、この方法を選びました。仕組みは自宅ネットワークの記事で紹介しています。
Cloudflare Tunnelを使うと、次のようなことができます。
- ルーターのポート(80番・443番)を開けなくても公開できる
- 固定IPアドレスやDDNSがいらない
- HTTPS(SSL)の証明書はCloudflare側で用意されるので、サーバーのApacheはHTTPのままでよい
この記事は、Cloudflareに登録して、公開するドメインをCloudflareで管理している前提で書いています。Cloudflareの基本は、【Cloudflare】基本概要と仕組みで紹介しています。
自宅サーバーの環境:AlmaLinux 9 / Apache(HTTP) / WordPress
1. Cloudflareでトンネルを作る
ブラウザでCloudflareにログインして、次の手順でトンネルを作ります。画面は2026年6月時点のものです。Cloudflareの管理画面はメニューの名前や場所がよく変わるので、似た名前のメニューを探してください。
1.左側のメニューで「Zero Trust」を押す

2.Zero Trustの画面で、左側のメニューから「ネットワーク」→「コネクタ」を選ぶ

3.「トンネルを作成」を押す

4.トンネルの種類で「Cloudflared」を選んで「次へ」を押す

5.トンネル名(例:home-server-link)を入力して「トンネルを保存」を押す

2. サーバーにcloudflaredをインストールする
トンネルを保存すると、環境を選ぶ画面が出ます。「Red Hat」→「64-bit」を選ぶと、インストール用のコマンドが表示されるので、サーバーで実行します。

[root@almalinux ~]# curl -L --output cloudflared.rpm https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm ※cloudflaredをダウンロード
[root@almalinux ~]# dnf localinstall -y cloudflared.rpm ※インストール
[root@almalinux ~]# cloudflared service install <画面に表示されたトークン> ※トンネルに接続して、自動で起動するサービスとして登録トークンは、サーバーをこのトンネルにつなぐための合い鍵です。他人に知られないようにしてください。
実行したあと、Cloudflareの画面でコネクタの状態が「正常(Healthy)」に変わったら、「次へ」を押します。

3. 公開するドメインを設定する
どのドメインへのアクセスを、サーバーのどこに届けるかを設定します。
1.トンネルの編集画面で、「公開されたアプリケーションルート」を押す

2.「公開されたアプリケーションルートを追加する」を押す

3.次のように入力して「保存」を押す

| 項目 | 入力する内容 |
|---|---|
| サブドメイン | 空欄(softdev-learn.cc のように、ドメインそのもので公開する場合) |
| ドメイン | 一覧から公開するドメインを選ぶ |
| パス | 空欄 |
| タイプ | HTTP |
| URL | localhost:80(または 127.0.0.1:80) |
保存すると、CloudflareのDNSに、トンネル用のレコードが自動で作られます。自分でDNSレコードを追加する必要はありません。ただし、同じ名前のAレコードなどがすでにあると保存できないので、その場合は先に削除しておきます。
4. WordPressで気をつけたいこと
4-1. リダイレクトが繰り返さないようにする
読者とCloudflareのあいだはHTTPSですが、Cloudflareと自宅のApacheのあいだはHTTPでつながっています。そのため、WordPressが「HTTPでアクセスされている」と勘違いしてHTTPSへ移動し続ける(無限リダイレクト)ことがあります。
私のサーバーでは、wp-config.php の先頭(<?php のすぐ下)に、次の2つを入れています。
- HTTPSのアクセスだとWordPressに教えるコード:
Cloudflareは、元のアクセスがHTTPSだったことを「X-Forwarded-Proto」という情報でサーバーに伝えてくれます。それを見て、WordPressにHTTPSのアクセスとして扱わせます。 - サイトのURLをHTTPSで固定する設定
[root@almalinux ~]# vi /var/www/html/wp-config.php
<?php
/** Cloudflareから届いた情報で、HTTPSのアクセスだとWordPressに教える */
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
/** サイトのURLをHTTPSで固定する */
define('WP_HOME', 'https://softdev-learn.cc');
define('WP_SITEURL', 'https://softdev-learn.cc');
/** ドメインを変えたときなどに、一時的に使う設定(動作を確かめたら消してよい) */
define('RELOCATE', true);この2つを入れてから、トップページも管理画面も、リダイレクトが繰り返す問題は起きていません。
4-2. 訪問者のIPアドレスを記録できるようにする
Cloudflare Tunnelを通すと、ApacheのアクセスログやWordPressのコメント欄に記録されるIPアドレスが、すべてCloudflare側のものになります。本来の訪問者のIPアドレスを記録する設定(Apacheのmod_remoteip)は、Tunnel経由のApacheで、アクセスログを訪問者のIPアドレスにする方法の記事で紹介しています。
5. 運用してみて分かったこと
- ルーターもサーバーも、ポートを開けなくてよい:
cloudflaredはサーバーからCloudflareに向けて接続するので、ルーターでもfirewalldでも、80番や443番を開ける必要はありません。インターネットからサーバーに直接届く入り口がないのは、ルーターでポートを開けていないからです。 - サーバーのセキュリティは引き続き必要:
Cloudflareを通ってきたアクセスは、そのままサーバーに届きます。WordPressやOSの更新、TripwireやrkHunterによる監視は続けています。 - 家の中からも同じURLで見られる:
公開したURLには、家のLANの中からも、ルーターの制限(ヘアピンNATなど)を気にせずにそのままアクセスできます。
まとめ
Cloudflare Tunnelを使うと、ポート開放ができない回線でも、自宅サーバーのWordPressをHTTPSで公開できます。作業は、Cloudflareでトンネルを作る、サーバーにcloudflaredを入れる、公開するドメインを設定する、の3つです。WordPressでは、HTTPSのアクセスだと教えるコードと、サイトのURLの固定を入れておくと、リダイレクトの問題を防げます。



コメント