Files
Mieterportal/docker-compose.yml
T
ah-admin 311153b3c3 v1.3: Serverseitige Datenbank (PostgreSQL + Node-API) ersetzt localStorage
- server/: Express-API (Auth, Bootstrap, Tickets, Threads, Benutzerverwaltung, Codes)
  mit pg-Schema (11 Tabellen), idempotem Seed (50 Wohnungen, 552 Buchungen)
- mp-db (PostgreSQL 16, Volume mp_pgdata) + mp-api im Compose-Stack,
  nginx proxiet /api/ an mp-api; deploy.sh baut API-Image auf dem Server
- Frontend: Store laedt /api/bootstrap, Schreibzugriff async, kein localStorage
  mehr (ausser Theme), Ladebildschirm beim Session-Check, vite-Proxy fuer Dev
- Rollenrechte serverseitig: Mieter nur eigene Wohnung (getestet, 403-Verweis)
- Mail-Benachrichtigungen komplett serverseitig (server/src/mail.js)
- beispieldaten.py schreibt server/seed/generated.json; Verwaltungs-Mail = axel@hocks.eu
- E2E live verifiziert: Login, Scoping, Ticket + Zustellung (status=sent),
  Registrierung, Codes; Testdaten bereinigt; Doku nachgefuehrt
2026-10-02 12:54:44 +02:00

68 lines
1.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hinterstein Mieterportal – Portal-Stack auf hocks.eu
# TLS + Subdomain liefert der Nginx Proxy Manager (npm_default-Netz).
# Deploy: ./deploy.sh baut dist/ + API-Image und lädt alles auf den Server.
#
# Dienste:
# mp-portal nginx, statisches dist/ (SPA), proxiet /api/ → mp-api
# und POST /api/mail/send → mp-mail-api (Token aus portal.env)
# mp-api Node-API (Express + PostgreSQL-Client), baut sich aus ./server
# mp-db PostgreSQL 16 (persistiertes Volume mp_pgdata)
#
# portal.env (nur auf dem Server, gitignored) liefert:
# MAIL_API_TOKEN, POSTGRES_PASSWORD
services:
mp-portal:
image: nginx:1.27-alpine
container_name: mp-portal
restart: unless-stopped
volumes:
- ./dist:/usr/share/nginx/html:ro
# envsubst ersetzt ${MAIL_API_TOKEN} beim Start aus portal.env
- ./docker/templates/default.conf.template:/etc/nginx/templates/default.conf.template:ro
env_file:
- portal.env
depends_on:
- mp-api
networks:
- npm_default
mp-api:
build: ./server
container_name: mp-api
restart: unless-stopped
environment:
DATABASE_URL: postgres://mp:${POSTGRES_PASSWORD}@mp-db:5432/mieterportal
MAIL_API_URL: http://mp-mail-api:8080
MAIL_API_TOKEN: ${MAIL_API_TOKEN}
PORT: 3000
depends_on:
- mp-db
networks:
- npm_default
mp-db:
image: postgres:16-alpine
container_name: mp-db
restart: unless-stopped
environment:
POSTGRES_USER: mp
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: mieterportal
volumes:
- mp_pgdata:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U mp -d mieterportal']
interval: 10s
timeout: 5s
retries: 5
networks:
- npm_default
networks:
npm_default:
external: true
volumes:
mp_pgdata: