🌐

Cloudflare Tunnelを使ってWeb公開をする

2024/06/30に公開

はじめに

Cloudflare Tunnel を使うことで、オリジナルのインバウンドポートを開ける必要がなく、セキュリティを高めることができ、webを公開するドメインをCloudflareで管理している場合は、SSL化も可能なので使用してみました。
ユーザーが接続してくる流れ

前提条件

今回は、Almalinux 手順です。
Ubuntuなどでも作成は可能です。その手順は、参考のリンクをご参照ください。
OS : Almalinux9

Cloudflared インストール

  1. Cloudflare リポジトリの追加

    curl -fsSL https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
    
  2. リポジトリの更新と、cloudflared のインストール

    sudo yum update && sudo yum install cloudflared
    
  3. Cloudflareへログイン

    cloudflared tunnel login
    
  4. CloudflareTunelの作成
    Cloudflare Tunnelを作成します。
    名前は自由に入れてください。
    TunnelIDはこの後使うのでコピーしておいてください。

    cloudflared tunnel create <Tunnel name>
    
  5. Cloudflare Tunnelが作成されたのを確認
    <Tunnel ID>.jsonが作成されて入ればOK

    ls ~/.cloudflared/
    cert.pem  <Tunnel ID>.json
    
  6. Cloudflare Tunnelの設定
    今回の環境は Docker で Nginx を 8080 で起動しているため下記の設定
    また、この段階でDNSに登録されていなくて大丈夫です。

    vi ~/.cloudflared/config.yml
    
    tunnel: <Tunnel ID> # tunnel create で生成されたトンネルID
    credentials-file: <TunnelIDファイルPath>.json # 絶対パスで設定します
    
    ingress:
      - hostname: <ホスト名>
        service: http://localhost:8080
      - service: http_status:404
    
  7. DNSの設定の追加

    cloudflared tunnel route dns <TunnelName> <ホスト名>
    
  8. Cloudflaredをサービス化

    cloudflared --config ~/.cloudflared/config.yml service install
    
  9. Tunnelへの設定追加をCloudflare のコンソールからできるようにする
    この設定をすることで、サーバサイドでの操作を行わずに、イングレスルールの追加や変更がCloudflare のポータルからできるようになる。また、ポータルからの操作によりダウンタイムがない変更ができるようになります。

    1. Cloudflareへログインし、Zero Trustのダッシュボードを開く
    2. Network -> Tunnels を選択し、先ほど作成したトンネルを選択。
    3. 右のタブの Editを選択
    4. Migrateを選択し、設定を行う(基本的に何もしなくてok)
  10. SSL/TLSを設定
    CLoudflareのポータルの対象のドメインの設定に入る
    SSL/TLS -> Overview を選択
    設定を下記の Flexible または、Fullを選択

最後に

ここまでくれば作業は完了です。
DNSの設定は時間がかかるのですぐには接続できないかもしれません。
初めて書いたので、間違っている場所があったら教えてください・・・

参考

Cloudflare(Set up a tunnel locally)

Discussion