Lokales Setup
Vorbedingungen
- Docker Engine oder Docker Desktop
- Für Steam-Bot-Trades: ein separater Steam-Bot-Account, der vorher normal im Browser erstellt wurde
Kurz prüfen:
docker --version
docker compose version
Lokale Dateien erzeugen
Im Repo-Root des Hauptprojekts:
cp .env.example .env
mkdir -p secrets
Lege danach mindestens diese Secret-Dateien im Ordner secrets/ an:
secrets/db_passwordsecrets/jwt_secret
Optionale Secret-Dateien hängen von den aktivierten Features ab und sind unter Secrets dokumentiert.
Die Datei .env.example enthält die nicht-sensitiven Docker- und Runtime-Werte. Secrets liegen bewusst getrennt im secrets/-Ordner.
Für Double-Opt-In müssen SMTP_HOST, SMTP_PORT, SMTP_FROM_EMAIL und die SMTP-Secrets gesetzt sein. Ohne SMTP-Konfiguration kann kein neuer Bestätigungscode versendet werden. Für neue Registrierungen ist außerdem secrets/steam_api_key erforderlich, weil darüber das Mindestalter des Steam-Accounts geprüft wird.
Stack starten
./scripts/local/docker-up.sh
Das Script nutzt intern die Kombination aus Basis-Compose plus Local-Override:
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d
Dabei passiert lokal Folgendes:
- fehlende Frontend- und Backend-Dev-Images werden beim ersten Start gebaut
- PostgreSQL, Backend und Frontend starten
- das Backend führt automatisch
npx prisma migrate deployaus - das Backend startet mit
npm run devund Node-Watch - das Frontend startet mit Vite-Hot-Reload
- der Vite-Dev-Server aktiviert den lokalen
/api-Proxy auf das Backend - das Script gibt danach die klickbaren lokalen URLs im Terminal aus
Danach erreichst du:
- Frontend:
http://localhost:8080 - Backend direkt:
http://localhost:3001 - PostgreSQL direkt:
localhost:5432
Für normale Codeänderungen brauchst du keinen Image-Rebuild. Frontend-Änderungen werden über Vite-HMR aktualisiert, Backend-Änderungen starten den Node-Prozess im Backend-Container neu.
Rebuilds und Recreates
Für einen expliziten Rebuild nach Änderungen an Dockerfiles oder package.json / package-lock.json:
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build backend frontend
Wenn du nur .env oder Dateien in secrets/ geändert hast, brauchst du normalerweise keinen neuen Image-Build. In dem Fall reicht meist ein Recreate des betroffenen Containers, zum Beispiel:
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --force-recreate backend
Container stoppen:
docker compose -f docker-compose.yml -f docker-compose.local.yml down
Logs ansehen:
docker compose -f docker-compose.yml -f docker-compose.local.yml logs -f
Praktische lokale Kommandos
Nur Backend-Logs:
docker compose -f docker-compose.yml -f docker-compose.local.yml logs -f backend
Prisma-Status im Backend-Container:
docker compose -f docker-compose.yml -f docker-compose.local.yml exec backend npx prisma migrate status
Prisma Studio lokal:
./scripts/local/prisma-studio.sh
Market-Price-Monitor lokal:
./scripts/local/market-price-monitor.sh
Backend-Tests im laufenden Backend-Container:
docker compose -f docker-compose.yml -f docker-compose.local.yml exec backend sh -lc '. /usr/local/bin/load-runtime-env.sh && npm test'
PSQL im Datenbank-Container:
docker compose -f docker-compose.yml -f docker-compose.local.yml exec postgres sh -lc 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB"'
Codex-Hinweise für lokale Arbeit
- Das Hauptprojekt läuft über Docker.
- Tests, Prisma und Datenbankzugriffe sollen über die laufenden Container ausgeführt werden.
- Keine Einmalcontainer für normale Diagnose- oder Testläufe starten, wenn ein laufender Service-Container dafür verwendet werden kann.
- Backend-Tests lokal immer im Backend-Container mit geladener Runtime-Env ausführen.