Collabora Online mit Docker installieren und sicher an Nextcloud anbinden
Collabora Online (CODE) als Docker-Container hinter Nginx Proxy Manager betreiben und sicher an eine oder mehrere Nextcloud-Instanzen anbinden: Compose-Datei, TLS, WebSocket, WOPI-Allowlist, Updates und Fehlersuche.
Geprüft am 30.09.2026 · für collabora-code 26.04.4.2.1
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Mit Collabora Online bearbeiten Sie Textdokumente, Tabellen und Präsentationen direkt in Nextcloud. Diese Anleitung installiert die Collabora Online Development Edition (CODE) als Docker-Container hinter Nginx Proxy Manager und bindet zwei Nextcloud-Instanzen an. Abgesichert wird über TLS, erlaubte WOPI-Hosts und eine WOPI-Allowlist in Nextcloud, nicht über eine Sperre der Office-Domain: Der Browser lädt Editor und WebSocket direkt vom Collabora-Server.
1. Architektur und Datenfluss verstehen
Bei der Integration sind drei getrennte Verbindungen beteiligt:
| Verbindung | Zweck | Erreichbarkeit |
|---|---|---|
| Browser zu Nextcloud | Anmeldung, Dateiliste und Berechtigungen | Für die Benutzer erreichbar |
| Browser zu Collabora | Editor, JavaScript, CSS und WebSocket | Für die Benutzer zwingend erreichbar |
| Collabora zu Nextcloud | WOPI Abruf und Speichern der Dokumente | Durch eine Allowlist einschränkbar |
Eine Firewall-Regel, die an der Office-Domain nur den Nextcloud-Server zulässt, blockiert deshalb auch die Benutzer; Ergebnis ist ein grauer Editor. Absicherung in zwei Richtungen:
- Collabora akzeptiert nur festgelegte WOPI Hosts:
aliasgroup1,aliasgroup2usw. begrenzen die Nextcloud-Domains, die Dokumente öffnen dürfen. - Nextcloud akzeptiert WOPI Anfragen nur vom Collabora Server:
wopi_allowlistenthält die Quelladresse, die Nextcloud bei WOPI-Anfragen sieht, wie von Nextcloud empfohlen.[3]
2. Voraussetzungen
- Linux-Server mit Docker Engine und Compose-Plugin, siehe S-EDV Anleitung zur Docker Installation.
- Eigene Subdomain für Collabora.
- DNS-A-Record der Subdomain auf die öffentliche IPv4-Adresse des Servers.
- Nginx Proxy Manager auf demselben Docker-Host mit externem Docker-Netz, im Beispiel
npm_network. - Mindestens eine Nextcloud-Instanz mit gültigem TLS-Zertifikat, SSH-Zugriff auf alle Systeme.
- x86_64- oder ARM64-Host mit mindestens 2 CPU-Kernen und 4 GB RAM; die Compose-Datei begrenzt Collabora auf 2 Kerne und 3 GB. Der Bedarf steigt mit Dokumentgröße und gleichzeitigen Sitzungen; messen Sie vor dem Produktivbetrieb mit realistischen Dokumenten.
Beispielwerte vorab prüfen
| Platzhalter | Beispiel |
|---|---|
| Office-Domain | office.example.net |
| Nextcloud-Domains | cloud1.example.net, cloud2.example.net (optional) |
| Quelladresse Collabora | 203.0.113.10 |
| Proxy-Netz | npm_network |
3. DNS und Docker Netzwerk prüfen
Die Office-Domain muss auf den Reverse Proxy zeigen; dig und die ausgehende Adresse (bei NAT ggf. abweichend) sollten übereinstimmen:
dig +short office.example.net A
curl -4 -s https://ifconfig.me
printf '\n'Prüfen Sie dann das Docker-Netz von Nginx Proxy Manager:
docker network inspect npm_networkAbweichenden Netznamen ermitteln:
docker ps --format '{{.Names}}\t{{.Image}}'
docker inspect NPM_CONTAINER --format '{{range $name, $config := .NetworkSettings.Networks}}{{$name}}{{"\n"}}{{end}}'Ersetzen Sie NPM_CONTAINER durch den tatsächlichen Containernamen.
Verifizieren: dig liefert die Adresse des Proxys, docker network inspect npm_network gibt JSON statt eines Fehlers aus.
4. Collabora Online mit Docker Compose installieren
4.1 Arbeitsverzeichnis anlegen
sudo mkdir -p /opt/docker/collabora
sudo chown "$USER":"$USER" /opt/docker/collabora
cd /opt/docker/collabora4.2 Kennwort für die Administrationskonsole erzeugen
Ein hexadezimales Kennwort vermeidet Zeichen wie $, die Docker Compose als Variable liest:
openssl rand -hex 244.3 Compose Datei erstellen
Speichern Sie die folgende Datei als /opt/docker/collabora/docker-compose.yml und passen Sie Domains, Kennwort und bei Bedarf die Ressourcengrenzen an.
services:
collabora:
image: collabora/code:26.04.4.2.1
container_name: collabora
restart: unless-stopped
cap_add:
- MKNOD
mem_limit: 3g
memswap_limit: 3g
cpus: 2.0
pids_limit: 512
ulimits:
nofile:
soft: 65536
hard: 65536
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
environment:
aliasgroup1: 'https://cloud1\.example\.net:443'
aliasgroup2: 'https://cloud2\.example\.net:443'
server_name: 'office.example.net'
dictionaries: 'de_DE en_US'
username: 'admin'
password: 'HIER_DAS_ERZEUGTE_KENNWORT_EINTRAGEN'
extra_params: >-
--o:ssl.enable=false
--o:ssl.termination=true
--o:net.proto=IPv4
--o:logging.level=warning
--o:num_prespawn_children=4
networks:
- npm_network
networks:
npm_network:
external: trueDas offizielle Image heißt collabora/code.[1]
| Einstellung | Wirkung |
|---|---|
server_name | Setzt den öffentlich verwendeten Hostnamen des Office Servers. |
ssl.enable=false | Collabora spricht innerhalb des Docker Netzwerks unverschlüsseltes HTTP. |
ssl.termination=true | TLS endet am Proxy, Collabora erzeugt externe HTTPS-Adressen.[2] |
aliasgroup1 | Erlaubt die erste Nextcloud Domain als WOPI Host. |
aliasgroup2 | Zweite Nextcloud-Domain, bei einer Instanz streichen. |
mem_limit | Obergrenze für den Arbeitsspeicher, passend zum Host wählen. |
Kein ports Abschnitt | Port 9980 ist nur im gemeinsamen Docker-Netz erreichbar. |
Die Punkte in den Domains sind mit Backslash maskiert, weil Collabora Aliasgruppen als regulären Ausdruck auswertet.
Image-Tag: Feste Version 26.04.4.2.1 (Stand 24. September 2026, amd64 und arm64) statt latest, damit Updates und Rollbacks kontrolliert bleiben.
4.4 Konfiguration validieren
cd /opt/docker/collabora
docker compose configVerifizieren: Die Ausgabe enthält die vollständigen Aliasgruppen, den richtigen server_name und das Kennwort unverändert (keine Warnung zu nicht gesetzten Variablen).
4.5 Container starten
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100 collaboraSuchen Sie im Log nach den erlaubten WOPI-Hosts und der Bereitschaft auf Port 9980:
docker compose logs collabora | grep -E 'trusted WOPI|Ready to accept connections|port 9980'Verifizieren: docker compose ps zeigt Up ohne fortlaufende Neustarts. Logtexte ändern sich zwischen Versionen; maßgeblich ist der Discovery-Test in Abschnitt 5.
5. Internen Zugriff aus Nginx Proxy Manager testen
Ermitteln Sie den Namen des Proxy-Containers:
docker ps --format '{{.Names}}\t{{.Image}}' | grep -Ei 'nginx|proxy|npm'Discovery-Endpunkt aus dem Container abrufen:
docker exec NPM_CONTAINER \
curl -sS -o /dev/null -w '%{http_code}\n' \
http://collabora:9980/hosting/discoveryVerifizieren: Ausgabe 200. Andernfalls liegen die Container meist nicht im selben Docker-Netz. Fehlt curl im Proxy-Container, testen Sie mit docker run --rm --network npm_network curlimages/curl:8.16.0 -s -o /dev/null -w '%{http_code}\n' http://collabora:9980/hosting/discovery.
6. Nginx Proxy Manager konfigurieren
Legen Sie in Nginx Proxy Manager unter Hosts > Proxy Hosts einen neuen Eintrag an.
6.1 Details
| Feld | Wert |
|---|---|
| Domain Names | office.example.net |
| Scheme | http |
| Forward Hostname | collabora |
| Forward Port | 9980 |
| Cache Assets | Deaktiviert |
| Block Common Exploits | Aktiviert |
| Websockets Support | Aktiviert |
Das interne Schema ist bewusst http, weil TLS am Proxy endet. Mit https träfe TLS-Verkehr auf den unverschlüsselten Port 9980.
6.2 TLS Zertifikat
- Let's-Encrypt-Zertifikat anfordern oder vorhandenes wählen.
- Force SSL aktivieren.
- HTTP/2 Support aktivieren.
6.3 Erweiterte Proxy Einstellungen
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
client_max_body_size 0;
proxy_buffering off;
proxy_set_header Host $host;Die langen Zeitüberschreitungen verhindern, dass der Proxy lange Bearbeitungssitzungen beendet. Die von Collabora dokumentierten Weiterleitungen für Discovery, Browser-Ressourcen und WebSocket[2] deckt Nginx Proxy Manager über den Proxy Host mit aktivierter WebSocket-Unterstützung ab.
Verifizieren: Der Proxy Host steht in der Liste auf Online, das Zertifikat ist gültig.
7. Öffentliche Endpunkte testen
curl -fsS https://office.example.net/hosting/discovery | head -n 3
curl -fsS https://office.example.net/hosting/capabilitiesDer Discovery-Endpunkt liefert XML, das bei korrekter TLS-Terminierung die Zone external-https enthält:
curl -fsS https://office.example.net/hosting/discovery \
| grep -o 'net-zone name="[^"]*"' \
| sort -uVerifizieren: Die Ausgabe enthält external-https. Erscheint nur external-http, prüfen Sie ssl.termination, den Host-Header und die Proxy-Konfiguration.
8. Nextcloud anbinden
Die App richdocuments verbindet Nextcloud mit dem Collabora-Server; die gebündelte CODE-App richdocumentscode ist nicht nötig.
8.1 Tatsächliche WOPI Quelladresse ermitteln
In die Allowlist gehört die Adresse, die Nextcloud als Quelle der WOPI-Anfragen sieht; bei NAT oder internem Routing weicht sie von 203.0.113.10/32 ab. Anhaltspunkt ist die ausgehende IPv4-Adresse des Collabora-Hosts:
curl -4 -s https://ifconfig.me
printf '\n'Bestätigen Sie die Adresse nach dem ersten Öffnungsversuch in den Webserver-Logs oder in nextcloud.log.
8.2 Erste Nextcloud Instanz
Im Beispiel liegt Nextcloud unter /var/www/cloud1.example.net und gehört dem Systembenutzer nextcloud1. Passen Sie Pfad, Benutzer und PHP-Befehl an.
cd /var/www/cloud1.example.net
sudo -u nextcloud1 php occ status
sudo -u nextcloud1 php occ app:install richdocuments
sudo -u nextcloud1 php occ app:enable richdocuments
sudo -u nextcloud1 php occ config:app:set richdocuments wopi_url \
--value='https://office.example.net'
sudo -u nextcloud1 php occ config:app:set richdocuments public_wopi_url \
--value='https://office.example.net'
sudo -u nextcloud1 php occ config:app:set richdocuments wopi_allowlist \
--value='203.0.113.10/32'
sudo -u nextcloud1 php occ richdocuments:activate-configWar bisher die eingebaute CODE-App im Einsatz, entfernen Sie sie:
sudo -u nextcloud1 php occ app:disable richdocumentscode
sudo -u nextcloud1 php occ app:remove richdocumentscode8.3 Zweite Nextcloud Instanz
Führen Sie denselben Block wie in 8.2 im Verzeichnis /var/www/cloud2.example.net als Benutzer nextcloud2 aus.
Führen Sie occ immer als Eigentümer der Installation aus, nicht als root, sonst entstehen Dateien mit falschem Eigentümer. Bei mehreren PHP-Versionen nutzen Sie den Befehl der Version, die auch der Webserver verwendet, etwa php8.3.
Verifizieren: richdocuments:activate-config endet ohne Fehler.
9. Integration vollständig verifizieren
9.1 Gespeicherte Nextcloud Einstellungen prüfen
sudo -u nextcloud1 php occ config:app:get richdocuments wopi_url
sudo -u nextcloud1 php occ config:app:get richdocuments public_wopi_url
sudo -u nextcloud1 php occ config:app:get richdocuments wopi_allowlistDie Ausgaben entsprechen den gesetzten Werten.
9.2 Funktionstest im Browser
- In Nextcloud ein kleines ODT-Dokument anlegen und öffnen.
- Text eingeben, Dokument schließen.
- Dokument erneut öffnen: Die Änderung ist gespeichert.
- Für gemeinsames Bearbeiten den Test mit einem zweiten Benutzer wiederholen.
9.3 Browser Prüfung bei Fehlern
Die Entwicklertools des Browsers zeigen unter Network fehlgeschlagene Anfragen an office.example.net. WebSocket-Verbindungen müssen wss:// nutzen; ws:// auf einer HTTPS-Seite deutet auf falsche TLS-Terminierung oder externe URLs.
Verifizieren: Dokument öffnet, speichert und lädt die Änderung erneut; im Netzwerk-Tab keine roten Einträge.
10. Eine weitere Nextcloud Instanz hinzufügen
Ergänzen Sie eine weitere Aliasgruppe:
aliasgroup3: 'https://cloud3\.example\.net:443'Prüfen Sie die Konfiguration und erstellen Sie den Container neu:
cd /opt/docker/collabora
docker compose config
docker compose up -d --force-recreate
docker compose logs --tail=100 collaboraDas trennt offene Sitzungen. Führen Sie danach auf der neuen Instanz den Block aus 8.2 aus.
Verifizieren: Öffnungs- und Speichertest wie in 9.2 auf der neuen Instanz.
11. Betrieb und Monitoring
11.1 Administrationskonsole
Die Administrationskonsole liegt unter:
https://office.example.net/browser/dist/admin/admin.htmlSie ist durch die Anmeldedaten geschützt; am Proxy können Sie den Pfad zusätzlich auf eine Verwaltungsadresse oder ein VPN begrenzen. Ohne Bedarf deaktivieren Sie sie in extra_params:
--o:admin_console.enable=false11.2 HTTP Monitoring
Ein HTTP-Monitor prüft den Capabilities-Endpunkt:
- URL:
https://office.example.net/hosting/capabilities - Erwarteter HTTP Status:
200 - Optionales Suchwort:
productName
Den Aufbau beschreibt Uptime Kuma mit Docker und Nginx Proxy Manager installieren.
11.3 Logs
cd /opt/docker/collabora
docker compose logs -f --tail=100 collaboraDen Pfad des Nextcloud-Logs zeigt occ:
sudo -u nextcloud1 php occ config:system:get logfile11.4 Updates kontrolliert durchführen
Ein Update trennt alle geöffneten Dokumente; aktualisieren Sie im Wartungsfenster und ohne automatische Update-Werkzeuge. Tragen Sie zuerst das neue Tag in docker-compose.yml ein:
cd /opt/docker/collabora
docker compose pull
docker compose up -d
docker compose ps
curl -fsS https://office.example.net/hosting/capabilitiesSchlägt die neue Version fehl, setzen Sie das vorherige Tag wieder ein und führen erneut docker compose up -d aus.
12. Sicherheitshinweise
- Jede Nextcloud-Domain steht als eigene Aliasgruppe in der Compose-Datei, die Allowlist enthält nur die tatsächlichen Quelladressen der Collabora-Server.
- Port 9980 ist nicht am Host veröffentlicht.
- Die Administrationskonsole hat ein eigenes starkes Kennwort oder ist deaktiviert.
- Die Compose-Datei mit dem Kennwort ist nur für den Eigentümer lesbar:
chmod 600 /opt/docker/collabora/docker-compose.ymlÜbernehmen Sie Härtungen wie ein schreibgeschütztes Dateisystem oder no-new-privileges nicht ungeprüft: Collabora erzeugt Laufzeitverzeichnisse und nutzt Hilfsprozesse zur Dokumentisolation. Testen Sie jede Härtung mit Öffnen, Bearbeiten, Speichern und gemeinsamem Arbeiten.
13. Troubleshooting
| Symptom | Wahrscheinliche Ursache | Prüfung und Lösung |
|---|---|---|
| Grauer oder leerer Editor | WebSocket-Support fehlt oder Office-Domain für den Browser nicht erreichbar | WebSocket-Support aktivieren, Netzwerk-Tab und DNS prüfen. |
| Abbruch nach kurzer Inaktivität | Proxy-Timeouts zu kurz | proxy_read_timeout und proxy_send_timeout setzen. |
| Zugriff beim Öffnen verweigert | Domain fehlt in Aliasgruppe oder Ausdruck falsch | Gerenderte Compose Konfiguration und Collabora Logs prüfen. |
| Editor lädt, Speichern schlägt fehl | Allowlist enthält nicht die sichtbare Quelladresse | Logs prüfen, richtige Adresse als CIDR eintragen. |
activate-config schlägt fehl | Nextcloud erreicht Discovery nicht | DNS, Zertifikat, Firewall und /hosting/discovery vom Nextcloud-Host prüfen. |
Looks like SSL/TLS traffic on plain http port | Proxy spricht HTTPS mit Port 9980 | Scheme auf http setzen. |
| Mixed Content im Browser | Collabora erzeugt HTTP-Adressen | ssl.termination=true, Host Header und Discovery Ausgabe prüfen. |
NPM erreicht collabora:9980 nicht | Container in unterschiedlichen Docker-Netzen | Netze mit docker inspect vergleichen. |
| Compose meldet eine nicht gesetzte Variable | $ im Kennwort als Variable gelesen | Kennwort ohne $ nutzen oder als $$ maskieren.[4] |
Kompakter Diagnoseblock
cd /opt/docker/collabora
docker compose ps
docker compose logs --tail=100 collabora
docker network inspect npm_network
curl -fsS https://office.example.net/hosting/discovery | head -n 3
curl -fsS https://office.example.net/hosting/capabilities14. Kapazität und Lizenz vor dem Kundeneinsatz prüfen
CODE ist die Entwicklungsedition von Collabora Online und richtet sich an kleine Installationen, Tests und privaten Einsatz.[1] Prüfen Sie vor geschäftlichem Einsatz für mehrere Kunden Nutzungsbedingungen und Kapazitätsgrenzen beim Hersteller. Alle angebundenen Instanzen teilen die Ressourcen des Collabora-Servers.
15. Schnellreferenz
cd /opt/docker/collabora
docker compose restart collabora # Neustart ohne Konfigurationsänderung
docker compose config && docker compose up -d --force-recreate # Änderung übernehmenDiagnose: Block aus Abschnitt 13 und 9.1.
Passende Anleitungen auf S-EDV
- Docker installieren: Grundlage für den Betrieb von Collabora als Container.
- Uptime Kuma mit Docker und Nginx Proxy Manager installieren: Den öffentlichen Collabora Endpunkt überwachen.


