Files
2026-05-08 14:32:14 +02:00

56 lines
2.3 KiB
Markdown

# Kita-Planer Deployment
Dieses Verzeichnis enthaelt die ausfuellbaren Vorlagen fuer das Production-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. Die bestehende Coolify-Postgres-Datenbank ueber ihre interne `DATABASE_URL` verbinden.
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:
```bash
npx prisma db push
```
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.
## 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:
```txt
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.