ngrokの代わりにCloudflare Tunnelを使う
Cloudflare Tunnelを使って、RaspberryPi4上で動くローカルサーバに公開URLでアクセスできるようにした。
基本的な設定方法は公式ドキュメントに記載されている。
- cloudflaredのインストール
64bit版のRaspberry Pi OSが正式リリースされていたが、使用しているRaspberryPi4は32bit版のOSだったので、Pi-holeドキュメントを参考にcloudflaredをインストールした。
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm
sudo cp ./cloudflared-linux-arm /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v
cloudflared version 2022.6.3 (built 2022-06-20-1352 UTC)
- Cloudflare認証
cloudflared tunnel login
- pi4という名前でTunnelを作成
cloudflared tunnel create pi4
=> <Tunnel-UUID>が生成される
- Tunnel設定ファイルの作成
# ~/.cloudflared/config.yml
tunnel: <Tunnel-UUID>
credentials-file: /home/pi/.cloudflared/<Tunnel-UUID>.json
ingress:
- hostname: test-webhook.example.com
service: http://localhost:3000
- hostname: test-bot.example.com
service: http://localhost:3001
- service: http_status:404
- DNS設定
cloudflared tunnel route dns pi4 test-webhook.example.com
cloudflared tunnel route dns pi4 test-bot.example.com
コマンド実行後にCloudflare管理画面にCNAMEが追加される。
- Tunnel起動
cloudflared tunnel --config ~/.cloudflared/config.yml run pi4
ローカルサーバを起動した状態で test-webhook.example.com
, test-bot.example.com
にアクセスできればOK。
Ctrl + cで一度Tunnelを停止し、自動起動設定を行う。
- 自動起動設定
sudo cloudflared --config ~/.cloudflared/config.yml service install
これで再起動時も自動でTunnelが起動するようになった。
Tunnelが不要になった場合
- Tunnel削除
cloudflared tunnel --config ~/.cloudflared/config.yml delete pi4
# Tunnel一覧から消えていることを確認
cloudflared tunnel list
- Cloudflare Dashbordを開き、Tunnelに使用していたDNSレコードを手動削除
DNSレコードの作成はCLIでできるが削除は管理画面からしかできなかった。