AppsDockerNextcloudPleskVPS

Bereitstellung OnlyOffice mit Docker in Plesk Onyx

Analog zu meinem Beitrag von gestern, möchte ich Euch heute zeigen wie Ihr Only Office Documentserver mit Docker in Plesk Onyx in Betrieb nehmt. Dabei sichern wir den Zugriff mit einem Passwort ab, so dass nur Euch bekannte Nextcloud-Instanzen darauf zugreifen können.

Voraussetzungen:

  • Zugriff auf Host per ssh
  • Docker-Erweiterung in Plesk installiert und aktiviert
  • Funktionierende Nextcloud-Installation mit OnlyOffice-App
  • Leere Subdomain in Plesk erstellt und mit SSL abgesichert

Ablauf:

Verbindung per ssh zum Host aufbauen und Docker-Container bereitstellen, dabei SECRET anpassen:

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

danach mit

docker ps

überprüfen, ob Container aktiv ist.

Die weitere Konfiguration erfolgt über das Plesk Administrations-Panel.

Unter „Tools & Settings“ -> „General Settings“ -> „Apache Web Server“ aktivieren wir die eingekreisten Module (Häkchen setzen und „OK“):

danach wechseln wir in unsere Subdomain, weiter in die „Apache & nginx Settings“ und setzen in den „Additional Apache directives“ unter „HTTPS“ den folgenden Block ein:

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/"

Die nginx settings belassen wir im Standard und bestätigen mit „OK“.

Zur Kontrolle rufen wir auch hier noch unsere OnlyOffice-Subdomain 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:

Schluss für heute und viel Erfolg! 🙂

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

