diff --git a/Deployment.md b/Deployment.md new file mode 100644 index 0000000..2df46b9 --- /dev/null +++ b/Deployment.md @@ -0,0 +1,60 @@ +# Deployment + +## Voraussetzungen + +- Docker + Docker Compose installiert +- Git-Zugang zum Repository +- `.env`-Datei konfiguriert (siehe [[Umgebungsvariablen]]) + +## Erstinstallation + +```bash +git clone https://git.mischlabs.de/MrDiderot/Michess.git +cd Michess +cp .env.example .env +# .env anpassen (Passwörter, URLs, ADMIN_EMAIL) +docker compose up -d --build +``` + +Frontend: `http://:3000` +API: `http://:3001` + +## Update auf dem NAS + +```bash +docker run --rm -v /volume2/docker/michess:/work -w /work alpine/git fetch origin main && \ +docker run --rm -v /volume2/docker/michess:/work -w /work alpine/git reset --hard FETCH_HEAD && \ +cd /volume2/docker/michess && docker compose up --build -d michess +``` + +> **Warum `fetch` + `reset` statt `pull`?** +> `reset --hard origin/main` nutzt den lokalen gecachten Ref. Mit `fetch` zuerst wird `FETCH_HEAD` auf den neuesten Stand gebracht, sodass `reset --hard FETCH_HEAD` garantiert den aktuellen Stand vom Remote benutzt. + +## Umgebungsvariablen + +| Variable | Beschreibung | Beispiel | +|----------|-------------|---------| +| `POSTGRES_DB` | Datenbankname | `michess` | +| `POSTGRES_USER` | DB-Nutzer | `michess` | +| `POSTGRES_PASSWORD` | DB-Passwort | sicheres Passwort | +| `SESSION_SECRET` | Session-Schlüssel (min. 32 Zeichen) | zufälliger String | +| `CORS_ORIGIN` | Frontend-URL (für CORS) | `http://nas-ip:3000` | +| `ADMIN_EMAIL` | E-Mail-Adresse bekommt Admin-Rechte | `admin@example.com` | +| `NEXT_PUBLIC_APP_URL` | Frontend-URL (für Einladungslinks) | `http://nas-ip:3000` | +| `NEXT_PUBLIC_API_URL` | API-URL (im Next.js Build eingebaut) | `http://nas-ip:3001` | +| `MICHESS_PORT` | Frontend-Port | `3000` | +| `MICHESS_API_PORT` | API-Port | `3001` | + +## Admin-Rolle einrichten + +1. `ADMIN_EMAIL` in `.env` auf die gewünschte E-Mail setzen +2. Container neustarten – der Server setzt die Rolle automatisch +3. Mit diesem Account **ausloggen und neu einloggen** + +## Docker-Dienste + +| Dienst | Image | Funktion | +|--------|-------|---------| +| `michess` | Eigener Build | Frontend + Backend | +| `db` | `postgres:16-alpine` | Datenbank | +