
Cloudflare Tunnelを使って簡単にローカルサイトを独自ドメイン・https化して公開する
概要
Cloudflare Tunnelを使うと、ローカルで動いているサイトを割と簡単に独自ドメインでhttps化して外部に公開することができます。
さらにCloudflareの高いセキュリティと信頼性を享受でき、DDoS攻撃対策なども自動でついてきます。
しかも完全無料です。
同様なサービスとして ngrok, localtunnel, Expose がありますが、永続的に使う目的ならCloudflare一が最適です。
逆にテスト的に一時公開するのなら ngrok がお手軽簡単でオススメです。
前提条件
Cloudflareのアカウントを登録済み(無料)
独自ドメインも所有していて、それをCloudflareに登録済み(無料)
2つの方法
トンネルを構築するにはCloudflareのWebUIから行う方法と、ローカルマシンのコマンドラインから行う方法があるのですが、後者の方が柔軟で細かい設定が可能です。(併有も可能)
今回はコマンドラインから行う方法を紹介します。
手順
コマンドラインツールのインストール
Cloudflareリポジトリを追加します。
$ sudo mkdir -p --mode=0755 /usr/share/keyrings
$ curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
$ echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
aptを使ってインストールします。
$ sudo apt update
$ sudo apt install cloudflared
認証
以下のコマンドでCloudflareにログインします。
ブラウザが起動するのでID/PASSを入力しログインしトンネルを許可すると、認証用ファイル(~/.cloudflared/cert.pem) が作成されます。
ブラウザが起動しない場合は表示されたURLをコピペして手動で開きます。
$ cloudflared tunnel login
トンネルの作成
以下のコマンドでトンネルを作成します。
トンネルIDが表示されますので、控えておきます。
$ cloudflared tunnel create <任意のトンネル名>
以下のコマンドでトンネルが正常に作成されたかを確認できます。
$ cloudflared tunnel list
DNS レコードの設定
以下のコマンドでDNSレコードを追加し、サブドメインがトンネル経由でルーティングされるようになります。
$ cloudflared tunnel route dns <トンネル名> <サブドメイン.mydomain.com>
設定ファイル (config.yml) の作成
下記の内容で ~/.cloudflared/config.yml を作成します。
tunnel: <トンネルID>
credentials-file: ~/.cloudflared/<トンネルID>.json
ingress:
- hostname: サブドメイン.mydomain.com
service: http://localhost:8080
- service: http_status:404
上記の例では https://サブドメイン.mydomain.com へのアクセスがローカルの http://localhost.8080 に転送されます。
この転送先アドレスはこのマシンからアクセス可能であれば、localhostではなくてもOKです。
トンネルの起動
$ cloudflared tunnel run <トンネル名>
確認
以上で設定は完了です。
他のPCから(できればローカル以外のスマホなど)https://サブドメイン.mydomain.com にアクセスして表示されればOKです。
永続化
設定ファイルなどのコピー
~/.cloudflared/ ディレクトリ以下にある3つのファイルを /etc/cloudflared/ へコピーします。
.cloudflared/
├── 2dd2ed0a-xxxx-xxxx-xxxx-xxxxxxxxxxxxx.json
├── cert.pem
└── config.yml
$ sudo mkdir -p /etc/cloudflared
$ sudo cp ~/.cloudflared/* /etc/cloudflared/
サービスのインストール
以下のコマンドでサービスをインストールします。
$ sudo cloudflared service install
確認
以下のコマンド active (running) と表示されていればOKです。
$ systemctl status cloudflared
● cloudflared.service - cloudflared
Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-02-22 21:09:56 JST; 40s ago
Main PID: 418424 (cloudflared)
Tasks: 9 (limit: 19124)
Memory: 21.6M
CPU: 242ms
CGroup: /system.slice/cloudflared.service
└─418424 /usr/bin/cloudflared --no-autoupdate --config /etc/cloudflared/config.>
以上で永続化は完了です。
いいなと思ったら応援しよう!
