docs(deploy): schlankes Compose-Beispiel im Wurzelverzeichnis

Das Compose in deploy/ war zu über der Hälfte Kommentar (73 von 137
Zeilen) und mischte zwei Zwecke. Jetzt getrennt:

  Wurzel   docker-compose.example.yml + .env.example  – betreiben,
           zieht das fertige Abbild, braucht keinen Quelltext
  deploy/  docker-compose.yml + .env.example          – entwickeln,
           baut aus dem Quelltext, kennt alle Schalter

Die schlanke .env.example führt nur die Pflichtwerte und Office; die
vollständige Liste mit Erklärungen bleibt in deploy/.env.example.
Die kopierte /docker-compose.yml ist ignoriert – sie gehört in die
Umgebung, nicht ins Repo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 5 committed 2026-08-24 09:33:20 +02:00
1 parent 62e80dd2f5
commit 13681958dd
5 files changed
+228 -105

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
# Aether – das Nötigste für eine neue Umgebung.
#
# cp .env.example .env
#
# Vollständige Liste aller Schalter (OIDC, OCR, Thumbnails, Kontingente …):
# deploy/.env.example
# ── Pflicht ───────────────────────────────────────────────────────────────────
# Wie die Cloud von außen erreichbar ist. Wird für OIDC-Rücksprünge,
# WOPI-Rückrufe und Freigabe-Links benutzt – ein falscher Wert fällt erst
# dort auf, nicht beim Start.
PUBLIC_URL=https://cloud.example.com
# openssl rand -hex 32
SESSION_SECRET=
DB_NAME=aether
DB_USER=aether
DB_PASSWORD=
# Wohin die Dateien auf dem Wirt kommen. Ein gewöhnliches Verzeichnis, kein
# Docker-Volume – so kommst du per SFTP oder Dateimanager daran.
DATA_PATH=/pfad/zu/aether-data
# `id -u` und `id -g`. Ohne das gehören die Dateien einem Container-Nutzer.
APP_UID=1000
APP_GID=1000
# ── Reverse Proxy ─────────────────────────────────────────────────────────────
# X-Forwarded-For/-Proto werden NUR von diesen Adressen geglaubt. Steht hier
# das Falsche, sieht die Anwendung überall die IP des Proxys – Rate-Limit und
# Audit-Log werden damit wertlos.
TRUSTED_PROXIES=172.18.0.1
# Port auf dem Wirt, gebunden auf loopback. Im Container bleibt es 8080.
APP_PORT=8080
# ── Erster Start ──────────────────────────────────────────────────────────────
# Legt beim allerersten Start den Admin an. Danach hier leeren – das Konto
# bleibt, das Passwort steht sonst dauerhaft in der Datei.
ADMIN_USERNAME=admin
ADMIN_PASSWORD=
# ── Office (optional) ─────────────────────────────────────────────────────────
# Leer lassen = aus. Sonst `docker compose --profile office up -d`.
#
# Drei Adressen für drei Richtungen, und sie sind selten gleich:
# OFFICE_URL Backend → Office-Server
# OFFICE_PUBLIC_URL Browser → Office-Server
# OFFICE_WOPI_URL Office-Server → Aether (NICHT localhost – aus seinem
# Container heraus ist das er selbst)
OFFICE_PROVIDER=
OFFICE_URL=http://collabora:9980
OFFICE_PUBLIC_URL=https://office.example.com
OFFICE_WOPI_URL=http://app:8080
# Ziele, die das Backend anfragen darf – gegen SSRF.
OFFICE_ALLOWED_HOSTS=collabora
OFFICE_ALIASGROUP=http://app:8080
# Hinter deinem Reverse Proxy mit HTTPS: beide auf true.
OFFICE_SSL=false
OFFICE_SSL_TERMINATION=true
OFFICE_PORT=9980