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
- Repository in deine Gitea-Instanz pushen.
- In Coolify eine neue Application aus diesem Gitea-Repository anlegen.
- Als Build Pack
Docker Composewaehlen. - Als Compose-Datei
docker-compose.coolify.ymleintragen. - 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_URLund Netzwerkverbindung anpassen; siehe zentrale Anleitung. - Environment Variables aus
production.env.examplein Coolify eintragen. - Domain auf den
app-Service mit internem Port3000zeigen lassen. - 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 pushstatt versionierter Prisma-Migrationen. Fuer den ersten MVP-Deploy ist das praktikabel, fuer laengerfristigen Betrieb sollten Migrationen eingefuehrt werden. UPLOAD_DIRmuss persistent sein. Die Coolify-Compose-Datei mountet dafuer ein Docker-Volume nach/app/uploads.NEXT_PUBLIC_SITE_URLmuss die echte Domain enthalten, damit OpenGraph-Bilder in WhatsApp, LinkedIn und Co. korrekt als absolute URL aufgeloest werden.NEXT_PUBLIC_SITE_URLwird auch als Build-Arg an Docker uebergeben. In Coolify sollte diese Variable deshalb fuer Build und Runtime verfuegbar sein.