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でできるが削除は管理画面からしかできなかった。

参考


Related #raspberry pi