DecaTec

Programmieren, Fotografie, Home-Server und einiges mehr

Nextcloud: Online-Office mit ONLYOFFICE

Nextcloud Logo

Ein klassisches Anwendungsgebiet für „die Cloud“ ist das Erstellen und die Bearbeitung von Office-Dokumenten. Diese können dann meistens direkt im Browser auch durch mehrere Benutzer gleichzeitig editiert werden. Nextcloud bietet dieses Feature nicht direkt out-of-the-box, allerdings kann die selbstgehostete Cloud leicht durch Apps erweitert werden. Genau hier setzt ONLYOFFICE an: Durch diese Erweiterung kann Nextcloud einfach um Online-Office-Funktionalitäten erweitert werden.

Dieser Artikel beschreibt daher die Installation und Konfiguration von ONLYOFFICE mittels Docker und das Zusammenspiel mit einer bestehenden Nextcloud-Instanz. Wie immer liegt das Augenmerk v.a. auf der Sicherheit aller beteiligten Systeme.

ONLYOFFICE vs Collabora

Bevor es an die Installation geht, noch ein Hinweis: ONLYOFFICE ist nur eine Möglichkeit, Nextcloud um Online-Office-Funktionalitäten zu erweitern. Eine Alternative dazu ist Collabora. Die Installation und Einrichtung von Collabora habe ich bereits im Artikel Nextcloud: Online-Office mit Collabora beschrieben. Nun stellt sich natürlich die Frage, auf welche Lösung man setzen sollte. Hier gibt es keine eindeutige Empfehlung: Beide Lösungen integrieren sich gut in Nextcloud und bieten ähnliche Features.

Die Unterschiede zwischen den Office-Lösungen weden in diesem Artikel detailliert beschrieben. Aber Achtung: der Vergleich wurde von ONLYOFFICE veröffentlicht, daher ist es nicht auszuschließen, dass hier eine Lösung per se besser abschneidet. Der Artikel ist aber trotzdem interessant, da er auch die Unterschiede in der technischen Umsetzung beider Lösungen beleuchtet.

Was für den Endanwender sicherlich am wichtigsten ist: Collabora kommt aus der LibreOffice-Ecke und bietet daher die beste Unterstützung für die OpenDocument-Formate. Bei der Entwicklung von ONLYOFFICE wurde von Anfang an Wert auf die OOXML-Formate (Office Open XML – die von Microsoft Office bevorzugten Formate) gelegt. Nach eigenen Angaben unterstützt ONLYOFFICE die Microsoft Office Formate zu 100%.

Daher werden Anwender, die hauptsächlich mit Microsoft Office arbeiten, wohl eher die Lösung von ONLYOFFICE bevorzugen. Wer dagegen meist LibreOffice/OpenOffice nutzt, sollte sich Collabora mal näher anschauen.

Am besten einfach mal selbst beide Lösungen ausprobieren: ONLYOFFICE und Collabora können parallel installiert werden, so dass man sich nicht sofort auf eine Office-Variante festlegen muss.

Installation und Konfiguration von ONLYOFFICE

ONLYOFFICE hat einige Abhängigkeiten, so dass eine manuelle Installation durchaus aufwändig ist. Daher beschreibt der Artikel die Installation der Office-Lösung mittels Docker. Dadurch kann ONLYOFFICE in wenigen Schritten schnell und einfach installiert werden.

Voraussetzungen

Folgende Voraussetzungen sind für den Betrieb von ONLYOFFICE zu erfüllen:

  • Ein System, auf dem Docker installiert ist. Im Rahmen des Artikels setze ich Ubuntu Server ein, allerdings sollten die Schritte auch auf andere Distributionen übertragbar sein. Wie Docker selbst installiert wird, wurde bereits im Artikel Docker auf Ubuntu Server erklärt.
  • ONLYOFFICE ist recht speicherintensiv. Daher sollte auf dem entsprechenden PC/VM mindestens 4 GB RAM verfügbar sein (besser noch 6 GB). Aus genau diesem Grund wird ONLYOFFICE auch auf einem Raspberry Pi (Affiliate-Link) nicht optimal laufen. Auch wenn es prinzipiell möglich ist, ONLYOFFICE auf einem solchen Kleinst-Rechner zu betreiben, wird die Performance hier zu wünschen übriglassen.
  • Nextcloud muss über eine gesicherte SSL-Verbindung erreichbar sein. Wer die Cloud wie im Artikel Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban beschrieben installiert hat, ist bestens vorbereitet, da hier ein SSL-Zertifikat von Let’s Encrypt zum Einsatz kommt.

