見出し画像

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.>

以上で永続化は完了です。



いいなと思ったら応援しよう!

R-Y-O
そのお心がありがたいです。