【2026年6月17日時点の情報です】
Cloudflare Tunnel で公開している自宅サーバーに、自作のアプリ用のサブドメインを追加した手順です。この記事では、次の例で説明します。
| 項目 | 例 |
|---|---|
| メインのドメイン(ブログ) | softdev-learn.cc |
| 追加するサブドメイン | app.softdev-learn.cc |
Cloudflare Tunnel の「公開アプリケーションルート」に登録すると、DNS レコードは Cloudflare が自動で作ってくれるので、自分で追加する必要はありません。トンネルそのものの作り方は「Cloudflare Tunnelで自宅サーバーを公開する方法」で紹介しています。
Cloudflare の画面の名前や並びは、ときどき変わります。この記事の画面は2026年6月時点のものです。
この記事の対象:
Cloudflare Tunnel(cloudflared)でサーバーを公開している人向けです。
Tunnel を使わず、ふつうに DNS でサブドメインを足したいだけなら、Cloudflare の「DNS」→「レコード」→「レコードを追加」で、名前にサブドメイン(例:app)を入れ、タイプ A(サーバーの IP アドレス)か CNAME(つなぎ先のホスト名)を作れば追加できます。
急いでいる人向け:手順の要点
- 「Zero Trust」→「ネットワーク」→「コネクタ」で、使っているトンネルを開く
- 「公開アプリケーションルート」のタブで「+ 公開アプリケーションルートを追加」
- サブドメインとドメインを選び、タイプ HTTP・URL 127.0.0.1:80 で保存(DNS レコードは自動でできる)
- Apache に、ServerName をサブドメインにした VirtualHost を足して再起動する
ステップ1:トンネルの画面を開く
Cloudflare のダッシュボードにログインし、「Zero Trust」→「ネットワーク」→「コネクタ」を開きます。


動いているトンネル(例:my-home-server)をクリックします。

ステップ2:「公開アプリケーションルート」のタブを開く
上のタブから「公開アプリケーションルート」(英語の画面では Published application routes)を開きます。

隣にある「ホスト名ルート」は、外に公開しない内部の通信のためのものです。Web サイトを公開するときは「公開アプリケーションルート」のほうを使います。
ステップ3:サブドメインを登録する
右側の「+ 公開アプリケーションルートを追加」をクリックします。

次のように入れて、右下の「保存」をクリックします。
| 項目 | 入れるもの |
|---|---|
| サブドメイン | app |
| ドメイン | softdev-learn.cc(プルダウンから選ぶ) |
| パス | 空欄のまま |
| タイプ | HTTP |
| URL | 127.0.0.1:80 |

タイプを HTTP にしているのは、Cloudflare からサーバーまではトンネルの中を通るので、サーバーの中では HTTP で受けているからです。読者のブラウザと Cloudflare のあいだは HTTPS になります。
ステップ4:DNS レコードができたか確かめる
「ドメイン」→「概要」でドメインをクリックします。

「DNS レコード」を開きます。

一覧に、タイプ「トンネル」、名前 app.softdev-learn.cc、「プロキシ済み」のレコードが自動で追加されていれば完了です。

ステップ5:Apache でサブドメインを見分ける
Cloudflare の設定だけでは、まだ終わりません。ステップ3でトンネルの行き先をブログと同じ 127.0.0.1:80 にしたので、Apache が「どのドメインへのアクセスか」を見分けて、それぞれの内容を返す必要があります。この設定がないと、app.softdev-learn.cc を開いてもブログが表示されたり、WordPress がメインのドメインへ転送したりします。
サブドメイン用の設定ファイルを作り、ServerName にサブドメインを、DocumentRoot にアプリのファイルを置くフォルダーを書きます。
# /etc/httpd/conf.d/app.conf
<VirtualHost *:80>
ServerName app.softdev-learn.cc
DocumentRoot /var/www/app
<Directory /var/www/app>
Require all granted
</Directory>
</VirtualHost>ブログの設定にも ServerName softdev-learn.cc が書かれているか確かめます。Apache は、どの ServerName にも当てはまらないアクセスを、最初に読み込んだ設定で受けます。
設定に間違いがないか確かめてから、Apache に読み込み直させます。
sudo apachectl configtest
sudo systemctl reload httpdSyntax OK と出れば、設定の書き方に問題はありません。
開いて確かめる
ブラウザで https://app.softdev-learn.cc/ を開くか、curl でヘッダーを確かめます。
curl -sI https://app.softdev-learn.cc/HTTP/2 200 が返ってきて、ブログではなくアプリの内容が出れば成功です。curl の使い方は「curlコマンドの基本と使い方」で紹介しています。
知っておきたいこと
HTTPS は自動で付く
Cloudflare の無料の証明書は、app.softdev-learn.cc のような1段目のサブドメインにも自動で使われるので、証明書を自分で用意する必要はありません。ただし、a.b.softdev-learn.cc のような2段目のサブドメインは、無料の証明書の対象外です。
WAF のルールはサブドメインにもかかる
Cloudflare の WAF のルールは、ドメイン全体にかかります。海外からのアクセスを止めるルールなどは、新しいサブドメインにもそのまま効きます。サブドメインだけ扱いを変えたいときは、ルールの式にホスト名の条件を足します(「WAFのカスタムルールで自宅サーバーのWordPressを守る」)。
まとめ
- Cloudflare Tunnel の「公開アプリケーションルート」にサブドメインを登録すると、DNS レコードは自動でできる
- 「ホスト名ルート」は内部の通信用。公開するときは「公開アプリケーションルート」
- 行き先をブログと同じ
127.0.0.1:80にするなら、Apache にServerNameで見分ける設定を足す - HTTPS は1段目のサブドメインまで自動で付く。WAF のルールもそのままかかる
Cloudflare が何をしているのかは「Cloudflareとは?仕組みと無料プランでできること」で紹介しています。



コメント