Häufig liest man, dass ONLYOFFICE nicht auf demselben Rechner wie Nextcloud installiert werden sollte, da es hier zu Problemen kommen könnte. Dies trifft allerdings nur dann zu, wenn ONLYOFFICE manuell installiert wird. Wenn die Office-Lösung wie hier beschrieben über Docker läuft, dann kann ONLYOFFICE problemlos auf der gleichen Maschine wie Nextcloud betrieben werden.

Es ist aber natürlich auch möglich, ONLYOFFICE auf einem anderen Rechner (z.B. eine zweite virtuelle Maschine) zu installieren. In diesem Fall müssen nur die IP-Adressen entsprechend angepasst werden.

Vorbereitung: Zertifikat erstellen

Die Kommunikation zwischen Nextcloud und ONLYOFFICE muss über eine gesicherte SSL-Verbindung erfolgen. Hier kann der Einfachheit halber ein selbst signiertes Zertifikat zum Einsatz kommen.
Es wäre auch möglich, ein eigenes Zertifikat von Let’s Encrypt speziell für die ONLYOFFICE-Verbindung zu nutzen. Der Aufwand wäre hier allerdings etwas höher, da sämtliche Requests dann durch den nginx Gateway-Host geleitet werden oder die Zertifikate immer manuell kopiert werden müssten (Let’s Encrypt Zertifikate haben nur eine Gültigkeitsdauer von 90 Tagen).
Ein selbst signiertes Zertifikat ist hier das Mittel der Wahl, da es einfach erzeugt werden kann und die Verbindung trotzdem verschlüsselt ist. Auch muss man hier keinerlei Anpassungen am Webserver vornehmen, was eine zusätzliche Fehlerquelle wäre.

Das Zertifikat wird durch die folgenden Befehle angelegt:

  • Beim Befehl openssl req -new -key onlyoffice.key -out onlyoffice.csr wird man nach dem „Common Name“ gefragt (Common Name (e.g. server FQDN or YOUR name)). Hier ist einfach die IP des lokalen Systems anzugebnen (z.B. 192.168.178.60). Ebenso kann man ein „challenge password“ angeben. Dieses kann man einfach leer lassen (einfach mit Enter bestätigen).
  • Achtung: Die Erzeugung der sog. Diffie-Hellmann-Parameter mit einer Länge von 4096 Bit (openssl dhparam -out dhparam.pem 4096) kann u.U. sehr lange dauern. Auf schwacher Hardware kann das schon einmal mehrere Stunden in Anspruch nehmen. Wer nicht so lange warten möchte, kann die Schlüssel-Länge auf 2048 Bit reduzieren (openssl dhparam -out dhparam.pem 2048).
  • Das Zertifikat hat eine Gültigkeit von 3650 Tagen (10 Jahre). Hier kann bei Bedarf auch eine andere Gültigkeitsdauer angegeben werden.

Installation in einem Schritt

Die Installation von ONLYOFFICE erfolgt dann dank Docker mit nur einem einzigen Befehl:

Folgende Punkte gilt es hier zu beachten:

  • Da der Webserver bereits auf dem Port 443 (HTTPS) lauscht, kann der Docker-Container nicht den gleichen Port belegen. Der Parameter -p 4433:443 sorgt dafür, dass der Container selbst mit dem Port 443 (intern) arbeitet, nach außen wird jedoch der Port 4433 genutzt.
  • Die nächsten zwei Parameter (-e JWT_ENABLED=’true‘ -e JWT_SECRET=’geheimes-secret‘) sorgen dafür, dass zur Kommunikation mit dem Container ein sog. JSON Web Token benötigt wird. Im Grunde genommen handelt es sich dabei um ein Passwort („geheimes-secret“ – hier sollte man natürlich ein eigenes Passwort wählen), welches später in Nextcloud hinterlegt werden muss, damit die Verbindung zum ONLYOFFICE Container aufgebaut werden kann. Dies verhindert, dass der ONLYOFFICE-Container „unbemerkt“ von anderen Verbindungen genutzt werden kann.
  • Mit –restart=always wird angegeben, dass der Container bei jedem Systemstart hoch gefahren wird. Damit „überlebt“ der Docker-Container auch Neustarts des Systems.
  • Der letzte Parameter (-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver) definiert ein sog. Volume: Alle Dateien, die im Verzeichnis /app/onlyoffice/DocumentServer/data des Hosts liegen, werden innerhalb des Containers im Verzeichnis /var/www/onlyoffice/Data onlyoffice/documentserver bereit gestellt. Diese Funktion wird benötigt, damit der Container das zuvor erzeugte Zertifikat nutzen kann.

