TeamVis Self-Host-Bundle v0.31.0
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
# =====================================================================
|
||||
# TeamVis All-in-One — Bootstrap (Referenz-Helfer)
|
||||
# =====================================================================
|
||||
# Bringt eine frische All-in-One-Instanz hoch:
|
||||
# 1. Keys erzeugen (falls noch Demo-Defaults in der Supabase-.env)
|
||||
# 2. Stack starten (Supabase + TeamVis + Caddy)
|
||||
# 3. TeamVis-Schema einspielen (Migrations-Bündel → Postgres)
|
||||
# 4. ersten Admin anlegen
|
||||
#
|
||||
# NICHT blind ausführen — Schritt für Schritt lesen. Erwartet:
|
||||
# - dieses Skript liegt im supabase/docker-Verzeichnis (neben der
|
||||
# docker-compose.yml + .env + dem Override)
|
||||
# - das TeamVis-Repo ist unter $TEAMVIS_REPO erreichbar (für die
|
||||
# Skripte bundle-migrations.mjs / create-admin.mjs)
|
||||
# - Node 20+, docker compose, openssl auf dem Host
|
||||
#
|
||||
# Aufruf: TEAMVIS_REPO=/pfad/zum/repo ADMIN_EMAIL=chef@kunde.de ./bootstrap.sh
|
||||
set -euo pipefail
|
||||
|
||||
REPO="${TEAMVIS_REPO:?Bitte TEAMVIS_REPO=/pfad/zum/team-stwhas-repo setzen}"
|
||||
ADMIN_EMAIL="${ADMIN_EMAIL:?Bitte ADMIN_EMAIL=… setzen}"
|
||||
ENV_FILE="./.env"
|
||||
|
||||
# --- 1. Keys ---------------------------------------------------------
|
||||
if grep -q "your-super-secret-jwt-token" "$ENV_FILE" 2>/dev/null; then
|
||||
echo "→ Erzeuge JWT_SECRET + ANON_KEY + SERVICE_ROLE_KEY …"
|
||||
KEYS=$(node "$REPO/deploy/selfhost/gen-keys.mjs")
|
||||
# Demo-Zeilen ersetzen (macOS/BSD-sed-kompatibel über awk).
|
||||
for k in JWT_SECRET ANON_KEY SERVICE_ROLE_KEY; do
|
||||
val=$(printf '%s\n' "$KEYS" | sed -n "s/^$k=//p")
|
||||
awk -v K="$k" -v V="$val" 'BEGIN{done=0}
|
||||
$0 ~ "^"K"=" && !done {print K"="V; done=1; next} {print}' "$ENV_FILE" > "$ENV_FILE.tmp"
|
||||
mv "$ENV_FILE.tmp" "$ENV_FILE"
|
||||
done
|
||||
echo " ok — Keys in $ENV_FILE gesetzt."
|
||||
else
|
||||
echo "→ Keys schon gesetzt (keine Demo-Defaults gefunden) — überspringe."
|
||||
fi
|
||||
|
||||
# --- 2. Stack starten ------------------------------------------------
|
||||
echo "→ Starte Stack …"
|
||||
docker compose up -d
|
||||
echo "→ Warte auf gesunde Datenbank …"
|
||||
until docker compose exec -T db pg_isready -U postgres >/dev/null 2>&1; do sleep 2; done
|
||||
# Storage initialisiert sein storage-Schema beim ersten Start — kurz warten.
|
||||
sleep 8
|
||||
|
||||
# --- 3. Schema einspielen -------------------------------------------
|
||||
echo "→ Spiele TeamVis-Schema ein (Migrations-Bündel) …"
|
||||
node "$REPO/scripts/bundle-migrations.mjs" > /tmp/teamvis-schema.sql
|
||||
docker compose exec -T db psql -v ON_ERROR_STOP=1 -U postgres -d postgres < /tmp/teamvis-schema.sql
|
||||
echo " ok — Schema eingespielt."
|
||||
|
||||
# --- 4. Admin anlegen ------------------------------------------------
|
||||
echo "→ Lege Admin '$ADMIN_EMAIL' an (Passwort wird abgefragt) …"
|
||||
SUPABASE_PUBLIC_URL=$(sed -n 's/^SUPABASE_PUBLIC_URL=//p' "$ENV_FILE")
|
||||
SERVICE_ROLE_KEY=$(sed -n 's/^SERVICE_ROLE_KEY=//p' "$ENV_FILE")
|
||||
NEXT_PUBLIC_SUPABASE_URL="$SUPABASE_PUBLIC_URL" \
|
||||
SUPABASE_SERVICE_ROLE_KEY="$SERVICE_ROLE_KEY" \
|
||||
node "$REPO/scripts/create-admin.mjs" "$ADMIN_EMAIL"
|
||||
|
||||
echo
|
||||
echo "Fertig. App: \$SITE_URL · Supabase: \$SUPABASE_PUBLIC_URL"
|
||||
echo "Danach unter Admin → Funktionen die Module gestaffelt freischalten."
|
||||
Reference in New Issue
Block a user