#!/usr/bin/env bash # nightly — Server-Setup-Skript # Führe das auf deinem Server aus: bash setup.sh set -euo pipefail DOMAIN="${1:-xxx.dk0.dev}" # Ersetze xxx mit deinem App-Namen APP_DIR="/opt/nightly" echo "▶ nightly setup für $DOMAIN" # --- Abhängigkeiten --- if ! command -v docker &>/dev/null; then echo "▶ Docker installieren..." curl -fsSL https://get.docker.com | sh sudo usermod -aG docker "$USER" fi # --- Verzeichnis anlegen --- sudo mkdir -p "$APP_DIR" sudo chown "$USER:$USER" "$APP_DIR" cd "$APP_DIR" # --- Offizielles Supabase-Docker-Setup holen --- if [ ! -d supabase ]; then echo "▶ Supabase Docker-Konfiguration laden..." git clone --depth 1 https://github.com/supabase/supabase.git supabase-repo cp -r supabase-repo/docker supabase rm -rf supabase-repo fi # --- Unsere Konfiguration kopieren --- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cp "$SCRIPT_DIR/docker-compose.override.yml" "$APP_DIR/supabase/" cp "$SCRIPT_DIR/Caddyfile" "$APP_DIR/supabase/" cp -r "$SCRIPT_DIR/scheduler" "$APP_DIR/supabase/" # --- .env anlegen wenn nicht vorhanden --- if [ ! -f "$APP_DIR/supabase/.env" ]; then cp "$APP_DIR/supabase/.env.example" "$APP_DIR/supabase/.env" cp "$SCRIPT_DIR/.env.nightly" "$APP_DIR/supabase/.env.nightly" echo "" echo "⚠️ WICHTIG: Editiere $APP_DIR/supabase/.env und .env.nightly" echo " Setze mindestens:" echo " - POSTGRES_PASSWORD" echo " - JWT_SECRET (min. 32 Zeichen)" echo " - SITE_URL=https://api.$DOMAIN" echo "" echo " Dann: cd $APP_DIR/supabase && docker compose -f docker-compose.yml -f docker-compose.override.yml up -d" exit 0 fi # --- Migrations einspielen --- echo "▶ Datenbank-Schema einspielen..." # Warte auf Postgres until docker compose exec -T db pg_isready -U postgres; do sleep 2; done docker compose exec -T db psql -U postgres -d postgres \ < "$SCRIPT_DIR/migrations/001_schema.sql" echo "" echo "✅ Setup abgeschlossen!" echo " Admin: https://studio.$DOMAIN" echo " API: https://api.$DOMAIN" echo " Logs: docker compose logs -f"