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:
1 parent
13681958dd
commit
16ab6f385b
3 files changed
+145
-44
No files matched your search
@@ -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.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user