Cloudflare Tunnel で自宅サーバー公開
自宅サーバーを安全かつ簡単に公開する方法として、Cloudflare Tunnel を使ってみた。
(1)独自ドメインを取得しておく。僕は Namecheap で取得した。
(2)Cloudflare のアカウントを作成。
Cloudflare - The Web Performance & Security Company | Cloudflare
https://www.cloudflare.com/
(3)Cloudflare の「Dashboard>Websites>Add site」をクリック。1で作成したドメインを追加する。
Free Plan を選択。Nameserver 情報などが表示される。
(4)ドメインレジストラで3の Nameserver を設定する。
Nameserver が有効になったらメールが届く。24 時間程度かかる場合があると書かれているが、10 分ぐらいで届いた。
(5)Cloudflare の「Dashboard>Zero Trust>Access>Tunnels>Complete Setup」をクリック。
画面に従って設定をする。Free Plan を選ぶ。
Free Plan では以下が含まれる。
・50 user limit
・Zero Trust controls
・DNS filtering for up to 50 locations
・Layer 7 (HTTP) filtering rules
・Roaming user support via WARP
・24 hours of log retention
Free Plan は無料だが、決済情報を登録する必要がある。Paypal を登録した。0円で決済を完了する。
(6)再び「Dashboard>Zero Trust>Access>Tunnels」をクリック。「Create a tunnel」をクリック。
トンネル名を最初に設定するが、適当でいい。
「Save」をクリックするとインストール手順が表示される。
(7)自宅の端末に cloudflared をインストールする必要がある。今回は Raspberry Pi(bullseye 32-bit)を使う。
「Debian>arm32-bit」の手順に従いインストール。
「Next」をクリック。
(8)自宅のサービスとの紐付け設定をする。例えば Plex メディアサーバーと紐付けてみよう。
「Public Hostname」で最低限以下のように設定する。
・Public hostname:plex.{ドメイン名}(plex の部分は適当に命名)
・Service:http://192.168.1.5:32400
「Save {トンネル名} tunnel」をクリック。
これで plex.{ドメイン名} で自宅の Plex にアクセスできるようんある。4G から試してもちゃんとアクセスできた。そして HTTPS 接続になっている。ポートの開放もしなくていい。
常時 HTTPS 接続にするには以下に従う。
Always Use HTTPS · Cloudflare SSL/TLS docs
https://developers.cloudflare.com/ssl/edge-certificates/additional-options/always-use-https/
お気付きの通り、cloudflared をインストールしていない別のサーバーも公開できる。今回も Raspberry Pi ではない、Mac にインストールした Plex を公開している。
他にも SSH 接続などができたりするので可能性が広がる。
cloudflared は Raspberry Pi にインストールしたが、Mac に Docker でインストールすることもできた。Raspberry Pi にインストールするよりも手軽だ。
さらに Cloudflare は複数のドメインを登録できるので、この方法で複数ドメインの運用も可能だ。
参考:
Set Up a Cloudflare Tunnel to Expose Local Servers to the Internet
https://www.makeuseof.com/use-cloudflare-tunnel-expose-local-servers-internet/
CloudFlare Tunnelで自宅サーバーを公開する(FreeプランOK)
https://zenn.dev/yakumo/articles/b1f0e1115cb5b6