summaryrefslogtreecommitdiff
path: root/vpn/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'vpn/install.sh')
-rw-r--r--vpn/install.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/vpn/install.sh b/vpn/install.sh
new file mode 100644
index 0000000..9a2f33d
--- /dev/null
+++ b/vpn/install.sh
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "$(dirname "$0")"
+
+DOMAIN="vpn.yyamashita.com"
+CADDY_DIR="/app/infra/caddy"
+CERT_DIR="./certs"
+CADDY_CERT_BASE="/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${DOMAIN}/${DOMAIN}"
+
+echo "=== VPN Install: ${DOMAIN} ==="
+
+# users.conf チェック
+if [ ! -f users.conf ]; then
+ echo ""
+ echo "Error: users.conf が見つかりません。先に作成してください:"
+ echo " echo 'username password' > /app/infra/vpn/users.conf"
+ echo " chmod 600 /app/infra/vpn/users.conf"
+ echo ""
+ echo "複数ユーザーは1行ずつ追加:"
+ echo " user1 pass1"
+ echo " user2 pass2"
+ exit 1
+fi
+
+mkdir -p "$CERT_DIR"
+
+# Caddy コンテナから証明書を取得
+echo "Caddy から証明書を取得中..."
+if ! docker compose -f "$CADDY_DIR/docker-compose.yml" exec -T caddy \
+ cat "${CADDY_CERT_BASE}.crt" > "$CERT_DIR/server.crt"; then
+ echo ""
+ echo "Error: 証明書の取得に失敗しました。"
+ echo "Caddyfile に ${DOMAIN} が追加されているか確認してください。"
+ echo "追加後 'git push origin master' してから再実行してください。"
+ exit 1
+fi
+
+docker compose -f "$CADDY_DIR/docker-compose.yml" exec -T caddy \
+ cat "${CADDY_CERT_BASE}.key" > "$CERT_DIR/server.key"
+
+chmod 600 "$CERT_DIR/server.key"
+echo "証明書を $CERT_DIR/ に保存しました。"
+
+# VPN コンテナ起動
+echo "VPN サービスを起動中..."
+docker compose up -d --build
+
+echo ""
+echo "=== VPN 起動完了 ==="
+echo ""
+echo "クライアント接続情報:"
+echo " サーバー: ${DOMAIN}"
+echo " 種別: IKEv2"
+echo " 認証: EAP (ユーザー名/パスワード)"
+echo ""
+echo "iOS/macOS: 設定 > VPN > VPN 構成を追加 > IKEv2"
+echo "Android (Quest/FireTV): strongSwan VPN Client アプリをインストール"
+echo ""
+echo "証明書の更新: bash /app/infra/vpn/renew-cert.sh"