29 Gedanken zu „Bereitstellung OnlyOffice mit Docker in Plesk Onyx

  1. Hallo Markus,
    vielen Dank für deine Anleitung. Ich hatte leider zwei Fehler während der Installation:
    1. Bei den Apache-Modulen fehlt mir proxy_html und setenvif zum anhaken
    2. Bei der Speicherung der Apache-Anweisungen (auf Subdomain) im HTTPS-Block kommt folgende Fehlermeldung
    Ungültige Apache-Konfiguration: AH00526: Syntax error on line 7 of /var/www/vhosts/system/office.base66.de/conf/vhost_ssl.conf: first argument must be ‚add‘, ’set‘, ‚append‘, ‚merge‘, ‚unset‘, ‚echo‘, ‚edit‘, or ‚edit*‘.

    Hast Du eine Idee?

    Viele Grüße

    Dirk

          1. Hallo Markus,
            ich habe mal recherchiert – ich glaube der Plesk läuft im optimized mode – bin mir allerdings nicht wirklich sicher. Gibt es irgendwo einen Hinweis? Falls er im optimized mode läuft kann ich trotzdem OnlyOffice oder Collabora im Docker laufen lassen?
            Viele Grüße

            Dirk

          2. Hallo Dirk,

            konnte gestern Abend CentOS 7 mit Plesk aufsetzen und den Fehler nachvollziehen.
            probier mal die beiden Zeilen:
            RequestHeader setifempty X-Forwarded-Proto https
            RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e

            in
            RequestHeader set X-Forwarded-Proto https
            RequestHeader set X-Forwarded-Host %{THE_HOST}e

            zu ändern.

            Gruß
            Markus

          3. Hallo Markus,
            vielen Dank für Deine Mühen und das Aufsetzen von Cent OS mit Plesk.
            Die beiden Zeilen habe ich ausgetauscht und bin einen großen Schritt weitergekommen
            Der OnlyOffice Dokumentenserver läuft „Document Server is running“ 🙂
            Beim Speichern der Konfiguration in OnlyOffice erhalte ich nun folgenden Fehler
            GetConvertedUri on check error: Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.
            Irgendwie bekommt er keine Verbindung. Habe eine Subdomain eingerichtet mit Let’s encrypt Zertifikat
            gesichert und diese URL auch eingetragen.
            Hast Du noch eine Idee? Kann es mit dem Zertifikat zusammenhängen?

            Viele Grüße
            Dirk

          4. Hallo Markus,
            habe mir den Troubleshooting Artikel angesehen, komme aber leider nicht weiter.
            Es könnte an dem Zertifikatshandling liegen. Ich habe folgende Konfiguration
            „hugo1“ als Platzhalter
            1. Hauptdomain http://www.hugo1.de abgesichert mit LetsEncrypt
            2. Subdomain nextcloud.hugo1.de -> abgesichert mit LetsEncrypt
            2. Subdomain onlyoffice.hugo1.de -> abgesichert mit LetsEncrypt – Docker-Installation, hier lauft der Dokuserver aktiv und ist von aussen aufrufbar
            Kann es sein dass diese Konstellation Probleme macht? Ich kann leider unterhalb der Subdomain nextcloud keine weitere anlegen, ich habe nur eine .de Domain bei dieser Installation

            Viele Grüße Dirk

          5. Moin Dirk,
            Genau in dieser Konfiguration sollte es auch laufen.
            In den beiden Subdomains sind LogFiles zu finden, was wird dort aufgezeichnet, wenn Du die Konfiguration versuchst zu speichern bzw. ein Dokument versuchst aufzurufen?

          6. Hallo Markus,

            hier der Log-Eintrag von Nextcloud:
            {„reqId“:“W7EKYXAmPYjbIN2rHYBXIwAAAEg“,“level“:3,“time“:“2018-09-30T17:39:51+00:00″,“remoteAddr“:“99.999.99.999″,“user“:“admin“,“app“:“onlyoffice“,
            „method“:“PUT“,“url“:“\/index.php\/apps\/onlyoffice\/ajax\/settings“,“message“:“GetConvertedUri on check error: Im Dokumentenservice ist ein Fehler aufgetreten:
            Error while downloading the document file to be converted.“,“userAgent“:“Mozilla\/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko\/20100101 Firefox\/62.0″,“version“:“13.0.6.1″}

            und von OnlyOffice:

            178.254.28.182 – – [30/Sep/2018:19:54:42 +0200] „GET /healthcheck HTTP/1.0“ 200 417 „-“ „-“
            178.254.28.182 – – [30/Sep/2018:19:54:42 +0200] „POST /coauthoring/CommandService.ashx HTTP/1.0“ 200 462 „-“ „-“
            178.254.28.182 – – [30/Sep/2018:19:54:42 +0200] „POST /ConvertService.ashx HTTP/1.0“ 200 517 „-“ „-“

            Viele Grüße
            Dirk

          7. Hallo Dirk,

            Das ist nicht wirklich viel.

            Versuch mal in der config.php von Nextcloud den folgenden Block einzusetzen:

            'onlyoffice' =>
            array (
            'verify_peer_off' => TRUE,
            ),

            Ändert sich da etwas an dem Verhalten?

            Gruß Markus

          8. Hallo Markus,
            ich habe die Zeilen in der config.php ergänzt, hat leider keine Wirkung erzeugt, die Fehlermeldungen bleiben die gleichen
            Hättest Du noch einen Tipp?

            Viele Grüße

            Dirk

          9. Hi Dirk,

            Habe ich mir angeschaut. Leider könnte ich das erst am Wochenende noch einmal testen, aber auf Apache übertragen:
            In dem Nextcloud-vHost unter Apache nginx Einstellungen im Block Apache-https den folgenden Block hinzufügen und die Office-Domain anpassen:

            Header always set X-Frame-Options „ALLOW-FROM https://office.your-domain.tld

            Dann noch mal testen.

            Gruß Markus

          10. Hallo Markus,
            habe jetzt unter Apache-ngix Einstellung im Bereich Apache https folgende Zeile (Zeile 2) eingefügt, den Apache nochals gestartet, leider noch ohne Erfolg.

            Header always set Strict-Transport-Security „max-age=15768000; preload; includeSubDomains“
            Header always set X-Frame-Options „allow-from https://office.domain.tld/

            Viele Grüße
            Dirk

          11. Hallo Markus,

            ich habe nochmals bei den Docker-Einstellung von OnlyOffice nachgeschaut:

            hier gibt es den Bereich manuelles Mapping:
            bei https: steht hier 443 zum externen Port [leer]
            bei http: steht hier 80 zum externen Port 9981

            Könnte es sein dass es hier einen Portkonflikt gibt?

            Viele Grüße

            Dirk

          12. Hallo Dirk, nein keinesfalls 443 und 80 sind die internen Ports von dem Docker-Container. Der 80er Port wird auf 9981 übersetzt und der 443 wird nicht übersetzt.
            Bei Dir scheint irgendwo anders noch etwas zu hängen.
            Kannst Du mir mal ein paar Screenshots von den Einstellungen der vHosts Nextcloud/Office per Mail zukommen lassen?
            Gruß
            Markus

  2. Hallo Markus,

    danke für die tolle Anleitung. Funktioniert bei mir einwandfrei. Hast Du vielleicht auch eine Anleitung, wie man den OnlyOffice Community-Server als Docker-Image hinzufügen und mit dem Document Server verbinden kann? Ebenfalls hinter dem PLESK-Apache-Proxy.

    Gruß
    Jakob

  3. Hallo Markus,
    wenn ich die OnlyOffice SubDomain aufrufe dann kommt bei mir:
    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at xxx@xxxx.de to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

    Apache Server at office.xx.xx Port 443

  4. Ahoy Markus,

    ich habe eben nochmals geschaut. „allow_url_fopen“ war nur bei der onlyoffice Subdomain aktiviert, aber nicht bei der „nextcloud“ subdomain, dass war der Fehler. Jetzt läufts. 🙂

    Vielen Dank für Deine Hilfe und das tolle Tutorial.

    Keeps up the good work!

    LG Jan

  5. Ahoy Markus, vielen Dank für Deine Anleitung, die mir viel Zeit gespart hat. 🙂 Bei mir klappt alles bis auf den letzten Schritt. Leider habe auch nach mehreren Stunden Rechereche keine Lösung gefunden. Wenn ich die Konfiguration in der Nextcloud/OnlyOffice App speichern will, bekomme ich folgende Fehlermeldung: „CommandRequest on check error: Bad Request oder Timeout Fehlermeldung“ im Nextcloud-Log steht noch folgendes:
    Level: Error | App: PHP | Message: „file_get_contents(https://SUBDOMAIN.DOMAIN.TLD/coauthoring/CommandService.ashx): failed to open stream: no suitable wrapper could be found at /var/www/vhosts/DOMAIN.TLD/nextcloud/apps/onlyoffice/lib/documentservice.php#351″
    und
    Level: Error | App: PHP | Message: „file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 at /var/www/vhosts/DOMAIN.TLD/nextcloud/apps/onlyoffice/lib/documentservice.php#351“

    Der OnlyOffice DocumentServer läuft; Nextcloud ist auf dem neuesten Stand 13.0.4
    Ansonsten nutze ich Ubuntu 16.04 LTS und Plesk Onyx 17.8.11 Update #13

    Hast Du vielleicht einen Ansatzpunkt, wo ich noch suchen könnte?
    LG Jan

      1. Ahoy Markus, danke für die schnelle Antwort. „allow_url_fopen“ war bereits auf „on (default)“.

        Nextcloud und onlyoffice laufen beide auf einem Server. onlyoffice in der docker Umgebung.

        Wenn ich mich per SSH einlogge, kann ich per wget sowohl auf die Nextcloud Subdomain als auch die Onlyoffice Subdomain zugreifen.

        LG Jan

Schreibe einen Kommentar

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