Collabora Office Online eignet sich perfekt für die Integration in Nextcloud. Wie ihr Nextcloud in wenigen Minuten installiert, zeige ich euch hier. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.
Datum | Änderungen |
---|---|
05.09.2020 | Erstellung dieser Anleitung |
30.12.2020 | Kleinigkeiten verbessert |
05.01.2022 | Bilder + Link zum Admin Interface angepasst. Danke @Uwe |
03.04.2022 | Nextcloud App + Bild angepasst |
30.05.2022 | Nextcloud App wurde umbenannt. |
26.07.2022 | Nextcloud App wurde erneut umbenannt |
13.01.2023 | Update Traefik Labels, Seafile Integration hinzugefügt (Danke an @eltonit) |
29.05.2023 | Anpassung für neue Traefik Anleitung |
14.12.2023 | Docker Compose angepasst für mehrere Domains (aliasgroup). Danke @rebel2k |
Als Grundlage meiner Anleitung dient die offizielle Collabora Office Anleitung für Docker und dieser Beitrag.
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/collabora/
2. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an.
nano /opt/containers/collabora/docker-compose.yml
Inhalt
version: '3.3' services: collabora: image: collabora/code container_name: collabora_app networks: - proxy cap_add: - MKNOD environment: #- aliasgroup1=https://cloud.euredomain.de #Gebt hier eure Seafile Domain an #- aliasgroup2=https://nextcloud.euredomain.de #Gebt hier eure Nextcloud Domain an - username=admin #Nutzername eingeben - password=test #Passwort eingeben - "extra_params=--o:ssl.enable=false --o:ssl.termination=true" restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.collabora.entrypoints=websecure" - "traefik.http.routers.collabora.rule=(Host(`collabora.euredomain.de`))" - "traefik.http.routers.collabora.tls=true" - "traefik.http.routers.collabora.tls.certresolver=http_resolver" - "traefik.http.routers.collabora.service=collabora" - "traefik.http.services.collabora.loadbalancer.server.port=9980" - "traefik.docker.network=proxy" - "traefik.http.routers.collabora.middlewares=default@file" networks: proxy: external: true
Notwendige Anpassungen:
- Collabora Office Nutzername ändern
- Collabora Office Passwort ändern
- Nextcloud / Seafile Domain anpassen bzw. “#” entfernen
- eure Domain bei Traefik anpassen (“collabora.euredomain.de”)
3. Collabora Office starten
Den Server startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/collabora/docker-compose.yml up -d
4. Dienst testen
Nun testen wir, ob der Dienst ordnungsgemäß funktioniert. Dazu gebt ihr folgendes in euren Browser ein:
https://collabora.euredomain.de
Nun solltet ihr folgendes sehen:
5. Admin Interface starten
Wenn der Dienst funktioniert, dann könnt ihr euch mit euren Nutzerdaten im Admin Interface anmelden. Die Nutzerdaten habt ihr in dem Docker File festgelegt.
Um das Interface zu starten gebt ihr folgendes ein:
https://collabora.euredomain.de/browser/dist/admin/admin.html
Nun solltet ihr folgendes sehen:
Im Kapitel 6 erfährt ihr nun, wie ihr Collabora in Nextcloud integriert. Kapitel 7 beschreibt die Integration von Collabora in Seafile.
6. Collabora Office in Nextcloud integrieren
Nun zeige ich euch, wie ihr mit wenigen Klicks Collabora Office in Nextcloud integrieren könnt. Wenn ihr noch kein Nextcloud Server habt, so könnt ihr in hier innerhalb weniger Minuten erstellen.
Ihr geht nun auf euren Nextcloud Server und logt euch dort mit eurem Admin Account ein.
Nun klickt ihr auf “Apps”.
Wählt nun “Büro & Text” aus.
Wählt nun “Collabora Online” oder “Nextcloud Office” aus. Es handelt sich um das selbe Programm. Irgendwie wechselt sich regelmäßig der Name.
Anschließend geht ihr in die “Einstellungen”.
Hier scrollt ihr auf der linken Seite so weit nach unten, bis ihr “Nextcloud Office” findet.
Nun gebt ihr dort einfach euren Collabora Online Server an. Gebt dort einfach: https://collabora.euredomain.de ein
Nun klickt ihr auf “Save” und es sollte ein grüner Haken erscheinen.
Wenn ihr nun ein Dokument in Nextcloud erstellt, wird sich Collabora Online starten.
7. Collabora in Seafile integrieren
Dazu solltet ihr Seafile nach dieser Anleitung bereits installiert haben. Anschließend öffnet ihr folgende Datei:
nano /opt/containers/seafile/seafile-data/seafile/conf/seahub_settings.py
Hier fügt ihr am Ende folgendes hinzu:
# Collabora Integration OFFICE_SERVER_TYPE = 'CollaboraOffice' ENABLE_OFFICE_WEB_APP = True OFFICE_WEB_APP_BASE_URL = 'https://collabora.euredomain.de/hosting/discovery' WOPI_ACCESS_TOKEN_EXPIRATION = 30 * 60 # seconds OFFICE_WEB_APP_FILE_EXTENSION = ('odp', 'ods', 'odt', 'xls', 'xlsb', 'xlsm', 'xlsx','ppsx', 'ppt', 'pptm', 'pptx', 'doc', 'docm', 'docx') ENABLE_OFFICE_WEB_APP_EDIT = True OFFICE_WEB_APP_EDIT_FILE_EXTENSION = ('odp', 'ods', 'odt', 'xls', 'xlsb', 'xlsm', 'xlsx','ppsx', 'ppt', 'pptm', 'pptx', 'doc', 'docm', 'docx')
Noch anzupassen:
- OFFICE_WEB_APP_BASE_URL = die Domain eures Collabora Servers
Nun müsst ihr Seafile neu starten.
docker compose -f /opt/containers/seafile/docker-compose.yml down docker compose -f /opt/containers/seafile/docker-compose.yml up -d
Anschließend könnt ihr eine neue Datei erstellen und in diese ganz bequem schreiben:
8. Quellen
https://www.collaboraoffice.com/code/docker/
Die Anleitung funktioniert ausgezeichnet. Beim Einsatz ist mir jedoch aufgefallen, dass ja eventuell die benötigten Schriftarten gar nicht vorhanden sind. Daher habe ich nach einer Lösung gesucht und gefunden. Diese sieht so aus:
Die gewünschten Schriftarten dürfen vom Typ OpenType (.otf) oder TrueType (.ttf) sein. Dafür werden zwei verschiedene Ordner benötigt. Sie werden mit dem folgenden Befehl erstellt (evtl. Pfad anpassen):
mkdir /opt/containers/collabora/fonts/{truetype,opentype}
docker-compose.yml anpassen:
services:
...
collabora:
...
volumes:
- ./collabora-fonts/opentype:/usr/share/fonts/opentype/custom
- ./collabora-fonts/opentype:/opt/cool/systemplate/usr/share/fonts/opentype/custom
- ./collabora-fonts/truetype:/usr/share/fonts/truetype/custom
- ./collabora-fonts/truetype:/opt/cool/systemplate/usr/share/fonts/truetype/custom
...
Nach dieser Anpassung muss der Container einmalig mit dem Parameter –force-recreate neu gestartet werden:
docker compose down && docker compose up -d --force-recreate
Beispiel für eine Installation einer Schriftfamilie:
Schrift Roboto von Google https://fonts.google.com/specimen/Roboto
Einfach herunterladen und entpacken. Die ZIP-Datei enthält mehrere Font-Dateien:
Roboto
├── LICENSE.txt
├── Roboto-BlackItalic.ttf
├── Roboto-Black.ttf
├── Roboto-BoldItalic.ttf
├── Roboto-Bold.ttf
├── Roboto-Italic.ttf
├── Roboto-LightItalic.ttf
├── Roboto-Light.ttf
├── Roboto-MediumItalic.ttf
├── Roboto-Medium.ttf
├── Roboto-Regular.ttf
├── Roboto-ThinItalic.ttf
└── Roboto-Thin.ttf
Jede Schriftfamilie muss in einem eigenen Ordner liegen, auch wenn nur eine Schrift-Datei vorhanden sein sollte. Da es sich um eine TrueType-Schrift handelt (erkennt man an der Endung .ttf), muss ein Ordner “Roboto” in TrueType erstellt werden:
mkdir /opt/containers/collabora/fonts/truetype/Roboto
Jetzt einfach alle entpackten Dateien hineinkopieren.
Um die Schriften einzulesen muss der Container neu gestartet werden:
docker compose down && docker compose up -d
Ab sofort steht die Schriftart im Schriftauswahl-Dropdown zur Verfügung und kann genutzt werden.
Hallo,
erst einmal vielen Dank für die exzellenten Anleitungen, die mir sehr weitergeholfen haben. Ich habe es geschafft, Nextcloud und Collabora Office hinter einem Traefik-Proxy zu installieren, so dass alles funktioniert und ich Dokumente online editieren kann. Eine Sache bereitet mir aber Kopfzerbrechen:
In der Nextcloud-Administration werde ich aufgefordert, die WOPI-Erlaubnisliste zu befüllen: “Du hast die Erlaubnisliste für WOPI-Anforderungen nicht konfiguriert.”
Tue ich dies, scheint einzig die externe IP meines Servers (eine dynamische IP) ein Wert zu sein, bei dem sich das CODE auch tatsächlich starten lässt. Trage ich die IP-Adresse des Docker-Proxy-Netzwerks ein (172.30.0.0/16), erhalte ich die Fehlermeldung “Laden des Dokuments fehlgeschlagen. WOPI::CheckFileInfo failed”. Was mache ich falsch bzw. was muss in die WOPI-Erlaubnisliste eingetragen werden? Kann hier jemand helfen?
Zur Info: Nextcloud und Collabora wurden mit zwei verschiedenen Docker-Compose-Files gestartet (wie in der Anleitung) und laufen auf demselben Docker-Host. Sie sind über das Proxy-Netzwerk von Traefik miteinander verbunden.
Vielen Dank und viele Grüße
Volker
Hi zusammen,
irgendwie bekomme ich Collabora und Seafile nicht ans laufen.
Ich meine ich habe mich strickt an die Anleitung hier und Seafile gehalten.
Sobald ich in Seafile ein Office Dokument erstelle und das editieren will, bekomme ich diese Fehlermeldung (siehe Screenshot) angezeigt.
Den unter
OFFICE_WEB_APP_BASE_URL = ‘https://collabora.euredomain.de/hosting/discovery’
gepassten Link kann ich aufrufen, es sieht aus wie ein zurückgegebenes XML file. Ist das so korrekt?
Hallo bei mir funktioniert diese Anleitung leider nicht
Ich bekomme die Verbindung zwischen Nextcloud und Collabora nicht hin.
Das Collabora Admin Panel erreiche ich und es der Server meldet OK.
Collabora und Nextcloud laufen auf demselben Docker-Host
bei mir wird angezeigt …. Der Server wurde heruntergefahren, bitte laden Sie die Seite neu. habt ihr einen rat
Hallo zusammen,
hat wunderbar funktioniert- nur bekomme ich die Anzeigesprache nicht auf Deutsch umgestellt. Kann das wer nachvollziehen bzw mir Tipps geben?
Danke
Hallo Roland,
ich habe es gerade getestet. Die Anleitung funktioniert bei mir.
Wo genau bekommt du die 404?
Hallo Christian,
habs nochmal komplett neu aufgesetzt du hast recht läuft auch bei mir jetzt… vllt einfach kaputt gespielt ^^
Dank
Viele Grüße
Ich hab jetzt bisschen eine weile getestet ich kriege es mit NC24 nicht ans laufen den Server kann ich verbinden sieht auch alles gut aus soweit aber Dokumente gehen nicht auf. HIer mal ein Blick in mein Log: https://pastebin.com/D950AFSK Vielen Dank für die Hilfe.
Hallo Lars, Danke für die Info. Die 443 ist gesetzt. Auf die Collabora Admin Console komme ich ja. Da steht zunächst ertsmal 0 User angemeldet. In Nextcloud ist die Einstellung zu Collabora mit grün bestätigt. Nur öffnen kann ich kein Dokument. Immer nur die Meldung. “Document loading failed; Nextcloud Office konnte nicht geladen werden.” Anbei der Auszug aus dem Container Log. Ich habe allerdings beides Nextcloud und Collabora auf einem Rechner/Server laufen. Raspi4 8GB, liegt es daran. Danke schon mal.
wsd-00001-00037 2022-04-16 21:29:17.510798 +0000 [ websrv_poll ] WRN #31 is shutting down but 64 bytes couldn’t be flushed and still remain in the output buffer.| ./net/WebSocketHandler.hpp:795
wsd-00001-00037 2022-04-16 21:29:17.510843 +0000 [ websrv_poll ] ERR #31: attempted to remove: 1094 which is > size: 0 clamped to 0| ./net/Socket.hpp:1223
wsd-00001-00037 2022-04-16 21:29:17.510900 +0000 [ websrv_poll ] WRN Ignoring attempted read from 31| ./net/Socket.hpp:1102
wsd-00001-00037 2022-04-16 21:29:17.510936 +0000 [ websrv_poll ] ERR #31: Socket write returned -1 (EPIPE: Broken pipe)| ./net/Socket.hpp:1401
wsd-00001-00037 2022-04-16 21:29:18.127228 +0000 [ websrv_poll ] WRN DocBroker with docKey [https://nextcloud.meineadresse.duckdns.org:443/index.php/apps/richdocuments/wopi/files/2228_oc1tp2jxo68z] is unloading. Rejecting client request to load.| wsd/COOLWSD.cpp:2671
wsd-00001-00079 2022-04-16 21:29:20.299787 +0000 [ docbroker_006 ] ERR Unauthorized Request while starting session on https://nextcloud.meineadresse.duckdns.org:443/index.php/apps/richdocuments/wopi/files/2228_oc1tp2jxo68z for socket #31. Terminating connection. Error: No acceptable WOPI hosts found matching the target host [nextcloud.meineadresse.duckdns.org] in config.| wsd/COOLWSD.cpp:4074
Hallo, ich habe ein Pronlem nach erfolgter Installation nach dieser Anleitung. Beim Aufruf im Browser kommt nur “Page not found”. Hier mal der Log aus dem Docker.
RSA private key, 2048 bit long modulus (2 primes)
………………+++++
…………………………………+++++
e is 65537 (0x010001)Generating
Signature ok
subject=C = DE, ST = BW, L = Stuttgart, O = Dummy Authority, CN = localhost
Getting CA Private Key
-e ERR: Use of domain variable is not supported. First host/domain who tries to connect to COOL is always allowed.
To allow multiple host and its aliases use something like this and pass it as env variable:
aliasgroup1=https://domain1:443,https://its-alias|its-second-alias:443
aliasgroup2=https://domain2:443,https://its-alias:443
For more info: https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html
Hat jemand eine Idee und kann helfen. Vielen Dank schon mal.
Hallo, folgendes Problem. Der Aufruf von Collabora wird mit “Page not found” quittiert.
Hier mal ein Auszug aus dem Log
Signature ok
subject=C = DE, ST = BW, L = Stuttgart, O = Dummy Authority, CN = localhost
Getting CA Private Key
-e ERR: Use of domain variable is not supported. First host/domain who tries to connect to COOL is always allowed.
To allow multiple host and its aliases use something like this and pass it as env variable:
aliasgroup1=https://domain1:443,https://its-alias|its-second-alias:443
aliasgroup2=https://domain2:443,https://its-alias:443
For more info: https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html
Generating RSA private key, 2048 bit long modulus (2 primes)
Traefik ist entsprechend der Anleitung von Christian installiert worden.
Hi,
danke für die Anleitung. Allerdings habe ich zwei Probleme:
1) die environment variable domain scheint er nicht zu aktzueptieren. Stattdessen soll man aliasgroup1=https://domain:443 verwenden. Damit startet es dann und man kann über die URLs sehen das alles läuft.
2) Wenn ich den Server dann in Nextcloud eingeben will, bekomme nur “Es konnte keine Verbindung zum Collabora Online-Server hergestellt werden.”.
Nextcloud als auch collabora läuft in Docker auf dem selben Homeserver über einen CNAME Eintrag bei mir zu Hause. Als Adresse ist Collabora Servers ist https://collabora.meiendomain.de eingegeben.
Als Fehlermeldugn sehe ich öfters das folgende. Ob das damit zusammehängt weiß ich aber nicht. “[ websrv_poll ] WRN client – server version mismatch, disabling browser cache. Expected: eb73aa3| wsd/FileServer.cpp:510”
Irgendwelche Tipps?
bei mir funktioniert:
https://collabora.MEINEDOMAIN.de/browser/dist/admin/admin.html
Hallo,
habe schon seit längerem Nextcloud und Traefik nach deiner Anleitung laufen und wollte auch noch Collabora hinzufügen.
Installation an sich funktioniert, ich habe aber ein Problem wenn ich auf das Admin panel zugreifen möchte.
https://collabora.MEINEDOMAIN.de –> liefert OK
https://collabora.MEINEDOMAIN.de/loleaflet/dist/admin/admin.html –> liefert nix
Im Collabora Docker log erscheint:
collabora_app | wsd-00001-00040 2021-11-25 10:54:11.283863 +0000 [ websrv_poll ] ERR Unknown resource: /loleaflet/dist/admin/admin.html G, host: collabora.MEINEDOMAIN.de, path: 4
collabora_app | [0] ‘loleaflet’
collabora_app | [1] ‘dist’
collabora_app | [2] ‘admin’
collabora_app | [3] ‘admin.html’
collabora_app | full URI: /loleaflet/dist/admin/admin.html| wsd/COOLWSD.cpp:2817
Ich bin ein bisschen ratlos was das verursachen könnte. Hat jemand eine Idee? Läuft da irgendetwas im Container nicht?
Hallo,
vielen Dank für die guten Anleitungen.
Ich habe allerdings das Problem, dass ich von der Nextcloud, die auf dem gleichen Host läuft wie Collabora nicht auf Collabora zugreifen kann. Es erscheint erst ein Fenster, dass auf Collabora nicht zugegriffen werden kann, dann kommt das Collabora Lade-Symbol, das aber bei 0% stehen bleibt und nicht weiter lädt.
Allerdings kann ich auf die Collabora Instanz von einem externen Host zugreifen und es funktioniert ohne Probleme. Also läuft Collabora eigentlich, nur die Verbindung zur lokalen Nextcloud funktioniert nicht.
Gibt es hier Ideen?
Vielen dank!
Hello Christian,
Very nice howto, thanks a lot.
My setup is nearly the same as what you describe, and I am facing a strange issue with Collabora.
My Collabora server is running within a Docker container, behind Traefik.
I have different Nextloud instances : some are running behind the same Traefik router, some are on other servers not running on Docker, but as Ubuntu packages.
The problem occurs with Docker Nextcloud instances : they can perfectly use Collabora, but after a few minutes of inactivity, the Collabora app within Nextcloud says that the Collabora server is not available anymore. Simply clicking on “Save” to reset the config makes it works again.
As a workaround, I’ve finally set up a crontab job that does a :
docker exec … php occ richdocuments:activate-config
It works, but this is not optimal !
Have you ever faced this issue ?
Thanks !
wie kann ich dem Collabora Container mitgeben, dass er Traefik vertrauen kann?
[ websrv_poll ] WRN convert-to: Requesting address is denied: ::ffff:172.18.0.2| wsd/LOOLWSD.cpp:2318
Danke für deine Anleitung.
Es hat alles geklappt. Super!!!
Ich musste nur noch die .htaccess anpassen. Es wurde als Hinweis in der Übersicht angezeigt.
Zur Info:
Der “Strict-Transport-Security” HTTP-Header ist nicht auf mindestens “15552000” Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den Sicherheitshinweisen erläutert ist:
Um einen HSTS-Header zu setzen, fügen Sie in eine .htaccess-Datei die Zeile
Header set Strict-Transport-Security “max-age=15552000”
ein. Den Wert für max-age setzen Sie auf den von NextCloud empfohlenen Wert. Beachten Sie hierbei jedoch auch mögliche Nachteile, was eine derartige Änderung (Setzen von HSTS-Headern) bewirkt.
Ich bekam zuerst keine Verbindung von Nextcloud zu Collabora
Im Ergebnis darf der URL kein abschließendes “/” enthalten.
https://collabora.xxxxx.de ist also korrekt
Mit copy-pasta docker-compose.yml startet der collabora container zwar prima, aber es scheint als würde er (so zeigt es Portainer an) die IP adresse verlieren.
Er tauch nach dem start kurz im Traefik dashboard auf, verschwindet dann wieder.
Im traefik.log steht dann
“service \”collabora\” error: unable to find the IP address for the container \”/collabora_app\”: the server is ignored” providerName=docker container=collabora-collabora-eb0de5d4d607e821dcff9173e38c20882ca18a559a394957b661f2785833111e
Super Anleitung, danke dir.
Danke für die super Anleitungen, die du hier überall anbietest.
Ich habe jedoch nach der Einrichtung immer eine blöde Fehlermeldung:
Unautorisierter WOPI-Host. Bitte versuchen Sie es später noch einmal oder wenden Sie sich an Ihren Administrator. Ich habe bereits alles versucht und in verschiedenen Foren nachgelesen. Ich komme aber nicht auf die Lösung. Hat jemand eine Idee?
UFW kann eingeschaltet bleiben, falls man https erlaubt.
Ich hatte es so verstanden, das docker VOR den iptables-Regeln die Netzwerkpakete bekommt und deshalb NICHT von der Firewall des Hosts beeinflusst wird.
Nun, bei mir ist auf dem Host nur SSH und https erlaubt und dann arbeiten Nextcloud und Collabora auch bei eingeschalteter UFW zusammen.
Hallo,
ich hab einen Verbindungsfehler, der Log sagt:
[ websrv_poll ] WRN client – server version mismatch, disabling browser cache. Expected: ed4f732| wsd/FileServer.cpp:287
Was kann ich tun?
Danke!