summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authoryyamashita <yyamashita@hetzner.yyamashita.com>2026-07-02 23:08:58 +0900
committeryyamashita <yyamashita@hetzner.yyamashita.com>2026-07-02 23:08:58 +0900
commit1a7b5adf8484ec0f2b6feb350b578142e186ab26 (patch)
treee8c670ac5554d2b17b491ee96e9717f4432d64a9 /CLAUDE.md
parent88be3b3f503d4674d764a7265edb2d4e380ae738 (diff)
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 <noreply@anthropic.com>
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md33
1 files changed, 18 insertions, 15 deletions
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@<server>
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@<server> 'bash /app/infra/git/install.sh' # post-receive フック更新
-# → Caddy が proxy.yyamashita.com の証明書を取得するまで数分待つ
-ssh root@<server> '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@<server>
+vi /app/infra/vpn/users.conf
+docker compose -f /app/infra/caddy/docker-compose.yml restart # Caddy 再起動で反映
-# Proxy 証明書更新(Let's Encrypt 更新後 90 日ごと)
-ssh root@<server> 'bash /app/infra/proxy/renew-cert.sh'
+# DNS 登録(初回のみ。setup-route53.py に proxy が含まれている)
+ssh root@<server>
+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@<server> '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 と同じユーザー名/パスワード)