Die Adresse im <script>-Tag stand fest im Quelltext, waehrend die CSP aus HONEYBAR_ORIGIN kam. Wer die Leiste woanders betreibt, bekam genau den Widerspruch: die CSP erlaubte den eigenen Ursprung, geladen wurde der alte. Beides speist sich jetzt aus derselben Variablen. Ist sie leer, nimmt vite.config.ts den Tag ganz heraus — sonst bliebe src="/honeybar/honeybar.js" stehen und der Service Worker beantwortete das mit index.html. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
125 lines
7.1 KiB
Bash
125 lines
7.1 KiB
Bash
# Aether – alle Schalter. cp deploy/.env.example deploy/.env
|
||
#
|
||
# Zwei Fallen beim Bearbeiten:
|
||
# $ im Wert → als $$ schreiben, sonst schneidet Compose ab
|
||
# Kommentar hinter einem LEEREN Wert → der Kommentar wird zum Wert
|
||
# 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
|
||
# Frühere Fassungen je Datei. Greift nur bei eingeschaltetem „Keep versions".
|
||
MAX_VERSIONS_KEPT=5
|
||
# 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 # Adresse, nicht der Name
|
||
# 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
|
||
# Beschriftung des Knopfes auf der Anmeldeseite.
|
||
# OIDC_BUTTON_LABEL=Anmelden mit PocketID
|
||
|
||
# ── HoneyOS-Leiste ────────────────────────────────────────────────────────────
|
||
# Ursprung, von dem die Leiste geladen wird. Landet an zwei Stellen: beim
|
||
# Bauen im <script>-Tag der index.html, zur Laufzeit in der CSP
|
||
# (script-src + connect-src). Leer = keine Leiste, CSP so eng wie ohne sie.
|
||
#
|
||
# Wird beim **Bauen** eingesetzt — nach einer Änderung also
|
||
# `docker compose build app`, ein Neustart genügt nicht.
|
||
HONEYBAR_ORIGIN=https://honeyos.example.com
|
||
# Schlüssel, mit dem sich die Leiste die App-Liste holt. Nötig, weil HoneyOS auf
|
||
# einer anderen Site liegt als Aether und der Browser die HoneyOS-Sitzung dann
|
||
# nicht mitschickt. Muss zu HONEYOS_APPS_KEY drüben passen.
|
||
#
|
||
# Wird beim **Bauen** in die index.html eingesetzt — nach einer Änderung also
|
||
# `docker compose build app`, ein Neustart genügt nicht.
|
||
HONEYBAR_KEY=
|
||
|
||
# ── 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
|
||
# collabora | onlyoffice (auch Euro-Office)
|
||
OFFICE_PROVIDER=
|
||
# Backend → Office. Collabora lauscht auf 9980, OnlyOffice/Euro-Office auf 80.
|
||
OFFICE_URL=
|
||
# Browser → Office; leer = wie OFFICE_URL
|
||
OFFICE_PUBLIC_URL=
|
||
# Office → Aether; leer = PUBLIC_URL.
|
||
# Weder localhost noch der veröffentlichte Port – beides scheitert.
|
||
OFFICE_WOPI_URL=
|
||
# Gegen SSRF; der Host aus OFFICE_URL zählt immer dazu.
|
||
OFFICE_ALLOWED_HOSTS=
|
||
# Nur OnlyOffice/Euro-Office, mind. 32 Zeichen.
|
||
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 # 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.
|