Files
kita-planer/deploy/README.md
T

3.2 KiB

Kita-Planer Deployment

Dieses Verzeichnis enthaelt die ausfuellbaren Vorlagen fuer das Production-Deployment.

Die zentrale Schritt-für-Schritt-Anleitung steht in DEPLOYMENT_UND_MAILVERSAND.md. Sie erklärt die Datenbankvarianten, alle benötigten Variablen, Resend und DNS, Fristprüfung, Versandwiederholungen und die Prüfung nach dem Deployment.

Dateien

  • production.env.example: Vorlage fuer alle benoetigten Environment Variables.
  • production-checklist.md: Checkliste fuer Domain, Datenbank, Auth, Mail, Uploads und Rechtliches.
  • ../Dockerfile: Container-Build fuer Coolify oder andere Docker-Hosts.
  • ../docker-compose.coolify.yml: Compose-Vorlage fuer Coolify mit required Environment Variables.

Empfohlener Ablauf mit Coolify und Gitea

  1. Repository in deine Gitea-Instanz pushen.
  2. In Coolify eine neue Application aus diesem Gitea-Repository anlegen.
  3. Als Build Pack Docker Compose waehlen.
  4. Als Compose-Datei docker-compose.coolify.yml eintragen.
  5. Datenbankvariante wählen: Die aktuelle Compose-Datei bringt PostgreSQL mit und setzt daraus die App-URL zusammen. Für eine bestehende Coolify-Datenbank zuerst die Compose-Konfiguration auf deren DATABASE_URL und Netzwerkverbindung anpassen; siehe zentrale Anleitung.
  6. Environment Variables aus production.env.example in Coolify eintragen.
  7. Domain auf den app-Service mit internem Port 3000 zeigen lassen.
  8. Deploy starten.

Beim Container-Start fuehrt scripts/start-production.sh automatisch aus:

npx prisma db push --skip-generate

Coolify erkennt Variablen aus docker-compose.coolify.yml und zeigt required Variablen wie DATABASE_URL, AUTH_SECRET, AUTH_URL, NEXTAUTH_URL, NEXT_PUBLIC_SITE_URL, RESEND_API_KEY, EMAIL_FROM und ADMIN_EMAIL in der UI an.

Notdienstalarm

Die Compose-Vorlage benötigt zusätzlich NOTDIENST_JOB_SECRET (zufällig, mindestens 32 Zeichen). Der Produktionsstart führt die Fristprüfung über einen lokalen Hintergrundprozess ungefähr jede Minute aus. Ein alleiniger Start mit npm run start benötigt einen separat gestarteten Worker oder einen Scheduler. Details, Versandprüfung und das additive SQL-Upgrade stehen in docs/NOTDIENSTALARM.md.

Welche Coolify-Postgres-URL?

Wenn die App und die Postgres-DB im selben Coolify-Projekt/Netzwerk laufen, nimm die interne Datenbank-URL aus Coolify, nicht die oeffentliche externe URL. Das ist stabiler und vermeidet unnoetigen Traffic ueber den Host.

Das Format bleibt:

postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public

Wichtige Hinweise

  • Das aktuelle Projekt nutzt noch prisma db push statt versionierter Prisma-Migrationen. Fuer den ersten MVP-Deploy ist das praktikabel, fuer laengerfristigen Betrieb sollten Migrationen eingefuehrt werden.
  • UPLOAD_DIR muss persistent sein. Die Coolify-Compose-Datei mountet dafuer ein Docker-Volume nach /app/uploads.
  • NEXT_PUBLIC_SITE_URL muss die echte Domain enthalten, damit OpenGraph-Bilder in WhatsApp, LinkedIn und Co. korrekt als absolute URL aufgeloest werden.
  • NEXT_PUBLIC_SITE_URL wird auch als Build-Arg an Docker uebergeben. In Coolify sollte diese Variable deshalb fuer Build und Runtime verfuegbar sein.