Files
Aether/deploy/.env.example
T
HoneyandClaude Opus 5 7fc8bb51d5 docs: Doku nach fuenf Runden aufraeumen
Nach dem Hin und Her um Profile, Ports und Escaping war Sediment
liegengeblieben:

- README: "Drei Adressen fuer drei Richtungen" stand zweimal; die
  Profil-Erklaerung war eine Chronik ("das war nicht immer so") statt
  einer Anleitung. Jetzt ein Absatz.
- .env.example (beide): der Office-Block begann mit einem Hinweis auf
  COMPOSE_PROFILES, den man nur braucht, wenn man selbst ein Profil
  anlegt - als erste Zeile eines Abschnitts unbrauchbar. Raus.
- TESTING: der grosse Office-Abschnitt behauptete noch "Getestet mit
  Collabora im Compose-Profil office" und pruefte "ohne --profile startet
  der Container nicht". Beides ueberholt.
- Umlaute vereinheitlicht (laeuft neben gehoert), $-Hinweis von vier auf
  zwei Zeilen.

Dazu zwei neue Zeilen in der Fehlertabelle des README: Container entsteht
gar nicht (Profil) und Container laeuft, aber kein Menuepunkt (leerer
OFFICE_PROVIDER oder falscher Port).

Geprueft: beide Compose-Dateien gueltig, jeder Schluessel aus dem Code
steht in deploy/.env.example, keine doppelten Absaetze mehr.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 12:27:19 +02:00

97 lines
5.8 KiB
Bash
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.
# Aether – alle Schalter. cp deploy/.env.example deploy/.env
# Erklärungen und Fallstricke: README.md, Abschnitt „Einstellungen"
#
# Für den reinen Betrieb genügt die kürzere .env.example im
# Wurzelverzeichnis – hier steht zusätzlich alles Optionale.
# ── App ───────────────────────────────────────────────────────────────────────
APP_ENV=production # development | production
APP_LISTEN_ADDR=:8080 # im Container; der Proxy leitet hierher
PUBLIC_URL=https://cloud.example.com
# IPs/CIDRs der Proxys, denen X-Forwarded-For/-Proto geglaubt wird.
TRUSTED_PROXIES=172.18.0.1
# ── Datenbank ─────────────────────────────────────────────────────────────────
# 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 – nur ein $ muss $$ heißen oder der Wert in
# 'einfache Anführungszeichen'. Sonst schneidet Compose lautlos ab. (README)
DB_PASSWORD=changeme_strong_password
# ── Sitzung ───────────────────────────────────────────────────────────────────
SESSION_SECRET=changeme_generate_with_openssl_rand_hex_32 # openssl rand -hex 32
SESSION_MAX_AGE=86400 # Sekunden
# ── Speicher ──────────────────────────────────────────────────────────────────
STORAGE_PATH=/data # im Container
TMP_PATH=/data/tmp
# 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
# 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).
# 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 $$ heißen (siehe DB_PASSWORD).
ADMIN_USERNAME=admin
ADMIN_PASSWORD=changeme_strong_admin_password
# ── OIDC (optional) ───────────────────────────────────────────────────────────
# Leerer OIDC_ISSUER = aus. OIDC_REDIRECT_URL muss exakt
# <PUBLIC_URL>/api/v1/auth/oidc/callback sein und beim Anbieter eingetragen.
# OIDC_ISSUER=https://your-idp.example.com
# OIDC_CLIENT_ID=aether
# OIDC_CLIENT_SECRET=
# 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=true
# ── Volltextsuche (OCR) ───────────────────────────────────────────────────────
# Standardmäßig an; fehlen ocrmypdf/tesseract, schaltet es sich selbst ab.
# OCR_ENABLED=false
# OCR_LANGUAGES=deu+eng # weitere brauchen ein apk-Paket im Dockerfile
# OCR_MAX_PAGES=50 # 0 = unbegrenzt; rund 1 Minute je Seite
# OCR_TIMEOUT=10m # Notbremse je Datei
# ── App-Umschalter ────────────────────────────────────────────────────────────
# Andere selbst gehostete Apps im Menü der Seitenleiste.
# Format: Name|URL|Emoji – mehrere durch Komma. Leer = kein Menü.
EXTERNAL_APPS=
# ── Office (optional) ─────────────────────────────────────────────────────────
# Leer = aus, auch wenn ein Office-Container läuft. Schnipsel: README.md
OFFICE_PROVIDER= # collabora | onlyoffice (auch Euro-Office)
# Backend → Office. Collabora lauscht auf 9980, OnlyOffice/Euro-Office auf 80.
OFFICE_URL=
OFFICE_PUBLIC_URL= # Browser → Office; leer = wie OFFICE_URL
# Office → Aether; leer = PUBLIC_URL.
# Weder localhost noch der veröffentlichte Port – beides scheitert.
OFFICE_WOPI_URL=
OFFICE_ALLOWED_HOSTS= # gegen SSRF; Host aus OFFICE_URL zählt immer
OFFICE_JWT_SECRET= # nur OnlyOffice/Euro-Office, mind. 32 Zeichen
OFFICE_INSECURE_TLS=false # nur für Tests mit selbstsigniertem Zertifikat
# Nur für den Collabora-Container aus deploy/docker-compose.yml:
OFFICE_ALIASGROUP=http://app:8080
OFFICE_SSL=false
OFFICE_SSL_TERMINATION=false # true nur, wenn davor wirklich HTTPS endet
OFFICE_PORT=9980
# ── Später ────────────────────────────────────────────────────────────────────
# MEILISEARCH_URL=http://meilisearch:7700
# MEILISEARCH_KEY=
# ── WebDAV ────────────────────────────────────────────────────────────────────
# Läuft unter /dav/, kein Schalter nötig. Der Proxy muss
# PROPFIND/MKCOL/MOVE/COPY durchreichen.