AppsDockerNextcloudVPS

Bereitstellung OnlyOffice mit Docker und Apache2 als Reverse Proxy auf Ubuntu 16.04 LTS

Heute möchte ich Euch zeigen wie Ihr die Alternative zu Collabora Online Office, Only Office Documentserver, mit Docker und Apache2 als Reverse Proxy in Betrieb nehmt. Dabei sichern wir den Zugriff mit einem Passwort ab, so dass nur Euch bekannte Nextcloud-Instanzen darauf zugreifen können.

Voraussetzungen:

– Ubuntu VPS mit root-Zugriff
– LAMP-Stack installiert (Apache2 würde auch reichen)
– Certbot installiert
– Reverse Proxy Module in Apache2 aktiviert
– Docker installiert
– A-Record im DNS für entsprechenden vHost

Sollten Vorraussetzungen fehlen, müssen wir diese natürlich wieder schaffen.

LAMP-Stack:

sudo apt-get install lamp-server^

Benötigte Apache2-Module aktivieren:

sudo a2enmod proxy proxy_http proxy_ajp rewrite deflate headers proxy_balancer proxy_connect proxy_html proxy_wstunnel authz_core authn_core setenvif ssl

Docker:
Version aus den offiziellen Paketquellen:

sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker

oder direkt von Docker:

sudo curl -sSL https://get.docker.com/ | CHANNEL=stable sh
sudo systemctl enable docker.service
sudo systemctl start docker.service

Certbot:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache

Im Anschluss können wir fortfahren und den vHost für OnlyOffice anlegen.

Anlegen Apache2-vHost:

Wir legen uns einen neuen vHost für Apache2 an:

sudo nano /etc/apache2/sites-available/002-onlyoffice.conf

und fügen den folgenden Inhalt ein:

<VirtualHost *:80>
ServerName onlyoffice.your-domain.tld
</VirtualHost>

aktivieren den vHost und starten Apache2 neu:

sudo a2ensite 002-onlyoffice.conf
sudo systemctl restart apache2

Nun erstellen wir für den vHost die LetsEncrypt-Zertifikate mit certbot:

certbot --apache

vhost auswählen und am Ende „redirect“ auswählen.

Die von certbot erstellte vHost.conf bearbeiten wir nun:

sudo nano /etc/apache2/sites-available/002-onlyoffice-le-ssl.conf

und setzen unterhalb der Zeile „ServerName“ den folgenden Block ein:

SSLProxyEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder on

SetEnvIf Host "^(.*)$" THE_HOST=$1
RequestHeader setifempty X-Forwarded-Proto https
RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e
ProxyAddHeaders Off

ProxyPassMatch (.*)(\/websocket)$ "ws://127.0.0.1:9981/$1$2"
ProxyPass / "http://127.0.0.1:9981/"
ProxyPassReverse / "http://127.0.0.1:9981/"

Am Ende noch einmal Apache2 neu starten:

sudo systemctl restart apache2

Docker Container starten:

Wenn Docker installiert ist, können wir den OnlyOffice Documentserver mit dem folgenden Befehl starten. Bitte darauf achten, dass Ihr den Secret-Key anpasst:

docker run -i -t -d -p 127.0.0.1:9981:80 -e JWT_ENABLED='true' -e JWT_SECRET='your-secret-key' --restart=always onlyoffice/documentserver

wenn ausgeführt, prüfen wir mit:

docker ps

ob der Container läuft:

Zur Kontrolle rufen wir noch unsere OnlyOffice-Domain im Browser auf und prüfen, ob wir das folgende Resultat sehen:

Nextcloud:

Jetzt können wir unsere Nextcloud-Instanz anbinden. Dazu installieren wir die App „OnlyOffice“ aus dem App-Store in unserer Nextcloud und aktivieren diese.

In den Einstellungen finden wir jetzt einen neuen Punkt „ONLYOFFICE“ in dem wir unseren DNS-Namen und unser Secret (Erweiterte Servereinstellungen) eintragen müssen:

Nachdem wir dies gespeichert haben, können wir die Dokumente direkt in der Nextcloud mit OnlyOffice bearbeiten:

Das war es für heute und viel Spaß 🙂

Wenn der Artikel Euch geholfen hat, dann freue ich mich wie immer über Feedback oder Ihr teilt ihn einfach!

