Files
Aether/deploy/.env.example
T
HoneyandClaude Opus 5 bad958d886 fix(office): Schnipsel ohne Profil – sie starten jetzt beim Einfuegen
profiles: [office] war als Sparmassnahme gedacht: Der Container laeuft nur
auf Wunsch. In Portainer/Dockge/Komodo gibt es aber kein --profile, und der
Dienst entstand dort nie – ohne Fehlermeldung, ohne Hinweis, ohne Weg ueber
die Bedienung.

Eine Voreinstellung, bei der das Einfuegen des Schnipsels nichts bewirkt,
ist die falsche. Alle drei Schnipsel starten jetzt mit  (geprueft: app office postgres). Abschalten: docker compose stop
office. Wer ein Profil will, haengt die Zeile selbst an.

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

104 lines
6.1 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, 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.
# Im Container steht danach EIN $ – so gehoert es, angemeldet wird mit einem.
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 $$ heissen (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) ─────────────────────────────────────────────────────────
# Nur noetig, wenn du dem Office-Dienst selbst ein `profiles:` gegeben hast.
# Die Schnipsel im README haben keins und starten von allein.
# COMPOSE_PROFILES=office
# Leer = aus. Container-Schnipsel: README.md
OFFICE_PROVIDER= # collabora | onlyoffice (auch Euro-Office)
OFFICE_URL= # Backend → Office
OFFICE_PUBLIC_URL= # Browser → Office; leer = wie OFFICE_URL
# Office → Aether; leer = PUBLIC_URL.
# NICHT localhost, NICHT der veröffentlichte Port – beides scheitert.
OFFICE_WOPI_URL=
OFFICE_ALLOWED_HOSTS= # gegen SSRF; Host aus OFFICE_URL zählt immer
# Nur fuer OnlyOffice/Euro-Office: gemeinsames Geheimnis, mind. 32 Zeichen.
# openssl rand -hex 32 – Collabora braucht es nicht.
OFFICE_JWT_SECRET=
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 # produktiv true; false ohne HTTPS davor
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.