summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md42
1 files changed, 41 insertions, 1 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 60b2fdc..465d394 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -11,12 +11,13 @@ git/ ベアリポジトリ・フック管理(repos.txt, hooks/, ins
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)
server/ サーバー共通設定(authorized_keys, requirements.md)
```
## デプロイの仕組み
-- `git push origin master` → post-receive フック → `caddy/deploy.sh` / `cgit/deploy.sh` / `mail/deploy.sh` / `hetzner-admin/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` を手動実行
@@ -85,4 +86,43 @@ EOF
bash /app/infra/hetzner-admin/install.sh
# → SSH鍵生成 + authorized_keys登録(command= 制限付き)+ コンテナ起動
# → hetzner-admin.yyamashita.com でアクセス可能
+
+# VPN 初回セットアップ(サーバー上で実行)
+# 前提: ファイアウォールで UDP 500, 4500 を開放済み
+git push origin master
+ssh root@<server> 'bash /app/infra/git/install.sh' # post-receive フック更新
+# → Caddy が vpn.yyamashita.com の証明書を取得するまで数分待つ
+ssh root@<server>
+cat > /app/infra/vpn/users.conf <<EOF
+user1 <strong-password>
+EOF
+chmod 600 /app/infra/vpn/users.conf
+bash /app/infra/vpn/install.sh
+# → Caddy の証明書を流用 + コンテナ起動
+# → vpn.yyamashita.com:500/4500 (IKEv2) で接続可能
+
+# VPN 証明書更新(Let's Encrypt 更新後 90 日ごと)
+ssh root@<server> 'bash /app/infra/vpn/renew-cert.sh'
+
+# VPN ユーザー追加・変更
+ssh root@<server>
+vi /app/infra/vpn/users.conf # 1行1ユーザー: "username password"
+docker compose -f /app/infra/vpn/docker-compose.yml restart
```
+
+## VPN クライアント設定
+
+**iOS / macOS** (ネイティブ IKEv2):
+- サーバー: `vpn.yyamashita.com`
+- タイプ: IKEv2
+- 認証: ユーザー名 + パスワード (EAP)
+- 証明書インストール不要(Let's Encrypt は自動信頼)
+
+**Meta Quest 3S / FireTV** (Android):
+- strongSwan VPN Client アプリをインストール
+ - Quest: sideload `org.strongswan.android` APK
+ - FireTV: 同様に APK をサイドロード
+- プロファイル設定:
+ - タイプ: IKEv2 EAP (Username/Password)
+ - サーバー: `vpn.yyamashita.com`
+ - ユーザー名・パスワード: `users.conf` の内容