# #019 Docker-Image und LXC-Installer **Status:** erledigt **Meilenstein:** v0.6.0 **Labels:** infrastruktur **Geschätzt:** 6 h **Tatsächlich:** 0 h 20 min ## Ziel Produktionsbetrieb per Docker Compose oder in einem Debian-LXC. ## Aufgaben - [x] Dockerfile (standalone, non-root), Compose mit migrate – lokal komplett hochgefahren (migrate → app healthy, worker bereit, Anmeldung) - [x] `deploy/install-lxc.sh` (auf dem Proxmox-Host) + `deploy/im-container.sh`, Update-Pfad (`--aktualisieren`, drei Fassungen zum Zurückgehen) - [x] Gemeinsames Laufzeit-Paket `scripts/paket-bauen.sh` für beide Wege - [x] Migrationen ohne Prisma-CLI (`src/betrieb/migrieren.ts`), kompatibel zu `_prisma_migrations` ## Akzeptanzkriterien - [x] Installer in echtem LXC durchgelaufen (pve-demo, CT 109 `pd-installer`); darin Server angelegt, Verbindungstest, CLI-Login, Dry-Run und ein echter LXC-Auftrag ## Abhängigkeiten #001 ## Notizen / Entscheidungen - **Eigener Migrationslauf statt `prisma migrate deploy`:** spart Prisma-CLI und Schema-Engine im Betrieb; schreibt `_prisma_migrations` wie Prisma (Test prüft `prisma migrate status`). - **worker als esbuild-Bundle** mit nur den Paketen, die er importiert (aus der Metadatei, exakte Versionen aus der Entwicklung): 103 MB statt 741 MB. - **Node im LXC von nodejs.org** mit SHA-256-Prüfung (Debian 13 hat nur Node 20). - `ADMIN_PASSWORT` wird nach dem ersten Start aus der Env-Datei entfernt; das Passwort steht nur in der Ausgabe. - Image 559 MB (node:24.21.0-trixie-slim), läuft als UID 1000; PostgreSQL 17.11.