Der Office-Container entstand nie, ohne Fehlermeldung: profiles: [office]
startet nur mit --profile office, und in Portainer/Dockge/Komodo gibt es
diesen Schalter gar nicht.
COMPOSE_PROFILES=office in der .env wirkt genauso und braucht keine
Kommandozeile – Compose liest die Variable fuer sich selbst. Gemessen mit
den echten Dateien: ohne die Zeile 'app postgres', mit ihr
'app office postgres'.
Steht jetzt in beiden .env.example, beiden Compose-Kopfzeilen, README und
TESTING.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Die README-Schnipsel fuer OnlyOffice und Euro-Office verlangen
OFFICE_JWT_SECRET, in den Beispieldateien stand es nicht – Compose warnt
dann nur 'variable is not set' und der Dokumentenserver laeuft mit leerem
Geheimnis.
Dazu praeziser, wo es bei OnlyOffice/Euro-Office nach Aktenlage haken
wuerde: IP-Filter des Integrators und Proof-Key-Signatur. Beides
ungeprueft, aber besser benannt als verschwiegen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nachfrage aus der Praxis: printenv zeigt nach dem Escapen ein einzelnes $,
und das sah nach einem zweiten Fehler aus. Es ist das gewuenschte Ergebnis –
angemeldet wird mit dem einfachen $. Dazu der Hinweis, dass einfache
Anfuehrungszeichen dasselbe ohne Verdopplung leisten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ein $ im Wert wird von Docker Compose als Variable gelesen und schneidet
ab: Sicher$Passwort2026 kommt als Sicher an (gemessen). Angelegt wird ein
Konto mit einem Passwort, das niemand kennt; die Anmeldung scheitert mit
'invalid credentials', obwohl alles richtig eingetippt ist. Die Datenbank
laeuft dabei weiter, weil Postgres denselben abgeschnittenen Wert bekommt.
Der Start nennt jetzt die Laenge des Passworts (nicht den Wert) und warnt
unter 12 Zeichen mit dem Hinweis auf $$. Ohne diese Zahl war der Fehler
von aussen nicht zu sehen: Compose meldet zwar 'variable is not set', aber
auf stderr beim up, nicht im Container-Log.
Escape-Tabelle in README und beiden .env.example. Ein Backslash hilft
nicht.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Der Port war fest auf 127.0.0.1 gebunden. Richtig, solange ein Reverse
Proxy davorsteht – beim Ausprobieren in einer Testumgebung heißt es aber
ERR_CONNECTION_REFUSED, sobald man über die IP zugreift, und nichts im
Log deutet darauf hin: Der Kernel lehnt ab, bevor die Anwendung etwas
davon sieht.
APP_BIND ist jetzt eine Variable, Vorgabe bleibt 127.0.0.1. Gilt für die
App und für die Office-Container in allen drei README-Schnipseln.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>
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>
Das Abbild lag zuerst unter gitea…/honey/aether – also beim Nutzer statt
bei der Organisation, unter der die anderen Docker-Projekte liegen. Neuer
Pfad: gitea…/docker/aether, gleicher Digest. Das alte Paket ist gelöscht.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Go-Backend (chi, pgx, golang-migrate) + React/TS-Frontend als PWA.
Enthalten: Auth inkl. OIDC, Dateien mit Versionen und Papierkorb,
Freigaben (Links + intern), WebDAV, Gruppenordner, Admin/Theming,
Volltextsuche mit OCR, eigener PDF-Betrachter und WOPI-Office
(Collabora/OnlyOffice).
Nicht im Repo: deploy/.env (Sitzungsschlüssel, DB- und Admin-Passwort)
sowie alle Daten- und Build-Verzeichnisse – siehe .gitignore.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>