docs(env): Beispieldateien kürzen, Erklärungen ins README
Die beiden .env.example zusammen waren 251 Zeilen für 40 Schlüssel – gut gemeint, aber niemand liest einen Absatz pro Variable. Jetzt eine Zeile je Schlüssel (58 + 89), die Begründungen stehen im README unter 'Einstellungen', gebündelt als die sieben Dinge, die nicht beim Start auffallen, sondern später. Dabei durch einen echten Start aus den Beispieldateien gefunden: STORAGE_PATH fehlte, Vorgabe ./data wird im Container zu /app/data, und der Start endete in 'mkdir /app/data: permission denied'. Das Abbild setzt STORAGE_PATH und TMP_PATH jetzt selbst – es kennt seine Verzeichnisse besser als eine Beispieldatei. Eine .env darf weiter überschreiben. Geprüft: jeder Schlüssel, den die Anwendung liest, steht weiterhin in deploy/.env.example; eine frische Instanz startet allein aus den beiden Beispieldateien. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
35ebf609b7
commit
428fd2672c
5 files changed
+195
-186
No files matched your search
@@ -119,6 +119,80 @@ Direkt (ohne Proxy): http://localhost:8080/health
|
||||
|
||||
---
|
||||
|
||||
## Einstellungen
|
||||
|
||||
Zwei Beispieldateien, je nach Zweck:
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| `.env.example` (Wurzel) | das Nötigste zum Betreiben |
|
||||
| `deploy/.env.example` | alle Schalter, auch die optionalen |
|
||||
|
||||
Beide sind knapp gehalten – was dahintersteckt, steht hier.
|
||||
|
||||
### Was schiefgeht, wenn man es falsch setzt
|
||||
|
||||
Diese sieben fallen **nicht** beim Start auf, sondern später und an
|
||||
unerwarteter Stelle. Der Rest hat brauchbare Vorgaben.
|
||||
|
||||
**`DB_HOST=postgres`** – nicht `localhost`. Aus dem Container heraus ist
|
||||
`localhost` er selbst; die Voreinstellung führt zu `migrations failed` beim
|
||||
Start.
|
||||
|
||||
**`DB_PASSWORD`** darf jedes Zeichen enthalten, auch `% @ : /` und
|
||||
Leerzeichen. Es gibt keine Liste erlaubter Zeichen – wer die erst nachschlagen
|
||||
muss, wählt am Ende ein schwächeres Passwort.
|
||||
|
||||
**`PUBLIC_URL`** ist die Adresse, unter der der **Browser** die Cloud sieht,
|
||||
ohne Schrägstrich am Ende. Ein falscher Wert startet klaglos und fällt erst
|
||||
auf, wenn ein Freigabe-Link oder ein OIDC-Rücksprung ins Leere zeigt.
|
||||
|
||||
**`TRUSTED_PROXIES`** entscheidet, wem `X-Forwarded-For` geglaubt wird. Steht
|
||||
hier das Falsche, sieht die Anwendung überall die IP des Proxys – Rate-Limit
|
||||
und Audit-Log werden damit wertlos, ohne dass irgendetwas nach Fehler aussieht.
|
||||
|
||||
**`ADMIN_PASSWORD`** legt beim allerersten Start den Admin an. Danach leeren:
|
||||
Das Konto bleibt, das Passwort stünde sonst dauerhaft in einer Datei.
|
||||
|
||||
**`OIDC_LINK_BY_USERNAME`** verbindet ein bestehendes Konto mit derselben
|
||||
Kennung, statt ein zweites anzulegen. **Vor der ersten Anmeldung setzen** –
|
||||
danach existiert das zweite Konto (`marc2`, leer, ohne Adminrecht) schon, und
|
||||
das Verbinden kommt zu spät. Nur bei einem Anbieter sinnvoll, dessen Konten du
|
||||
selbst anlegst (PocketID, Authentik); bei freier Registrierung wäre es die
|
||||
Übernahme fremder Konten. Verbunden wird ohnehin nur, was noch keine Bindung
|
||||
hat.
|
||||
|
||||
**`DATA_PATH`** ist ein gewöhnliches Verzeichnis auf dem Wirt, kein
|
||||
Docker-Volume – deshalb kommst du per SFTP, rsync oder im Dateimanager daran.
|
||||
Nur lesend anfassen: Wer von Hand hineinschreibt, hat eine Datei, die die
|
||||
Datenbank nicht kennt; die Cloud sieht sie nicht, und der GC räumt sie
|
||||
irgendwann weg. Zum Hineinlegen ist WebDAV der Weg. Dazu `APP_UID`/`APP_GID`
|
||||
aus `id -u` und `id -g`, sonst gehören die Dateien einem Container-Nutzer.
|
||||
|
||||
### Volltextsuche (OCR)
|
||||
|
||||
Standardmäßig an. Fehlen `ocrmypdf`/`tesseract` im Abbild, schaltet sich der
|
||||
Arbeiter beim Start selbst ab und die Cloud läuft ohne Volltext weiter.
|
||||
|
||||
`OCR_MAX_PAGES=50` ist eine Bremse, keine Schikane: Erkennung kostet rund eine
|
||||
Minute je gescannter Seite, und ohne Grenze blockiert ein dickes Handbuch die
|
||||
Warteschlange für alles andere. `OCR_LANGUAGES` kennt `deu` und `eng`; weitere
|
||||
brauchen ein zusätzliches `apk`-Paket im Dockerfile.
|
||||
|
||||
### Office
|
||||
|
||||
Die drei Adressen und ihre Fallstricke stehen weiter unten bei
|
||||
[Office](#office-collabora--onlyoffice--euro-office) – dort, wo auch die
|
||||
Container-Schnipsel liegen.
|
||||
|
||||
### WebDAV
|
||||
|
||||
Läuft unter `/dav/`, kein Schalter nötig. Dein Reverse Proxy muss
|
||||
`PROPFIND`, `MKCOL`, `MOVE` und `COPY` durchreichen – viele Vorlagen erlauben
|
||||
nur `GET`/`POST`, und dann scheitert das Einbinden mit einem `405`.
|
||||
|
||||
---
|
||||
|
||||
## Abbild bauen und veröffentlichen
|
||||
|
||||
```bash
|
||||
|
||||
Reference in new issue
Block a user