Bisher war Aktualisieren eine Folge von Befehlen aus der Anleitung, und zwei davon vergisst man zuverlaessig: die Sicherung vorher und die beiden SQL-Skripte hinterher. Genau die hat es hier schon gekostet. ./scripts/update.sh macht das in einem Durchgang - mit zwei Eigenschaften, auf die es ankommt: Bis zur Rueckfrage wird nichts veraendert. Der erste Entwurf hat die eigenen Aenderungen beiseite gelegt und danach am Serverzugriff abgebrochen - Halbzustand, aus dem man erst wieder herausfinden muss. Jetzt laufen Pruefung, Abgleich und Changelog-Anzeige vollstaendig durch, bevor irgendetwas angefasst wird. Eigene Aenderungen an versionierten Dateien blockieren nicht. Im Betrieb passt man die docker-compose.yml an, bis etwas laeuft; genau diese Anpassungen sind spaeter oft schon eingearbeitet. Das Skript legt sie mit git stash beiseite - rueckholbar, nicht weggeworfen - und sagt, wie man sie zurueckbekommt. Wer sie wirklich loswerden will, nimmt --verwerfen. Die .env bleibt immer unangetastet. Schlaegt die Sicherung fehl, wird nicht aktualisiert. Schlaegt der Bau fehl, nennt das Skript den Weg zurueck. Nebenbei behoben: Der Port der MinIO-Konsole stand fest auf 9001. Lief dort schon etwas, startete der ganze Stapel nicht. Jetzt ueber MINIO_KONSOLE_PORT einstellbar - dieselbe Moeglichkeit, die APP_PORT schon hatte. Aufgefallen beim Aufsetzen einer Testumgebung. Etappe: 8 Phase: Haertung
96 lines
3.9 KiB
Bash
96 lines
3.9 KiB
Bash
# =============================================================================
|
|
# Betreuungs-Cockpit - Beispielkonfiguration
|
|
# Kopiere diese Datei nach .env und fuelle die Werte aus.
|
|
# Alle Geheimnisse erzeugst du mit: npm run schluessel
|
|
# =============================================================================
|
|
|
|
# --- Datenbank --------------------------------------------------------------
|
|
# Lokal (Docker Compose): Host ist der Servicename "db".
|
|
POSTGRES_USER=cockpit
|
|
POSTGRES_PASSWORD=bitte-aendern
|
|
POSTGRES_DB=betreuungs_cockpit
|
|
DATABASE_URL="postgresql://cockpit:bitte-aendern@localhost:5432/betreuungs_cockpit?schema=public"
|
|
|
|
# --- Auth.js ----------------------------------------------------------------
|
|
# 32 zufaellige Bytes, base64. Erzeugen: npm run schluessel
|
|
AUTH_SECRET=
|
|
# Oeffentliche Basis-URL der Anwendung (ohne abschliessenden Slash).
|
|
AUTH_URL=http://localhost:3000
|
|
# Hinter einem Reverse Proxy auf true setzen.
|
|
AUTH_TRUST_HOST=true
|
|
|
|
# --- Erreichbarkeit: HIER MUSST DU DICH ENTSCHEIDEN -------------------------
|
|
#
|
|
# Auf welcher Adresse soll die Anwendung erreichbar sein? Das haengt davon
|
|
# ab, WO dein Reverse Proxy laeuft. Waehl genau eine Zeile aus:
|
|
#
|
|
# Proxy auf DEMSELBEN Server
|
|
# APP_BIND=127.0.0.1
|
|
# Von aussen kommt niemand heran, nur der Proxy nebenan. Sicherste
|
|
# Variante - aber ein Proxy auf einem anderen Rechner erreicht die
|
|
# Anwendung damit NICHT.
|
|
#
|
|
# Proxy auf einem ANDEREN Server, privates Netz oder WireGuard vorhanden
|
|
# APP_BIND=10.0.0.5 <- die Adresse DIESES Servers in dem Netz
|
|
# Erste Wahl, wenn der Proxy woanders steht.
|
|
#
|
|
# Proxy auf einem ANDEREN Server, kein privates Netz
|
|
# APP_BIND=0.0.0.0
|
|
# Nur zusammen mit einer Firewallregel, die den Port ausschliesslich
|
|
# fuer die IP des Proxy-Servers oeffnet:
|
|
# ufw allow from <IP-des-Proxys> to any port 3000 proto tcp
|
|
# ufw deny 3000/tcp
|
|
#
|
|
# Zwischen Proxy und Anwendung laeuft unverschluesseltes HTTP - die
|
|
# Anwendung beendet kein TLS. Dieser Weg darf nie durchs offene Netz gehen.
|
|
# Einzelheiten: docs/INSTALLATION.md, Schritt 7.
|
|
APP_BIND=127.0.0.1
|
|
APP_PORT=3000
|
|
|
|
# Die Konsole des mitgelieferten Objektspeichers. Nur noetig, wenn auf dem
|
|
# Server schon etwas auf 9001 laeuft.
|
|
MINIO_KONSOLE_PORT=9001
|
|
|
|
# --- Anwendungsseitige Feldverschluesselung ---------------------------------
|
|
# AES-256-GCM. 32 Bytes, base64. OHNE DIESEN SCHLUESSEL SIND DIE VERSCHLUESSELTEN
|
|
# FELDER UNWIEDERBRINGLICH VERLOREN - unbedingt getrennt vom Backup sichern!
|
|
# Schluesselrotation: neuen Schluessel als ENC_KEY_V2 ergaenzen und
|
|
# ENC_KEY_AKTIV=2 setzen. Alte Schluessel bleiben zum Entschluesseln stehen.
|
|
ENC_KEY_V1=
|
|
ENC_KEY_AKTIV=1
|
|
|
|
# Separater Schluessel fuer Blind-Indizes (HMAC-SHA256).
|
|
# Erlaubt die Suche nach z.B. einer IBAN, ohne sie im Klartext zu speichern.
|
|
INDEX_KEY=
|
|
|
|
# --- Sicherheit -------------------------------------------------------------
|
|
# Leerlauf bis zur automatischen Abmeldung (Sekunden). 30 Minuten.
|
|
SESSION_MAX_AGE=1800
|
|
# Wie lange eine erneute Anmeldung fuer sensible Aktionen gilt (Sekunden).
|
|
REAUTH_MAX_AGE=300
|
|
# Login-Sperre: max. Fehlversuche pro Zeitfenster (Sekunden).
|
|
LOGIN_MAX_VERSUCHE=5
|
|
LOGIN_FENSTER_SEKUNDEN=900
|
|
LOGIN_SPERRE_SEKUNDEN=900
|
|
|
|
# --- Objektspeicher (S3-kompatibel, EU!) ------------------------------------
|
|
# Wird ab Etappe 3 verwendet. Beispiel: Hetzner Object Storage, Falkenstein.
|
|
# ACHTUNG: Mit dem Anbieter muss ein AV-Vertrag nach Art. 28 DSGVO bestehen.
|
|
S3_ENDPOINT=https://fsn1.your-objectstorage.com
|
|
S3_REGION=eu-central
|
|
S3_BUCKET=betreuungs-cockpit
|
|
S3_ACCESS_KEY_ID=
|
|
S3_SECRET_ACCESS_KEY=
|
|
|
|
# --- E-Mail-Erinnerungen (optional, ab Etappe 2) ----------------------------
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_USER=
|
|
SMTP_PASSWORD=
|
|
SMTP_FROM="Betreuungs-Cockpit <cockpit@example.de>"
|
|
|
|
# --- Erstanmeldung ----------------------------------------------------------
|
|
# Wird nur vom Seed benutzt, um den ersten Betreuer-Zugang anzulegen.
|
|
SEED_ADMIN_EMAIL=fw@wildeflorian.de
|
|
SEED_ADMIN_PASSWORT=bitte-beim-ersten-login-aendern
|