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
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
# Hocks Mieterportal – Deploy auf hocks.eu (Workflow aus dem Schulportal)
|
||||
# Hinterstein Mieterportal – Deploy auf hocks.eu (Workflow aus dem Schulportal)
|
||||
#
|
||||
# 1. npm run build 2. Paket (dist + compose + nginx) per pscp hochladen
|
||||
# 3. Entpacken nach /opt/mieterportal, Container mp-portal neu starten
|
||||
# 1. npm run build 2. Paket (dist + compose + nginx + server) hochladen
|
||||
# 3. Entpacken nach /opt/mieterportal, Container bauen & ersetzen
|
||||
# 4. Status prüfen (Container, Portal-Hash, API-Health)
|
||||
#
|
||||
# Voraussetzungen: Pageant mit priv_ionos_hocks_vps.ppk läuft.
|
||||
# Voraussetzungen: Pageant mit priv_ionos_hocks_vps.ppk läuft,
|
||||
# portal.env liegt auf dem Server (/opt/mieterportal/portal.env).
|
||||
# Aufruf: ./deploy.sh
|
||||
set -euo pipefail
|
||||
|
||||
@@ -24,23 +26,28 @@ rm -rf tmp-deploy && mkdir -p tmp-deploy/docker/templates
|
||||
cp -r dist tmp-deploy/dist
|
||||
cp docker-compose.yml tmp-deploy/
|
||||
cp docker/templates/default.conf.template tmp-deploy/docker/templates/
|
||||
cp -r server tmp-deploy/server
|
||||
rm -rf tmp-deploy/server/node_modules
|
||||
tar -czf mp-dist.tar.gz -C tmp-deploy .
|
||||
rm -rf tmp-deploy
|
||||
"$PSCP" -batch -hostkey "$HOSTKEY" -i "$KEY" -P "$PORT" \
|
||||
mp-dist.tar.gz "$SERVER":/tmp/mp-dist.tar.gz
|
||||
rm -f mp-dist.tar.gz
|
||||
|
||||
echo "==> 3/4 Auf Server entpacken und Container ersetzen"
|
||||
echo "==> 3/4 Auf Server entpacken, API-Image bauen, Stack ersetzen"
|
||||
"$PLINK" -batch -hostkey "$HOSTKEY" -i "$KEY" -P "$PORT" "$SERVER" "
|
||||
mkdir -p $REMOTE_DIR &&
|
||||
tar -xzf /tmp/mp-dist.tar.gz -C $REMOTE_DIR &&
|
||||
rm -f /tmp/mp-dist.tar.gz &&
|
||||
cd $REMOTE_DIR && docker compose up -d
|
||||
cd $REMOTE_DIR && docker compose up -d --build
|
||||
"
|
||||
|
||||
echo "==> 4/4 Status prüfen"
|
||||
sleep 5
|
||||
"$PLINK" -batch -hostkey "$HOSTKEY" -i "$KEY" -P "$PORT" "$SERVER" "
|
||||
docker ps --filter name=mp-portal --format 'table {{.Names}}\t{{.Status}}' &&
|
||||
curl -s https://mieterportal.hocks.eu/ | grep -o 'index-[^\"]*\.js' | head -1
|
||||
docker ps --filter name=mp- --format 'table {{.Names}}\t{{.Status}}' &&
|
||||
curl -s https://mieterportal.hocks.eu/ | grep -o 'index-[^\"]*\.js' | head -1 &&
|
||||
curl -s https://mieterportal.hocks.eu/api/healthz
|
||||
"
|
||||
echo
|
||||
echo "Fertig: https://mieterportal.hocks.eu"
|
||||
|
||||
Reference in New Issue
Block a user