# Lageplan — Portainer Deployment ## Architektur ``` Browser → :3000 (Web App) → intern: db:5432, minio:9000 ``` Nur **ein Port (3000)** muss exponiert werden. DB und MinIO laufen rein intern im Docker-Netzwerk. Icons werden über die Web-App gestreamt — kein direkter MinIO-Zugriff nötig. --- ## Dateien | Datei | Beschreibung | |-------|-------------| | `lageplan-web-v1.0.0.tar` | Docker Image (~92 MB) | | `portainer-stack.yml` | Stack YAML für Portainer | | `.env.example` | Environment Variables Vorlage | --- ## Schritt 1: Image auf Server laden ```bash # Kopieren scp lageplan-web-v1.0.0.tar user@server:/tmp/ # Auf dem Server laden docker load -i /tmp/lageplan-web-v1.0.0.tar # Prüfen docker images | grep lageplan ``` --- ## Schritt 2: Stack in Portainer erstellen 1. **Portainer** → `Stacks` → `+ Add stack` 2. **Name**: `lageplan` 3. **Web editor**: Inhalt von `portainer-stack.yml` einfügen 4. **Environment variables** setzen: | Variable | Wert | |----------|------| | `POSTGRES_USER` | `lageplan` | | `POSTGRES_PASSWORD` | *(sicheres Passwort)* | | `POSTGRES_DB` | `lageplan` | | `MINIO_ROOT_USER` | `minioadmin` | | `MINIO_ROOT_PASSWORD` | *(sicheres Passwort)* | | `MINIO_BUCKET` | `lageplan-icons` | | `WEB_PORT` | `3000` | | `NEXTAUTH_URL` | `http://SERVER_IP:3000` | | `NEXTAUTH_SECRET` | *(langer zufälliger String)* | > **Tipp**: Secret generieren: `openssl rand -base64 32` 5. **Deploy the stack** --- ## Schritt 3: Datenbank initialisieren (einmalig) In Portainer: Container `web` → Console → `/bin/sh`: ```bash npx prisma db push npx prisma db seed ``` Oder per SSH: ```bash docker exec -it lageplan-web-1 npx prisma db push docker exec -it lageplan-web-1 npx prisma db seed ``` --- ## Schritt 4: Zugriff - **Web App**: `http://SERVER_IP:3000` - **Login**: `admin@lageplan.local` / `admin123` --- ## Update ```bash # Lokal: neues Image bauen + exportieren docker compose build web docker tag lageplan-web:latest lageplan-web:v1.1.0 docker save lageplan-web:v1.1.0 -o deploy/lageplan-web-v1.1.0.tar # Server: laden docker load -i lageplan-web-v1.1.0.tar # Portainer: Stack → Editor → Image-Tag ändern → Update the stack ``` --- ## Ports | Service | Port | Extern? | |---------|------|---------| | Web App | 3000 | ✅ Ja (`WEB_PORT`) | | PostgreSQL | 5432 | ❌ Nur intern | | MinIO API | 9000 | ❌ Nur intern | | MinIO Console | 9001 | ❌ Nur intern |