コンテンツにスキップ

🌐 Cloudflare Named Tunnel セットアップ手順書

📁 docs/dev-environment/artifact/cloudflare-named-tunnel-setup.md

[!NOTE] Quick Tunnel(毎回URLがランダム)を Named Tunnel(固定サブドメイン)に移行するための手順書。 親Issue: #287

📋 前提条件

  • Cloudflare アカウント登録済み
  • ドメインを Cloudflare Registrar で取得済み(または既存ドメインを Cloudflare に移管済み)
  • macOS(Apple Silicon)環境

🗺️ サブドメイン設計表

サブドメイン 用途 ローカルポート
gallery.<YOUR_DOMAIN> イメージギャラリー 8001
n8n.<YOUR_DOMAIN> n8n ワークフロー自動化 5678
api.<YOUR_DOMAIN> Webhook サーバー・汎用API 8765

[!TIP] サービスを追加する場合は projects/iac/cloudflare/config.ymlingress セクションに追記し、Cloudflare Dashboard で CNAME レコードも追加する。


🚀 セットアップ手順

Step 1: cloudflared のインストール

brew install cloudflare/cloudflare/cloudflared
cloudflared --version

Step 2: Cloudflare にログイン

ブラウザが開くので、Cloudflare アカウントでログインして認証する。

cloudflared tunnel login
# → ~/.cloudflared/cert.pem が生成される

Step 3: Named Tunnel を作成

<TUNNEL_NAME> は任意の名前(例: mylab-tunnel)。

cloudflared tunnel create <TUNNEL_NAME>
# → Tunnel ID(UUID)が発行される
# → ~/.cloudflared/<TUNNEL_ID>.json が生成される(認証情報ファイル)

[!IMPORTANT] 発行された Tunnel ID をメモしておくこと。次のステップで使用する。

Step 4: 設定ファイルを配置

# テンプレートをコピーして編集
cp projects/iac/cloudflare/config.yml ~/.cloudflared/config.yml

~/.cloudflared/config.yml を開き、以下を実際の値に書き換える:

プレースホルダー 置き換え先
<TUNNEL_ID> Step 3 で発行された UUID
<YOUR_DOMAIN> 取得したドメイン(例: kzlab.dev

Step 5: DNS レコードを登録(サブドメインごとに実行)

cloudflared tunnel route dns <TUNNEL_NAME> gallery.<YOUR_DOMAIN>
cloudflared tunnel route dns <TUNNEL_NAME> n8n.<YOUR_DOMAIN>
cloudflared tunnel route dns <TUNNEL_NAME> api.<YOUR_DOMAIN>

[!NOTE] Cloudflare Dashboard → DNS タブで CNAME レコードが自動追加されていることを確認できる。

Step 6: 動作確認(フォアグラウンド実行)

cloudflared tunnel --config ~/.cloudflared/config.yml run <TUNNEL_NAME>

ブラウザで https://gallery.<YOUR_DOMAIN> にアクセスしてローカルサービスが表示されることを確認。

Step 7: 常駐化(launchd サービス登録)

確認が取れたらバックグラウンド常駐に切り替える。

sudo cloudflared service install
sudo launchctl start com.cloudflare.cloudflared

起動状態の確認:

sudo launchctl list | grep cloudflare

停止・再起動:

sudo launchctl stop com.cloudflare.cloudflared
sudo launchctl start com.cloudflare.cloudflared

🔧 よく使うコマンド

# トンネル一覧
cloudflared tunnel list

# ルーティング状況確認
cloudflared tunnel info <TUNNEL_NAME>

# ログ確認
tail -f /tmp/cloudflared.log

🐛 トラブルシューティング

症状 原因 対処
502 Bad Gateway ローカルサービスが起動していない 対象ポートのサービスを先に起動する
ERR_CERT_COMMON_NAME_INVALID DNS伝播が未完了 数分待ってから再アクセス
credentials file not found config.ymlcredentials-file パスが間違い ~/.cloudflared/<TUNNEL_ID>.json の存在を確認

📁 関連ファイル

ファイル 説明
projects/iac/cloudflare/config.yml Named Tunnel 設定テンプレート
~/.cloudflared/config.yml 実際の設定ファイル(Git管理外)
~/.cloudflared/<TUNNEL_ID>.json Tunnel 認証情報(Git管理外・絶対に公開しない)
~/.cloudflared/cert.pem Cloudflare ログイン証明書