diff --git a/deploy/selfhost/install.sh b/deploy/selfhost/install.sh index 2c788bd..dba877d 100755 --- a/deploy/selfhost/install.sh +++ b/deploy/selfhost/install.sh @@ -68,7 +68,10 @@ docker compose version >/dev/null 2>&1 || die "docker compose v2 fehlt." command -v node >/dev/null || die "node (20+) fehlt — wird für Keys/Schema/Admin gebraucht." command -v openssl >/dev/null || die "openssl fehlt." -DEFAULT_VERSION="$(node -p "require('$REPO/package.json').version" 2>/dev/null || echo latest)" +# Image-Version: standardmäßig 'latest' (die CI veröffentlicht bei jedem Release +# auch das :latest-Tag). Der Kunde muss keine Versionsnummer kennen. Per ENV +# TEAMVIS_VERSION überschreibbar, falls bewusst eine Version gepinnt werden soll. +TEAMVIS_VERSION="${TEAMVIS_VERSION:-latest}" # Registry-Host des App-Images (muss zum `docker login` passen). Image-Pfad # bleibt zfx-services/teamvis. Per ENV überschreibbar (z. B. git.zoesch.de). REGISTRY="${REGISTRY:-git.zfx.services}" @@ -78,7 +81,6 @@ head "1) Basis-Angaben" ask NAME "Kurzname der Instanz (Verzeichnis/Compose-Projekt)" "teamvis" ask APP_DOMAIN "Domain der App (DNS muss auf diesen Host zeigen)" "" [ -n "$APP_DOMAIN" ] || die "Eine Domain ist nötig." -ask TEAMVIS_VERSION "TeamVis-Image-Version" "$DEFAULT_VERSION" ask ADMIN_EMAIL "E-Mail des ersten Admins" "" [ -n "$ADMIN_EMAIL" ] || die "Admin-E-Mail ist nötig." ask ADMIN_NAME "Name des ersten Admins" "Administrator" @@ -419,8 +421,10 @@ YAML sed -i.bak -e "s|__REGISTRY__|$REGISTRY|" -e "s/__NAME__/$NAME/" -e "s/__APP_DOMAIN__/$APP_DOMAIN/" "$TARGET/docker-compose.yml" && rm -f "$TARGET/docker-compose.yml.bak" ok "docker-compose.yml + Caddyfile geschrieben." - # psql-Helfer (Superuser, lokaler Socket-Trust im db-Container). - dbsql() { ( cd "$TARGET" && docker compose exec -T db psql -v ON_ERROR_STOP=1 -U postgres -d "$POSTGRES_DB" "$@" ); } + # psql-Helfer als supabase_admin — der ist im supabase/postgres-Image der + # Superuser (das postgres-Role darf reservierte Rollen wie 'authenticator' + # NICHT ändern). Passwort = POSTGRES_PASSWORD. + dbsql() { ( cd "$TARGET" && docker compose exec -T -e PGPASSWORD="$POSTGRES_PASSWORD" db psql -v ON_ERROR_STOP=1 -U supabase_admin -d "$POSTGRES_DB" "$@" ); } head "Datenbank starten + Rollen-Bootstrap" ( cd "$TARGET" && docker compose pull && docker compose up -d db ) @@ -438,7 +442,7 @@ SQL ( cd "$TARGET" && docker compose up -d rest storage ) say "→ Warte auf Storage (legt sein storage-Schema an) …" for _ in $(seq 1 30); do - if ( cd "$TARGET" && docker compose exec -T db psql -U postgres -d "$POSTGRES_DB" -tAc "select 1 from information_schema.schemata where schema_name='storage'" 2>/dev/null | grep -q 1 ); then break; fi + if ( cd "$TARGET" && docker compose exec -T -e PGPASSWORD="$POSTGRES_PASSWORD" db psql -U supabase_admin -d "$POSTGRES_DB" -tAc "select 1 from information_schema.schemata where schema_name='storage'" 2>/dev/null | grep -q 1 ); then break; fi sleep 2 done ok "Storage initialisiert."