Ein $ im Wert wird von Docker Compose als Variable gelesen und schneidet ab: Sicher$Passwort2026 kommt als Sicher an (gemessen). Angelegt wird ein Konto mit einem Passwort, das niemand kennt; die Anmeldung scheitert mit 'invalid credentials', obwohl alles richtig eingetippt ist. Die Datenbank laeuft dabei weiter, weil Postgres denselben abgeschnittenen Wert bekommt. Der Start nennt jetzt die Laenge des Passworts (nicht den Wert) und warnt unter 12 Zeichen mit dem Hinweis auf $$. Ohne diese Zahl war der Fehler von aussen nicht zu sehen: Compose meldet zwar 'variable is not set', aber auf stderr beim up, nicht im Container-Log. Escape-Tabelle in README und beiden .env.example. Ein Backslash hilft nicht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
66 lines
3.0 KiB
Bash
66 lines
3.0 KiB
Bash
# Aether – das Nötigste für eine neue Umgebung. cp .env.example .env
|
||
# Erklärungen: README.md, Abschnitt „Einstellungen"
|
||
# Alle Schalter: deploy/.env.example
|
||
|
||
# ── Pflicht ───────────────────────────────────────────────────────────────────
|
||
APP_ENV=production
|
||
# Adresse, unter der der Browser die Cloud sieht. Ohne Schrägstrich am Ende.
|
||
PUBLIC_URL=https://cloud.example.com
|
||
# openssl rand -hex 32
|
||
SESSION_SECRET=
|
||
|
||
# DB_HOST ist der Dienstname aus dem Compose, nicht localhost.
|
||
DB_HOST=postgres
|
||
DB_PORT=5432
|
||
DB_NAME=aether
|
||
DB_USER=aether
|
||
# Jedes Zeichen erlaubt, auch % @ : / und Leerzeichen.
|
||
# Ein $ im Wert wird von Docker Compose als Variable gelesen und schneidet
|
||
# lautlos ab: geheim$wort kommt als geheim an. Als $$ schreiben oder den
|
||
# ganzen Wert in 'einfache Anfuehrungszeichen' setzen. Ein \ hilft NICHT.
|
||
DB_PASSWORD=
|
||
|
||
# Verzeichnis auf dem Wirt. Nur lesend anfassen – zum Hineinlegen: WebDAV.
|
||
DATA_PATH=/pfad/zu/aether-data
|
||
# `id -u` / `id -g` – sonst gehören die Dateien einem Container-Nutzer.
|
||
APP_UID=1000
|
||
APP_GID=1000
|
||
|
||
# ── Reverse Proxy ─────────────────────────────────────────────────────────────
|
||
# Nur diesen Adressen wird X-Forwarded-For/-Proto geglaubt.
|
||
TRUSTED_PROXIES=172.18.0.1
|
||
# Port auf dem Wirt. Im Container bleibt es 8080.
|
||
APP_PORT=8080
|
||
# Wer den Port erreichen darf. 127.0.0.1 = nur dieser Rechner (Vorgabe,
|
||
# davor gehört der Proxy). 0.0.0.0 = das ganze Netz – dann unverschlüsselt.
|
||
APP_BIND=127.0.0.1
|
||
|
||
# ── Erster Start ──────────────────────────────────────────────────────────────
|
||
# Legt den Admin an. Danach ADMIN_PASSWORD leeren.
|
||
# Auch hier: ein $ muss $$ heissen (siehe DB_PASSWORD).
|
||
ADMIN_USERNAME=admin
|
||
ADMIN_PASSWORD=
|
||
|
||
# ── Anmeldung über einen Identitätsanbieter (optional) ───────────────────────
|
||
# Leerer OIDC_ISSUER = aus.
|
||
OIDC_ISSUER=
|
||
OIDC_CLIENT_ID=aether
|
||
OIDC_CLIENT_SECRET=
|
||
# Muss exakt <PUBLIC_URL>/api/v1/auth/oidc/callback sein.
|
||
OIDC_REDIRECT_URL=https://cloud.example.com/api/v1/auth/oidc/callback
|
||
# Bestehendes Konto verbinden statt ein zweites anzulegen.
|
||
# VOR der ersten Anmeldung setzen – danach ist es zu spät.
|
||
OIDC_LINK_BY_USERNAME=false
|
||
|
||
# ── Office (optional) ─────────────────────────────────────────────────────────
|
||
# Leer = aus. Container-Schnipsel: README.md
|
||
OFFICE_PROVIDER=
|
||
# Backend → Office
|
||
OFFICE_URL=http://office:9980
|
||
# Browser → Office
|
||
OFFICE_PUBLIC_URL=https://office.example.com
|
||
# Office → Aether. NICHT localhost, NICHT der veröffentlichte Port.
|
||
OFFICE_WOPI_URL=http://app:8080
|
||
# Gegen SSRF: was das Backend anfragen darf.
|
||
OFFICE_ALLOWED_HOSTS=office
|