caddy について
Caddy Admin APIを使ってローカル開発用のリバースプロキシを管理するスキルです。状態確認、ルートの登録・更新・削除の手順を扱います。
主な機能
- 01Caddyの状態とルートの確認
- 02名前付きlocalhostプロキシの登録
- 03空きポートの検索
- 04プロキシルートの更新と削除
- 05一般的な設定エラーへの対応
活用シーン
- 01名前付き.localhost URLでローカルプロジェクトを公開
- 02既存の開発用プロキシルートの確認
- 03プロキシのバックエンドポート変更
- 04停止中のCaddyサーバーの診断
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ muninn-huginn/ caddy-skill --skill caddyインストール後、Claude Code で/caddyを入力して読み込まれたか確認します。
詳細
Caddy ローカルプロキシマネージャー
localhost:2019 の Caddy Admin API を介して、ローカル開発用のリバースプロキシを管理します。
セッション名
プロキシを登録する際は、次のいずれかの方法を使用します。
- ユーザーが名前を指定:指定された名前をそのまま使用します
- コンテキストから生成:プロジェクトディレクトリ名 + 短いランダムなサフィックスを使用します(例:
myapp-x7k2)
生成例:
NAME="$(basename "$PWD" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g')-$(head -c4 /dev/urandom | xxd -p | head -c4)"
クイックリファレンス
| タスク | コマンド |
|---|---|
| ステータスを確認 | curl -sf http://localhost:2019/config/ |
| ルート一覧を表示 | curl -sf http://localhost:2019/config/apps/http/servers/local_proxies/routes |
| ルートを追加 | POST /config/apps/http/servers/local_proxies/routes |
| ルートを削除 | DELETE /id/proxy_<name> |
ワークフロー
Caddy のステータスを確認
curl -sf http://localhost:2019/config/ 2>/dev/null
失敗した場合:「Caddy が起動していません。インストール:brew install caddy、起動:caddy start」
すべてのプロキシを一覧表示
curl -sf http://localhost:2019/config/apps/http/servers/local_proxies/routes 2>/dev/null
表形式で表示:名前 | URL | バックエンド
プロキシを登録
-
名前を取得または生成(ユーザーに尋ねるか、プロジェクト名 + ランダムな文字列から生成)
-
使用可能なポートを確認(指定されていない場合):
for port in $(seq 3000 3100); do
lsof -i :$port > /dev/null 2>&1 || { echo $port; break; }
done
- 必要に応じてサーバーを初期化:
curl -sf http://localhost:2019/config/apps/http/servers/local_proxies > /dev/null 2>&1 || \
curl -sf -X POST http://localhost:2019/load \
-H "Content-Type: application/json" \
-d '{"apps":{"http":{"servers":{"local_proxies":{"listen":[":80"],"routes":[]}}}}}'
- ルートを追加(NAME と PORT を置き換えます):
curl -sf -X POST "http://localhost:2019/config/apps/http/servers/local_proxies/routes" \
-H "Content-Type: application/json" \
-d '{"@id":"proxy_NAME","match":[{"host":["NAME.localhost"]}],"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"localhost:PORT"}]}],"terminal":true}'
- 報告:「登録しました:http://NAME.localhost → localhost:PORT」
プロキシを削除
curl -sf -X DELETE "http://localhost:2019/id/proxy_NAME"
プロキシを更新
削除してから、新しいポートで再追加します。
ルート JSON の構造
{
"@id": "proxy_<name>",
"match": [{"host": ["<name>.localhost"]}],
"handle": [{"handler": "reverse_proxy", "upstreams": [{"dial": "localhost:<port>"}]}],
"terminal": true
}
エラー処理
| エラー | 解決方法 |
|---|---|
| Caddy が起動していない | brew install caddy && caddy start |
| ポート 80 が拒否された | sudo caddy start |
| ルートがすでに存在する | 更新するか、別の名前を選ぶようユーザーに尋ねます |
プラットフォームに関する注意
- macOS:
*.localhostは自動的に 127.0.0.1 に解決されます - Linux:
/etc/hostsのエントリが必要な場合があります
コメント
Markdown 対応