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!
30 Gedanken zu „Bereitstellung OnlyOffice mit Docker und Apache2 als Reverse Proxy auf Ubuntu 16.04 LTS“
Hallo Markus,
wenn ich mit nach certbot –apache 1: onlyoffice.xyannic.tld auswähle, erhalte ich folgende Meldung:
An unexpected error occurred:
The server will not issue certificates for the identifier :: Error creating new order :: Cannot issue for „onlyoffice.xyannic.tld“: Domain name does not end with a valid public suffix (TLD)
Please see the logfiles in /var/log/letsencrypt for more details.
Hast du eine Lösung für mich? Danke
Hi,
Du musst „tld“ mit Deiner Domainendung ersetzen.
Gruß
Markus
Hallo Markus, mit welchem Befehl wird hier OnlyOffice installiert und mit welchem Befehl kann ich die OnlyOffice Enterprise Version installieren?
Hallo,
damit startest Du den OnlyOffice-Container:
das Image für Enterprise lautet onlyoffice/documentserver-ee
Hinweise dazu findest Du unter:
https://helpcenter.onlyoffice.com/installation/docs-enterprise-install-docker.aspx?_ga=2.77810004.1121717268.1618998547-394025384.1618998546
Gruß
Markus
danke! super hilfreich!! 🙂
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
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
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?
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.
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
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
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
Latest OnlyOffice nehme ich an?
Versuch mal in der config.php in der Nextcloud folgendes einzutragen:
‚onlyoffice‘ =>
array (
‚verify_peer_off‘ =>TRUE,
),
);
Gruß Markus
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.
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 ?
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.
Ok, die Nextcloud ist mit meinem Artikel aufgesetzt? Hast Du im Nextcloud Log noch irgendwelche Hinweise?
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
Nextcloud 13 oder höher?
Gruß Markus
Die aktuelle 14er Version.
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?
Danke!
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
Hallo Ulf,
Danke für Dein Feedback.
Hast Du mal die komplette Fehlermeldung für mich?
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!
Hallo Ulf. ?? dann ist ja gut ✅
Für nginx findest Du die conf hier:
https://github.com/ONLYOFFICE/document-server-proxy/blob/master/nginx/proxy-https-to-http.conf
Die sollte auch funktionieren.
Gruß Markus
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?
Hallo Julian,
Gerne.
Zu Deiner Frage eine Gegenfrage: der Community Server ist als Software installiert oder läuft auch mit Docker ohne Reverse Proxy, also nativ auf Port 443? Gruß Markus
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
Hallo Guenter, Danke für das Feedback.
Bezüglich openKM: Die Anleitung von openKM selbst funktioniert nicht?
Gruß
Markus