docs(office): OIDC ins schlanke Beispiel, Office-Server als Schnipsel

Das Wurzel-Beispiel enthielt keinen einzigen OIDC-Schlüssel – wer sich
über PocketID anmelden will, fand nirgends, wohin damit. Jetzt drin,
samt der Warnung zu OIDC_LINK_BY_USERNAME: vor der ersten Anmeldung
setzen, danach existiert das zweite Konto schon.

Der Office-Container ist aus dem Beispiel raus. Es gibt drei zur Auswahl,
jeder bringt eigene Variablen mit, und man will genau einen – sie stehen
jetzt als anhängbare Schnipsel im README (Collabora, OnlyOffice,
Euro-Office). Alle drei gegen das Beispiel geprüft: docker compose config
läuft durch.

Euro-Office (seit 09.06.2026, in Nextcloud Hub 26) ist ein
OnlyOffice-Fork und läuft über denselben Adapter – OFFICE_PROVIDER
bleibt onlyoffice, nur ein anderes Abbild.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 5 committed 2026-08-24 10:08:16 +02:00
1 parent 13681958dd
commit 16ab6f385b
3 files changed
+145 -44

No files matched your search

+118 -10
View File
@@ -298,18 +298,22 @@ hunderte pro Minute.
---
## Office (Collabora / OnlyOffice)
## Office (Collabora / OnlyOffice / Euro-Office)
Aether ist **WOPI-Host**. Das ist die Schnittstelle, über die Office-Server
sich eine Datei holen und wieder zurückschreiben – **Collabora und OnlyOffice
sprechen beide dieselbe.** Deshalb wird hier *ein* Adapter gebaut und der
Anbieter per `.env` umgeschaltet, statt zweimal dasselbe zu integrieren.
sich eine Datei holen und wieder zurückschreiben – **alle drei sprechen
dieselbe.** Deshalb gibt es *einen* Adapter und einen Schalter in der `.env`,
statt derselben Sache dreimal.
Im Compose-Beispiel ist deshalb **kein** Office-Server enthalten: Jeder bringt
eigene Variablen mit, und man will genau einen. Such dir unten den passenden
Schnipsel und häng ihn an dein `docker-compose.yml`.
### Was dazukommt
| | |
|---|---|
| `OFFICE_PROVIDER` | `collabora`, `onlyoffice` oder leer (aus) |
| `OFFICE_PROVIDER` | `collabora`, `onlyoffice` oder leer (aus) – Euro-Office zählt als `onlyoffice` |
| `OFFICE_URL` | wo das **Backend** den Office-Server erreicht |
| `OFFICE_PUBLIC_URL` | wo der **Browser** ihn erreicht (leer = wie oben) |
| `OFFICE_WOPI_URL` | wo der **Office-Server** Aether erreicht (leer = `PUBLIC_URL`) |
@@ -320,13 +324,110 @@ aufgebaut hat: Im Compose-Netz heißt der Office-Server `collabora`, im Browser
muss dort ein auflösbarer Name stehen, und der Office-Server wiederum erreicht
Aether unter `app:8080` – „localhost" ist aus seinem Container heraus er selbst.
Der Container startet nur mit dem Profil, sonst kostet er Arbeitsspeicher, ohne
gebraucht zu werden:
**Drei Adressen für drei Richtungen.** Das wirkt übertrieben, bis man es einmal
aufgebaut hat – die häufigste Fehlerquelle beim Aufbau.
Alle Schnipsel unten legen den Dienst ins Profil `office`. Ohne das Profil
startet er nicht, und wer kein Office will, gibt kein Gigabyte dafür ab:
```bash
docker compose --profile office up -d
```
### Schnipsel 1: Collabora
```yaml
office:
container_name: aether-office
image: collabora/code:latest
profiles: ["office"]
restart: unless-stopped
environment:
# Wer seine Dateien hier öffnen darf. Punkte maskieren – Collabora liest
# den Wert als regulären Ausdruck.
aliasgroup1: http://app:8080
# ssl.enable – spricht Collabora selbst HTTPS?
# ssl.termination – endet HTTPS davor, an deinem Reverse Proxy?
# Steht termination auf true ohne HTTPS davor, verlangt Collabora eine
# wss://-Verbindung, die es nicht gibt: Der Editor lädt, das Dokument
# bleibt weiß. mount_jail_tree=false spart CAP_SYS_ADMIN.
extra_params: >-
--o:ssl.enable=false
--o:ssl.termination=true
--o:mount_jail_tree=false
dictionaries: de_DE en_US
cap_add: [MKNOD]
networks: [internal]
ports:
- "127.0.0.1:9980:9980"
```
```env
OFFICE_PROVIDER=collabora
OFFICE_URL=http://office:9980
OFFICE_PUBLIC_URL=https://office.example.com
OFFICE_WOPI_URL=http://app:8080
OFFICE_ALLOWED_HOSTS=office
```
### Schnipsel 2: OnlyOffice Docs
```yaml
office:
container_name: aether-office
image: onlyoffice/documentserver:latest
profiles: ["office"]
restart: unless-stopped
environment:
WOPI_ENABLED: "true" # ohne das gibt es kein /hosting/discovery
JWT_ENABLED: "true"
JWT_SECRET: ${OFFICE_JWT_SECRET}
networks: [internal]
ports:
- "127.0.0.1:9980:80" # OnlyOffice lauscht auf 80, nicht auf 9980
```
```env
OFFICE_PROVIDER=onlyoffice
OFFICE_URL=http://office
OFFICE_PUBLIC_URL=https://office.example.com
OFFICE_WOPI_URL=http://app:8080
OFFICE_ALLOWED_HOSTS=office
OFFICE_JWT_SECRET= # mindestens 32 Zeichen
```
### Schnipsel 3: Euro-Office
Seit dem 9. Juni 2026 zu haben und in Nextcloud Hub 26 die Alternative zu
Collabora. Es ist ein OnlyOffice-Fork, und man sieht es an den Variablen: Sie
heißen gleich. Für uns ist es deshalb **derselbe Anbieter** –
`OFFICE_PROVIDER=onlyoffice`, nur ein anderes Abbild.
```yaml
office:
container_name: aether-office
image: ghcr.io/euro-office/documentserver:latest
profiles: ["office"]
restart: unless-stopped
environment:
WOPI_ENABLED: "true"
JWT_ENABLED: "true"
JWT_SECRET: ${OFFICE_JWT_SECRET}
EXAMPLE_ENABLED: "false" # die Beispiel-App gehört nicht ins Netz
ALLOW_PRIVATE_IP_ADDRESS: "true" # es muss app:8080 erreichen
networks: [internal]
ports:
- "127.0.0.1:9980:80"
```
Die `.env` ist dieselbe wie bei OnlyOffice. Rechne mit **5 GB** allein für das
Abbild.
> **Ungeprüft.** Collabora ist hier gemessen worden, den Kreis von Tippen bis
> Speichern eingeschlossen. Die beiden anderen Schnipsel stehen nach ihrer
> Dokumentation und dem gemeinsamen WOPI-Weg, sind auf dieser Anlage aber nie
> gelaufen – für OnlyOffice fehlt schlicht der Arbeitsspeicher.
### Welche Dateien, und wie gut
Bearbeitet wird nur, was auf der **Positivliste** steht:
@@ -401,6 +502,7 @@ Der Office-Server ist der mit Abstand hungrigste Teil dieser Anlage:
|---|---|---|
| **Collabora (CODE)** | ~1 GB im Leerlauf, +100–200 MB je offenem Dokument | LibreOffice-Kern, startet pro Dokument einen Prozess |
| **OnlyOffice Docs** | 2 GB Minimum, **4 GB empfohlen**, dazu Swap | bringt eigenes Postgres, RabbitMQ und Node mit |
| **Euro-Office** | wie OnlyOffice, Abbild rund 5 GB | derselbe Unterbau |
Dazu kommt, was schon läuft: Postgres, Aether und – nicht unterschätzen – die
**Texterkennung**. ocrmypdf und ghostscript nehmen sich bei einem großen Scan
@@ -412,9 +514,15 @@ kurzzeitig mehrere hundert Megabyte.
LibreOffice-Kern, europäisch, deutlich genügsamer.
- **OnlyOffice**, wenn `.docx`/`.xlsx` zwischen Desktop-Office und Web hin und
her wandern. Beste Treue bei OOXML, weil es nativ damit arbeitet.
- **EuroOffice** ist ein junger OnlyOffice-Fork und nutzt **denselben
WOPI-Weg**. Eine Entscheidung für OnlyOffice heute verbaut ihn nicht: Es wäre
ein Wechsel des Containers und eine Zeile in der `.env`.
- **Euro-Office**, wenn du OnlyOffices Treue willst, aber nicht seine Herkunft.
Seit Juni 2026 zu haben, von Nextcloud als Standard eingesetzt, derselbe
WOPI-Weg. Der Haken ist derselbe wie bei OnlyOffice: Hunger nach
Arbeitsspeicher, und das Abbild wiegt rund 5 GB.
**Auf deinen 6 GB ist die Rechnung schnell gemacht.** Postgres, Aether und die
Texterkennung liegen schon darauf; für OnlyOffice oder Euro-Office bliebe zu
wenig. Collabora ist dort die einzige, die trägt – und ein Wechsel später
kostet einen Container und eine Zeile `.env`, nicht mehr.
---