#!/bin/bash # Run once on a fresh Hetzner VPS (as root). Run this first before other app setups. set -e APP_DIR=/app/infra REPO_DIR=/var/git/hetzner-infra.git # Install Docker curl -fsSL https://get.docker.com | sh # Create shared Docker network docker network create web || true mkdir -p "$APP_DIR" mkdir -p "$REPO_DIR" git init --bare "$REPO_DIR" cat > "$REPO_DIR/hooks/post-receive" << 'EOF' #!/bin/bash set -e APP_DIR=/app/infra GIT_WORK_TREE=$APP_DIR git checkout -f cd $APP_DIR docker compose up -d docker compose exec -T caddy caddy reload --config /etc/caddy/Caddyfile echo "Deploy complete: hetzner-infra" EOF chmod +x "$REPO_DIR/hooks/post-receive" echo "" echo "Setup complete. On your local machine, run:" echo " git remote add hetzner root@:$REPO_DIR" echo " git push hetzner master" echo "" echo "Then run setup scripts for each app:" echo " tokyo-livehouse-events/scripts/server-setup.sh" echo " whois-band/scripts/server-setup.sh"