[PR] 本記事にはプロモーションが含まれています。

【Cloudflare】Cloudflare Tunnelで自宅サーバー(AlmaLinux)を公開する方法|ポート開放なしでWordPressを動かすまで

Cloudflare
➔ 自宅サーバー構築メモの目次はこちら

【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」を押す

Cloudflare Tunnelで自宅サーバー:Cloudflareでトンネルを作る

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

Cloudflare Tunnelで自宅サーバー:Cloudflareでトンネルを作る(2)

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

Cloudflare Tunnelで自宅サーバー:Cloudflareでトンネルを作る(3)

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

Cloudflare Tunnelで自宅サーバー:Cloudflareでトンネルを作る(4)

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

Cloudflare Tunnelで自宅サーバー:Cloudflareでトンネルを作る(5)

2. サーバーにcloudflaredをインストールする

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

Cloudflare Tunnelで自宅サーバー:サーバーにcloudflaredをインストールする
Bash
[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)」に変わったら、「次へ」を押します。

Cloudflare Tunnelで自宅サーバー:サーバーにcloudflaredをインストールする(2)

3. 公開するドメインを設定する

どのドメインへのアクセスを、サーバーのどこに届けるかを設定します。

1.トンネルの編集画面で、「公開されたアプリケーションルート」を押す

Cloudflare Tunnelで自宅サーバー:公開するドメインを設定する

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

Cloudflare Tunnelで自宅サーバー:公開するドメインを設定する(2)

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

Cloudflare Tunnelで自宅サーバー:公開するドメインを設定する(3)
項目入力する内容
サブドメイン空欄(softdev-learn.cc のように、ドメインそのもので公開する場合)
ドメイン一覧から公開するドメインを選ぶ
パス空欄
タイプHTTP
URLlocalhost: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で固定する設定
Bash
[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の固定を入れておくと、リダイレクトの問題を防げます。

コメント