26 Gedanken zu „Bereitstellung OnlyOffice mit Docker und Apache2 als Reverse Proxy auf Ubuntu 16.04 LTS

  1. Guten Tag 🙂

    bei mir läuft nun Onlyoffice und ist ansprechbar (direkter Aufruf der URL).

    Die Konfiguration in Nextcloud wirft folgenden Fehler aus:

    Error when trying to connect (Error occurred in the document service: Error while downloading the document file to be converted

    Haben Sie dazu eine Idee?

    Besten Dank im Voraus

    1. Hallo, am besten die Apache-error-Logs anschauen und die Logs vom Container.
      Dann gibt es hier noch zwei Troubleshooting-Artikel, wobei der erste eventuell hilfreich sein kann auch wenn er für Plesk geschrieben wurde.
      Gruß Markus

  2. Hallo Markus,

    ich lese deinen Blog immer wieder gerne und er bietet mit eine gute Unterstützung bei der Einrichtung von Nextcloud. Ich habe das Tutorial bei einer Maschine nun erfolgreich angewendet, bei einer anderen Installation (die schon etwas länger läuft) stellt sich OnlyOffice jedoch quer und es erscheint unter Nextcloud bei der Einrichtung, wenn die Einstellungen gespeichert werden sollen, die Fehlermeldung:

    GetConvertedUri on check error: Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.

    Den Dokumentenserver kann ich erfolgreich über die Adresse aufrufen und es erscheint auch die „Willkommens-Nachricht“. Hast du eine Idee, was hier quer läuft?

    1. Hallo Michael.

      Vielen Dank für Dein Lob 🙂

      Interessant wären die Informationen, die im Apache-Log der beiden vHost zu finden sind. Eventuell ist nur ein Modul nicht richtig aktiviert. Sind die beiden Maschinen vom Betriebssystem her identisch? Die Fehlermeldung an sich bedeutet, das OnlyOffice die Daten nicht aus der Nextcloud geladen bekommt.
      Gruß Markus.

      1. Hallo Markus,

        upps…gerade erst mitbekommen, dass du geantwortet hast.

        Die Error-Logs aus dem Apache sind für beide vhosts unauffällig, d. h., keine Einträge. Oder meinst du PHP-Logs? Die Maschinen sind nicht identisch. Die Nextcloud-Installation, die hier die Probleme bereitet, wurde von einer alten Installation auf einen neuen, frischen Ubuntu-Server 18.04 migriert. Die funktionierende Fassung läuft unter Ubuntu 16.04.

        Das Docker-Image scheint ja soweit zu laufen und die Nextcloud-Instanz auch.

        Viele Grüße

        Michael

        1. Hi Michael.

          Kein Problem 😉

          php-Logs kannst Du auch mal schauen, wenn in den Apache-Logs nichts zu finden ist.

          Ansonsten in den office-Logs:
          docker logs name | grep err

          Vielleicht findest Du da etwas oder Du schaust mal in die Troubleshooting Guides für Plesk und Office bezüglich Namensauflösung etc.

          Gruß Markus

          1. Hallo Markus,

            ja, da bin ich tatsächlich fündig geworden:

            [ERROR] nodeJS – error downloadFile:url=https://cloud.domain.tld/index.php/apps/onlyoffice/empty?doc=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY3Rpb24iOiJlbXB0eSJ9.FNeJ5joo4wWpn_k3s5ohm-kJi5C5HD2n3sZwpMkn4VE;attempt=3;code:DEPTH_ZERO_SELF_SIGNED_CERT;connect:null;(id=conv_check_1386353282_docx)

            Was mich nur wundert: Warum Self-signed-Cert? Ich habe die Anleitung so verstanden, dass intern (also vom Proxy zum Dokumenten-Server) eine unverschlüsselte Verbindung genutzt wird, oder irre ich da? Und von außen – also bis zum Proxy – nutze ich ja LE und das ist ja alles andere als selbstsigniert?! Stehe gerade auf dem Schlauch!

            Habe jedenfalls mal etwas gegooglet und bisher nur finden können, dass man mal innerhalb des Dockers die Überprüfung ausschalten sollte – bringt nur (bei mir) nichts. Es erscheint dann zwar keine Fehlermeldung mehr, aber dafür passiert nichts weiter (timeout).

            Viele Grüße

            Michael

          2. Ja, richtig. Habe die aktuellste Version installiert (gerade noch mal durch einen pull validiert).

            Leider hat die Ergänzung der config.php nichts gebracht. Habe parallel noch mal versucht, innerhalb des dockers die default.json anzupassen, aber auch hier ergibt sich keine Änderung im Verhalten. Schon sehr strange.

          3. Ubuntu 18.04 mit Apache2 war das, richtig? Und Nextcloud und OnlyOffice auf dem gleichen Host?

            Kannst Du von einer anderen Nextcloud auf den DocumentService zugreifen?

            Muss ich morgen Abend mal ausprobieren, ob sich da was geändert haben sollte. Artikel ist ja auch schon etwas älter ?

          4. Super Idee für einen Test – da bin ich nicht drauf gekommen… 😉 Also: Es scheint an Nextcloud auf der neuen Maschine zu liegen. So kann ich dort auch nicht die alte (auf der anderen Maschine funktionierende) OnlyOffice-Installation einbinden. Andersherum funktioniert es jedoch: Ich kann beide OnlyOffice-Instanzen wahlweise in die alte Nextcloud einbinden. Muss also – wie gesagt – an der Nextcloud-Installation auf der neu aufgesetzten Ubuntu 18.04-Maschine liegen.

          5. Guten Morgen,

            ich bin analog zu diesem Artikel vorgegangen: https://markus-blog.de/index.php/2018/02/13/neue-installation-nextcloud-13-auf-ubuntu-16-04-lts-mit-php7-2-fpm-und-apache2/

            Nextcloud läuft auch soweit, Fehler werden nicht geloggt mit der Ausnahme, dass der Fehler prptokolliert wird, wenn ich versuche, OO einzubinden.

            Ein einziges Problem, was bei dieser Installation – allerdings bereits vor der Migration auf die neue Umgebung – aufgetreten ist, dass sich der Kalender nicht mit Thunderbird 60.x synchronisieren lässt. Hier handelt es sich allerdings wohl um einen Bug in Thunderbird (https://support.mozilla.org/de/questions/1229880), der jedoch komischerweise in meiner Parallelinstallation unter 16.04 auch nicht auftritt. Es muss also etwas geben, was NC-spezifisch diesen Fehler auslöst.

            Viele Grüße

          6. So. Nochmal beide Guides durchgegangen. Nc 14 auf 18.04. und OnlyOffice (latest) auf dem selben Host mit Apache2. Funktioniert.

            wie werden die Subdomains auf dem Host bei Dir aufgelöst?

  3. Hallo und vielen Dank für das Tutorial!
    Ich habe nur ein Problem: Unter der eigentlichen Adresse des Document Servers läuft alles, man sieht also das Welcome Dokument. Aber unter Nextcloud (Vollkommen anderer Server, normaler webspace, kein vServer mit sudo-Rechten) nach der Einrichtung (inkl. dem richtigen Secret Key) wird auch alles gespeichert in den ONLYOFFICE EInstellungen, aber beim Aufruf gibt es nur die Fehlermeldung „ONLYOFFICE cannot be reached. Please contact admin“. Zuerst dachte ich, es liegt an der aktivierten Verschlüsselung der Nextcloud, aber auch bei deaktivierter Verschlüsselung tritt der Fehler weiter auf… Irgendeinen Tipp, woran das liegen könnte?
    In den logs von NC zeigt sich immer ein error in der „setting.php“ des ONLYOFFICE-Plugins, meist in Zeile 93, wo der Befehl „edit“ aufgerufen wird…. Daher bin ich da auch nicht schlauer. Vielleicht hast Du ja mit Deiner Erfahrung eine Ahnung, was ich noch versuchen kann?

    Viele Grüße, Ulf

      1. Hallo Markus!
        Vielen Dank für Deine Antwort und Hilfsbereitschaft! Tjaaaa….wie immer ist es einfacher als man denkt: Der dümmste anzunehmende User, also ich selber, hat sich reingelegt. 🙂 Funktioniert alles! Es lag an meinen umatrix-Einstellungen im Browser, nicht an Nextcloud, und nicht an Deiner Konfigurations-Anleitung!

        Eine Frage habe ich aber noch: Weißt Du auch eine Konfiguration für nginx, die so schön funktioniert wie Deine hier für Apache?

        Viele Grüße!

  4. Hallo Markus, danke für das Tutorial. Ich habe aber noch ein Problem: Bei mir läuft der OnlyOffice Server neben Apache. Der CommunityServer benötigt Port 443, wie Apache auch. Wie kann ich OnlyOffice auf einen anderen Port als 443 umstellen?

  5. Super, vielen Dank! Nach 50 Std. rumprobieren um die richtige apache2 conf für onlyoffice-documentserver(docker) zu finden, war dies ein Volltreffer. Ich habe noch eine Problemstellung: openKM (läuft unter Tomcat) mit HTTPS. Alle configs, die ich bis jetzt gefunden habe funktioren leider nicht.
    Gruss Guenter

Schreibe einen Kommentar zu Michael Sachtleber Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.