Nun wird der ONLYOFFICE-Container heruntergeladen (ca. 650 MB), was je nach Internetverbindung ein paar Minuten dauern kann.

Installation von ONLYOFFICE mittels Docker

Installation von ONLYOFFICE mittels Docker

Ob der Container ordnungsgemäß läuft, kann man testen, indem man über den Browser eine Verbindung aufbaut (die URL dazu ist in unserem Fall https://192.168.178.60:4433). Durch den Einsatz des selbst signierten Zertifikats wird der Browser eine Warnung ausgeben, das stört uns an dieser Stelle allerdings nicht.

ONLYOFFICE läuft

ONLYOFFICE läuft

Nextcloud: ONLYOFFICE App aktivieren

Damit ONLYOFFICE nun aus Nextcloud heraus angesprochen werden kann, braucht man noch die entsprechende App. Man findet diese im App-Store von Nextcloud in der Kategorie Büro & Text.

ONLYOFFICE im Nextcloud App-Store

ONLYOFFICE im Nextcloud App-Store

Nextcloud-Konfiguration anpassen

Bevor nun die Verbindung zu ONLYOFFICE in Nextcloud hinterlegt werden kann, muss noch eine kleine Anpassung an der Konfiguration von Nextcloud erfolgen. Dazu wird die Konfiguration mit folgendem Befehl auf der Konsole geöffnet:

Hier wird nun am Ende der Datei (aber vor der letzten schließenden Klammer) ein Eintrag hinzugefügt:

Dieser Schritt ist zwingend erforderlich, da Nextcloud sonst die Verbindung zu ONLYOFFICE auf Grund des selbst signierten Zertifikats nicht zulässt.

Am Schluss sollte der ganze Rechner einmal neu gestartet werden:

Verbindung zwischen Nextcloud und ONLYOFFICE herstellen

Der letzte Schritt zu einer Online-Office-Lösung mit Nextcloud ist nun nur noch das Hinterlegen der Verbindungs-Details zwischen der Cloud und ONLYOFFICE.

Dazu in Nextcloud einfach in die Einstellungen gehen. Unter Verwaltung > ONLYOFFICE findet man nun die entsprechenden Einstellungen:

  • Serviceadresse der Dokumentbearbeitung: Hier wird die IP-Adresse des Systems angegeben, auf dem der entsprechende Docker-Container läuft. In unserem Beispiel hat er PC die IP 192.168.178.60, daher wird hier https://192.168.178.60:4433 angegeben. Wichtig ist hier der Port, der auch beim Starten des Docker-Containers angegeben wurde (4433).
  • Geheimer Schlüssel (freilassen, um zu deaktivieren): Hier ist das JWT-Token anzugeben, welches beim Starten des Docker-Containers angegeben wurde.
  • Alle anderen Felder kann man leer lassen.
ONLYOFFICE Einstellungen in Nextcloud

ONLYOFFICE Einstellungen in Nextcloud

Nach einem Klick auf Speichern sollte eine Erfolgsmeldung kommen und die Verbindung zwischen Nextcloud und ONLYOFFICE wurde erfolgreich konfiguriert.

Online-Office im Browser

In der Datei-Ansicht von Nextcloud können nun einfach Office-Dokumente angelegt werden bzw. hochgeladen werden. Mit einem Klick werden diese nun mit ONLYOFFICE geöffnet und man kann mit der Bearbeitung beginnen.

Online-Office mit Nextcloud und ONLYOFFICE

Online-Office mit Nextcloud und ONLYOFFICE

Update von ONLYOFFICE

Von Zeit zu Zeit erscheinen nun neue Versionen des Docker-Containers von ONLYOFFICE. Um hier ein Update durchzuführen, sind nur wenige Schritte erforderlich.

Zunächst muss die ID des laufenden Containers mit folgendem Befehl ermittelt werden:

Der Container wird gestoppt und entfernt:

Die neue Version des Containers wird über diesen Befehl herunter geladen:

Nun kann der aktualisierte Container wie gewohnt gestartet werden:

Troubleshooting

Manchmal kann es passieren, dass die Verbindung zum ONLYOFFICE-Server nicht auf Anhieb klappen will. Die Probleme können aber meist relativ schnell aus dem Weg geräumt werden.

Fehler beim Aufruf von ONLYOFFICE über den Browser

Um zu prüfen, ob ONLYOFFICE ordnungsgemäß läuft, kann man die IP der Maschine direkt im Browser aufrufen (in diesem Beispiel: https://192.168.178.60:4433). Wenn hier nur eine Fehlermeldung erscheint, dass die Website nicht erreichbar ist, sollte der laufende Docker-Container überprüft werden.

Zunächst wird die Container-ID ermittelt:

Anschließend kann man sich die Logs des Containers anzeigen lassen:

Hier kann es vorkommen, dass ähnliche Meldungen wie diese angezeigt werden:

Hier gibt es momentan wohl noch hin und wieder Probleme (siehe GitHub-Issues hier und hier). In diesem Fall hilft es meistens, den Docker-Container oder besser noch den ganzen PC neu zu starten (zur Not auch mehrmals).

Fehlermeldung beim Einbinden von ONLYOFFICE in Nextcloud

Wenn beim Konfigurieren der Verbindung zum ONLYOFFICE-Server eine Fehlermeldung auftritt (Fehler beim Anschließen (Bad Request oder Timeout Fehlermeldung)), sollte man zunächst mal das Log von Nextcloud überprüfen. Hier sollte meinst ein Hinweis auf das konkrete Problem zu finden sein.

Folgende Log-Meldung weist z.B. auf die fehlende Anpassung der config.php von Nextcloud in Bezug auf ONLYOFFICE hin (siehe hier):

Fazit

Dank des verfügbaren Docker-Container für ONLYOFFICE kann Nextcloud schnell und einfach um Online-Office-Funktionen ergänzt werden. Da prinzipiell auch kein zweiter PC/VM zum Einsatz kommen muss, ist dies eine sinnvolle Erweiterung jeder Nextcloud-Installation.

Ihr konntet ONLYOFFICE mit diesem Tutorial erfolgreich installieren oder hattet mit der Vorgehensweise noch Probleme? Oder bevorzugt ihr Collabora als Online-Office-Lösung für Nextcloud? Dann hinterlasst doch einfach einen Kommentar.

Weiterführende Artikel

Links

, , , , , ,

Kommentare: 9

  • thomas sagt:

    Hallo Jan,

    ich habe Deine Anleitung befolgt und bekomme den Container auch erfolgreich gestartet. Die Einrichtung in der NC funktioniert auch. Ein Document anzulegen funktioniert ebenso. Wenn ich es öffnen möchte kommt allerdings nur ein weisser Bildschirm, da wo in der NC das OnlyOffice Document erscheinen sollte.

    In den Logfiles des Containers und vom NGINX steht nix drin.

    Hast Du eine Idee, wo ich schauen könnte?

    Viele Grüße

    Thomas

    • Jan sagt:

      Hi Thomas,

      den Docker-Conteiner bzw. den kompletten Rechner hast du sicherlich schon ein paar mal neu gestartet, oder?
      Wenn es zu Fehlern gekommen ist, dann hat das bei mir bisher immer geholfen.

      Um einen einfacheren Zugriff auf die Logs des Containers zu erhalten, kannst du auch ein zusätzliches Volume einhängen:
      mkdir -p /app/onlyoffice/DocumentServer/logs
      docker run --name=ONLYOFFICEDOCKER -i -t -d -p 4433:443 -e JWT_ENABLED='true' -e JWT_SECRET='geheimes-secret' --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice

      Erscheinen dann weitere Logs unter /app/onlyoffice/DocumentServer/logs (auf der lokalen Maschine)?

      Gruß,
      Jan

  • thomas sagt:

    Hallo Jan,

    mit

    ocker run –name=ONLYOFFICEDOCKER -i -t -d -p 4433:443 -e JWT_ENABLED=’true‘ -e JWT_SECRET=’geheimespw‘ –restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice

    kommt nach dem Download des images ein

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused „exec: \“-v\“: executable file not found in $PATH“: unknown

    :-/

    • Jan sagt:

      Hi Thomas,

      sorry, da habe ich wohl den Befehl an sich falsch angegeben. Korrekt sollte dieser lauten:
      docker run --name=ONLYOFFICEDOCKER -i -t -d -p 4433:443 -e JWT_ENABLED='true' -e JWT_SECRET='geheimes-secret' --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice onlyoffice/documentserver

      Damit sollte der Container auf jeden Fall mal gestartet werden können.

      Gruß,
      Jan

  • Stefan sagt:

    Hallo Jan,

    mal wieder ein super Artikel. Danke dafür.

    Ich habe jedoch ein kleines Problem. Vielleicht kannst du mir da ja weiterhelfen.
    Ich habe immer wieder Probleme mit OnlyOffice, wie du in deinem Troubleshooting auch berichtet hast:

    * Starting RabbitMQ Messaging Server rabbitmq-server *
    FAILED – check /var/log/rabbitmq/startup_\{log, _err\}
    [fail]
    Starting redis-server: redis-server.
    Waiting for connection to the localhost host on port 5672

    durch mehrere Neustarts oder aber auch durch den Neustart des Dockers läuft OnlyOffice irgendwann.

    Ein ganz anderes Problem ist jedoch, dass wenn OnlyOffice läuft, ich nur lokal darauf zugreifen kann. Ich habe es gerade über einen VPN und über einen Smartphone-Hotspot versucht… OnlyOffice läd leider nicht.

    Hast du eine Idee, an was das liegen könnte?

    Diese Meldung taucht auch im Nextcloud Log auf seitdem ich OnlyOffice installiert habe:

    Fatal webdav Doctrine\DBAL\Exception\DriverException: An exception
    occurred while executing ‚INSERT INTO oc_file_locks (key,lock,ttl)
    SELECT ?,?,? FROM oc_file_locks WHERE key = ? HAVING COUNT(*) = 0′
    with params [„files\/75e2e7e07e75a29f4a32cc1714c0a7d6“, 1, 1531429453,
    „files\/75e2e7e07e75a29f4a32cc1714c0a7d6“]: SQLSTATE[40001]:
    Serialization failure: 1213 Deadlock found when trying to get lock; try restarting
    transaction

    Könnte es etwas damit zu tun haben?

    Vielen Dank schon mal.

    Grüße Stefan

    • Jan sagt:

      Hallo Stefan,

      für den Fehler, dass OnlyOffice manchmal nicht gestartet werden kann, habe ich leider auch noch keine 100 prozentige Lösung.
      Der Zugriff „von remote“ funktioniert bei mir problemlos. Der Fehler aus dem NC-Log hat damit glaube ich recht wenig zu tun. Hast du schonmal die Logs des Docker-Containers nach einem Fehlversuch angesehen?

      Gruß,
      Jan

      • Stefan sagt:

        Hallo Jan,

        Docker Log während einem lokalen Zugriff:

        docker logs 05f330829f2b
        * Starting PostgreSQL 9.5 database server [ OK ]
        * Starting RabbitMQ Messaging Server rabbitmq-server [ OK ]
        Starting redis-server: redis-server.
        Starting supervisor: supervisord.
        * Starting nginx nginx [ OK ]
        Generating AllFonts.js, please wait…Done
        onlyoffice-documentserver:docservice: stopped
        onlyoffice-documentserver:docservice: started
        onlyoffice-documentserver:converter: stopped
        onlyoffice-documentserver:converter: started
        * Reloading nginx configuration nginx [ OK ]

        Log während einem fehlerhaften Zugriff von Außerhalb (Mobilfunknetz):

        docker logs 05f330829f2b
        * Starting PostgreSQL 9.5 database server [ OK ]
        * Starting RabbitMQ Messaging Server rabbitmq-server [ OK ]
        Starting redis-server: redis-server.
        Starting supervisor: supervisord.
        * Starting nginx nginx [ OK ]
        Generating AllFonts.js, please wait…Done
        onlyoffice-documentserver:docservice: stopped
        onlyoffice-documentserver:docservice: started
        onlyoffice-documentserver:converter: stopped
        onlyoffice-documentserver:converter: started
        * Reloading nginx configuration nginx [ OK ]
        root@05f330829f2b:/# * Starting PostgreSQL 9.5 database server [ OK ]
        * Starting RabbitMQ Messaging Server rabbitmq-server * FALED – check /var/log/rabbitmq/startup_\{log, _err\}
        [fail]
        Starting redis-server: redis-server.
        Waiting for connection to the localhost host on port 5672
        Waiting for connection to the localhost host on port 5672

        Danach ist auch die Verbindung von intern nicht mehr möglich.
        Scheint also wohl der gleiche Fehler wie bei den Startproblemen zu sein.
        Warum das aber über einen lokalen Zugriff nicht auftritt, versteh ich nicht wirklich.

        Werde da wohl warten müssen bis das ganze über ein Update behoben wird.
        Wenn du oder wer anders eine Idee hat, wie ich das beheben kann, dann wäre ich sehr dankbar.

        Also vielen Dank schon mal ;)

        Grüße Stefan

        • Jan sagt:

          Hi Stefan,

          ja, ich denke, da muss man einfach auf ein neues Docker-Image von Onlyoffice warten. Der Fehler ist hier auch schon bekannt, es gibt hier bereits einige Issues auf GitHub.

          Gruß,
          Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.