From 1a7b5adf8484ec0f2b6feb350b578142e186ab26 Mon Sep 17 00:00:00 2001 From: yyamashita Date: Thu, 2 Jul 2026 23:08:58 +0900 Subject: Move forward proxy from Squid to Caddy (port 80/443) Replace standalone Squid container with caddy-forwardproxy plugin so the proxy shares Caddy's existing ports and TLS. HTTP on :80 and HTTPS on :443. Auth is read from the same vpn/users.conf at Caddy startup via entrypoint.sh. DNS: add proxy to setup-route53.py WEB_SUBDOMAINS. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'CLAUDE.md') diff --git a/CLAUDE.md b/CLAUDE.md index 9f2890b..3a5188f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,20 +5,19 @@ Hetzner VPS 上で動くサービス群のインフラ管理リポジトリ。 ## ディレクトリ構成 ``` -caddy/ リバースプロキシ(Caddyfile, docker-compose.yml, deploy.sh) +caddy/ リバースプロキシ + フォワードプロキシ(Caddyfile, Dockerfile, entrypoint.sh, docker-compose.yml, deploy.sh) cgit/ cgit Web UI(Dockerfile, lighttpd.conf, cgitrc, deploy.sh) git/ ベアリポジトリ・フック管理(repos.txt, hooks/, install.sh) claude/ Claude Code セッション管理(sessions.txt, systemd unit, sync.sh) hetzner-admin/ サーバー管理 Web UI(app.py, Dockerfile, docker-compose.yml, deploy.sh) mail/ MTA(Postfix + OpenDKIM, docker-compose.yml, install.sh, dns/setup-route53.py) vpn/ strongSwan IKEv2 VPN(Dockerfile, docker-compose.yml, install.sh, renew-cert.sh) -proxy/ HTTPS フォワードプロキシ(Squid, Dockerfile, docker-compose.yml, install.sh, renew-cert.sh) server/ サーバー共通設定(authorized_keys, requirements.md) ``` ## デプロイの仕組み -- `git push origin master` → post-receive フック → `caddy/deploy.sh` / `cgit/deploy.sh` / `mail/deploy.sh` / `hetzner-admin/deploy.sh` / `vpn/deploy.sh` / `proxy/deploy.sh` を実行 +- `git push origin master` → post-receive フック → `caddy/deploy.sh` / `cgit/deploy.sh` / `mail/deploy.sh` / `hetzner-admin/deploy.sh` / `vpn/deploy.sh` を実行 - cgit の `lighttpd.conf` / `Dockerfile` 変更はイメージ再ビルドが必要(`deploy.sh` で `--build` するため push だけで反映される) - cgit の `cgitrc` はボリュームマウントのため push だけで反映される - フック・リポジトリの変更は push 後に `bash /app/infra/git/install.sh` を手動実行 @@ -110,17 +109,21 @@ ssh root@ vi /app/infra/vpn/users.conf # 1行1ユーザー: "username password" docker compose -f /app/infra/vpn/docker-compose.yml restart -# Proxy 初回セットアップ(サーバー上で実行) -# 前提: ファイアウォールで TCP 8443 を開放済み、DNS A レコードで proxy.yyamashita.com を設定済み -git push origin master -ssh root@ 'bash /app/infra/git/install.sh' # post-receive フック更新 -# → Caddy が proxy.yyamashita.com の証明書を取得するまで数分待つ -ssh root@ 'bash /app/infra/proxy/install.sh' -# → Caddy の証明書を流用 + コンテナ起動 -# → proxy.yyamashita.com:8443 (HTTPS) で接続可能 +# Proxy 初回セットアップ(Caddy に統合済み。追加作業なし) +# → push するだけで Caddy が proxy.yyamashita.com の証明書を自動取得 +# → proxy.yyamashita.com:80 (HTTP) / :443 (HTTPS) でフォワードプロキシとして動作 +# → 認証は VPN と同じ users.conf を共有 + +# Proxy ユーザー追加・変更(VPN と同じ users.conf を編集) +ssh root@ +vi /app/infra/vpn/users.conf +docker compose -f /app/infra/caddy/docker-compose.yml restart # Caddy 再起動で反映 -# Proxy 証明書更新(Let's Encrypt 更新後 90 日ごと) -ssh root@ 'bash /app/infra/proxy/renew-cert.sh' +# DNS 登録(初回のみ。setup-route53.py に proxy が含まれている) +ssh root@ +export AWS_ACCESS_KEY_ID=... +export AWS_SECRET_ACCESS_KEY=... +python3 /app/infra/mail/dns/setup-route53.py ``` ## VPN クライアント設定 @@ -142,6 +145,6 @@ ssh root@ 'bash /app/infra/proxy/renew-cert.sh' ## Proxy クライアント設定 -- アドレス: `proxy.yyamashita.com:8443` -- プロトコル: HTTPS (CONNECT トンネリング) +- HTTP プロキシ: `proxy.yyamashita.com:80` +- HTTPS プロキシ: `proxy.yyamashita.com:443` - 認証: Basic 認証(VPN と同じユーザー名/パスワード) -- cgit v1.2.3