Cloudflare Tunnelを使ってWeb公開をする
はじめに
Cloudflare Tunnel を使うことで、オリジナルのインバウンドポートを開ける必要がなく、セキュリティを高めることができ、webを公開するドメインをCloudflareで管理している場合は、SSL化も可能なので使用してみました。
前提条件
今回は、Almalinux 手順です。
Ubuntuなどでも作成は可能です。その手順は、参考のリンクをご参照ください。
OS : Almalinux9
Cloudflared インストール
-
Cloudflare リポジトリの追加
curl -fsSL https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
-
リポジトリの更新と、cloudflared のインストール
sudo yum update && sudo yum install cloudflared
-
Cloudflareへログイン
cloudflared tunnel login
-
CloudflareTunelの作成
Cloudflare Tunnelを作成します。
名前は自由に入れてください。
TunnelIDはこの後使うのでコピーしておいてください。cloudflared tunnel create <Tunnel name>
-
Cloudflare Tunnelが作成されたのを確認
<Tunnel ID>.jsonが作成されて入ればOKls ~/.cloudflared/ cert.pem <Tunnel ID>.json
-
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
-
DNSの設定の追加
cloudflared tunnel route dns <TunnelName> <ホスト名>
-
Cloudflaredをサービス化
cloudflared --config ~/.cloudflared/config.yml service install
-
Tunnelへの設定追加をCloudflare のコンソールからできるようにする
この設定をすることで、サーバサイドでの操作を行わずに、イングレスルールの追加や変更がCloudflare のポータルからできるようになる。また、ポータルからの操作によりダウンタイムがない変更ができるようになります。- Cloudflareへログインし、Zero Trustのダッシュボードを開く
- Network -> Tunnels を選択し、先ほど作成したトンネルを選択。
- 右のタブの
Edit
を選択 -
Migrate
を選択し、設定を行う(基本的に何もしなくてok)
-
SSL/TLSを設定
CLoudflareのポータルの対象のドメインの設定に入る
SSL/TLS -> Overview を選択
設定を下記の Flexible または、Fullを選択
最後に
ここまでくれば作業は完了です。
DNSの設定は時間がかかるのですぐには接続できないかもしれません。
初めて書いたので、間違っている場所があったら教えてください・・・
Discussion