Die Wegwerf-Instanz bekommt je Lauf ein frisch erzeugtes VAPID-Paar und einen Mailhost, den es nie geben wird. Damit zeigen die Bilder den eingerichteten Normalfall statt zweier Warnhinweise — und im Verzeichnis bleibt kein privater Schluessel liegen. Kein Push-Geraet mehr in den Demo-Daten: Seine Schluessel liegen verschluesselt, und der Versand entfernt jedes Geraet, dessen Schluessel er nicht lesen kann. Der erfundene Eintrag waere beim ersten Lauf wieder verschwunden. Dass der Browser im Bild "blockiert" meldet, laesst sich nicht abstellen: Chromium im Kopflosbetrieb antwortet auf Notification.permission immer so. Das Handbuch sagt es jetzt dazu. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
73 lines
2.3 KiB
YAML
73 lines
2.3 KiB
YAML
# Wegwerf-Instanz nur für "npm run screenshots".
|
||
#
|
||
# Eigenes Compose-Projekt (planer-screenshots), eigenes Volume, eigene Ports.
|
||
# Sie kommt der Entwicklungs- oder Betriebsinstanz damit nicht in die Quere und
|
||
# wird nach dem Lauf samt Volume wieder entfernt.
|
||
services:
|
||
db:
|
||
image: postgres:16-alpine
|
||
restart: 'no'
|
||
environment:
|
||
POSTGRES_USER: demo
|
||
POSTGRES_PASSWORD: demo
|
||
POSTGRES_DB: demo
|
||
TZ: Europe/Berlin
|
||
ports:
|
||
- '${SCREENSHOT_DB_PORT:-5455}:5432'
|
||
healthcheck:
|
||
test: ['CMD-SHELL', 'pg_isready -U demo -d demo']
|
||
interval: 3s
|
||
timeout: 3s
|
||
retries: 20
|
||
start_period: 10s
|
||
|
||
migration:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
target: bauen
|
||
restart: 'no'
|
||
depends_on:
|
||
db:
|
||
condition: service_healthy
|
||
environment:
|
||
TZ: Europe/Berlin
|
||
DATABASE_URL: postgresql://demo:demo@db:5432/demo?schema=public
|
||
command: node node_modules/prisma/build/index.js migrate deploy
|
||
|
||
app:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
target: betrieb
|
||
restart: 'no'
|
||
depends_on:
|
||
migration:
|
||
condition: service_completed_successfully
|
||
environment:
|
||
NODE_ENV: production
|
||
TZ: Europe/Berlin
|
||
INSTANZ: daheim
|
||
APP_URL: http://127.0.0.1:${SCREENSHOT_APP_PORT:-3200}
|
||
DATABASE_URL: postgresql://demo:demo@db:5432/demo?schema=public
|
||
AUTH_SECRET: nur-fuer-die-screenshot-instanz-nicht-geheim
|
||
AUTH_TRUST_HOST: 'true'
|
||
ANMELDUNG_PASSWORT: 'true'
|
||
WEBAUTHN_RP_ID: 127.0.0.1
|
||
WEBAUTHN_RP_NAME: Planer
|
||
WEBAUTHN_ORIGIN: http://127.0.0.1:${SCREENSHOT_APP_PORT:-3200}
|
||
DEMO_MODUS: 'true'
|
||
# Damit die Karte "Benachrichtigungen" den Normalfall zeigt und nicht
|
||
# den Hinweis, dass nichts eingerichtet ist. Das Schluesselpaar erzeugt
|
||
# scripts/screenshots.ts fuer jeden Lauf neu – es steht bewusst nirgends
|
||
# im Verzeichnis.
|
||
VAPID_OEFFENTLICH: ${SCREENSHOT_VAPID_OEFFENTLICH:-}
|
||
VAPID_PRIVAT: ${SCREENSHOT_VAPID_PRIVAT:-}
|
||
VAPID_KONTAKT: mailto:planer@planer.invalid
|
||
# Ein Host, den es nie geben wird: die Oberflaeche zeigt E-Mail als
|
||
# moeglich, hinaus geht trotzdem nichts.
|
||
SMTP_HOST: smtp.planer.invalid
|
||
SMTP_ABSENDER: Planer <planer@planer.invalid>
|
||
ports:
|
||
- '${SCREENSHOT_APP_PORT:-3200}:3000'
|