blob: ca9a3f93353749600bfacd5e9c03033d63255f82 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#!/bin/bash
# Run once on a fresh Hetzner VPS (as root).
# hetzner-infra のみブートストラップとして作成する。
# 他のリポジトリは最初の push 後に install.sh が作成する。
set -e
REPO_DIR=/var/git/hetzner-infra.git
APP_DIR=/app/infra
# Install Docker
curl -fsSL https://get.docker.com | sh
# Create shared Docker network
docker network create web || true
# hetzner-infra bare repo をブートストラップ
mkdir -p "$REPO_DIR" "$APP_DIR"
git init --bare "$REPO_DIR"
# 最初の push を受け取るための最小限のフック(install.sh 実行後に上書きされる)
cat > "$REPO_DIR/hooks/post-receive" << 'HOOK'
#!/bin/bash
set -e
APP_DIR=/app/infra
GIT_WORK_TREE=$APP_DIR git checkout -f
cd $APP_DIR
docker network create web 2>/dev/null || true
docker compose up -d
docker compose exec -T caddy caddy reload --config /etc/caddy/Caddyfile 2>/dev/null || true
echo "Deploy complete: hetzner-infra"
if [ -f "$APP_DIR/scripts/sync-claude-services.sh" ]; then
bash "$APP_DIR/scripts/sync-claude-services.sh"
fi
HOOK
chmod +x "$REPO_DIR/hooks/post-receive"
echo ""
echo "Next steps:"
echo " 1. git remote add origin root@<server-ip>:$REPO_DIR"
echo " 2. git push origin master"
echo " 3. ssh root@<server-ip> 'bash $APP_DIR/scripts/install.sh'"
echo " (他のリポジトリ作成 + 全フックの正式インストール)"
|