Bereitstellung ONLYOFFICE Community und Document Server mit Docker in Plesk Onyx und WebDAV zu Nextcloud

Heute wollen wir von ONLYOFFICE den Community Server innerhalb von Plesk in Betrieb nehmen und intern an den Document-Server anbinden, um Dokumente bearbeiten zu können. Per WebDAV binden wir dann unsere Nextcloud-Instanz an unser Web Office an.

Leider unterstützt die Community-Version nicht die Environment-Variable -- DOCUMENT_SERVER_JWT_SECRET="jwt_secret", die wir beim Ausrollen des OnlyOffice-Document-Servers für Nextcloud benutzt haben. Daher rollen wir einen weiteren Container aus, der nur „intern“ erreichbar ist.
Die Bereitstellung des ONLYOFFICE Mail Servers ist nicht Bestandteil dieses Tutorials, kann aber hier nachgelesenen werden.

Voraussetzungen:

  • Zugriff auf Host per ssh
  • Docker-Erweiterung in Plesk installiert und aktiviert
  • Leere Subdomain oder Domain in Plesk erstellt und mit SSL abgesichert

Step 1: Docker

Verbindung per ssh zum Host aufbauen und die folgenden Ordner für die persistenten Daten und Log-Files erstellen.

mysql:

sudo mkdir -p "/app/onlyoffice/mysql/conf.d";
sudo mkdir -p "/app/onlyoffice/mysql/data";
sudo mkdir -p "/app/onlyoffice/mysql/initdb";

Community Server:

sudo mkdir -p "/app/onlyoffice/CommunityServer/data";
sudo mkdir -p "/app/onlyoffice/CommunityServer/logs";

Document Server:

sudo mkdir -p "/app/onlyoffice/DocumentServer/data";
sudo mkdir -p "/app/onlyoffice/DocumentServer/logs";

Neues Docker Netzwerk „onlyoffice“ erstellen:

sudo docker network create --driver bridge onlyoffice

MySQL konfigurieren:

sudo nano /app/onlyoffice/mysql/conf.d/onlyoffice.cnf

Inhalt:

[mysqld]
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048
log-error = /var/log/mysql/error.log

Datei speichern und als nächstes das SQL-Setup-Script erstellen:

sudo nano /app/onlyoffice/mysql/initdb/setup.sql

Inhalt:

CREATE USER 'onlyoffice_user'@'localhost' IDENTIFIED BY 'onlyoffice_pass';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY 'my-secret-pw';
GRANT ALL PRIVILEGES ON * . * TO 'onlyoffice_user'@'%' IDENTIFIED BY 'onlyoffice_pass';
FLUSH PRIVILEGES;

danach rollen wir zuerst den MySQL-Container aus:

sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server \
-v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d \
-v /app/onlyoffice/mysql/data:/var/lib/mysql \
-v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=onlyoffice \
mysql:5.7

mit

sudo docker ps

überprüfen wir, ob der Container aktiv ist.

Als nächstes starten wir den Document Server:

sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/fonts:/usr/share/fonts/truetype/custom \
-v /app/onlyoffice/DocumentServer/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten \
onlyoffice/documentserver

Und zum Schluss starten wir noch den Community Server, bei dem wir nur die Ports 80 für das Portal und Port 5222 für den Chat nach außen „übersetzen“:

sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-community-server -p 8080:80 -p 5222:5222 \
-e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=onlyoffice \
-e MYSQL_SERVER_HOST=onlyoffice-mysql-server \
-e MYSQL_SERVER_USER=onlyoffice_user \
-e MYSQL_SERVER_PASS=onlyoffice_pass \
-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \
-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \
onlyoffice/communityserver

und prüfen jetzt wieder mit

sudo docker ps

ob alle drei Container gestartet sind.

Oder schauen im Plesk-Administrationspanel in der Docker-Erweiterung nach:

Step 2: Plesk

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

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

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

# Proxy to OnlyOfficeCommunityServer
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
RequestHeader set X-Forwarded-Proto "https"
ProxyVia Block

<Proxy *>
Require all granted
</Proxy>

# SSL Configuration - uses strong cipher list - these might need to be downgraded if you need to support older browsers/devices
SSLEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On

# HSTS (optional)
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"

In den nginx-Einstellungen deaktivieren wir alles, bis auf „Proxy mode“ und speichern mit „OK“.

Step 3: ONLYOFFICE:

Im Browser unserer Wahl rufen wir die OnlyOffice-Domain bzw. Subdomain auf und warten auf die Initialisierung:

Nach der Initialisierung müssen E-Mail-Adresse und Passwort für den Administrator des Portals vergeben werden. Diese sind natürlich frei wählbar. Wir stellen noch Sprache und Zeitzone ein und können dann das Portal starten.

In der Standard-Konfiguration müssen noch Mailserver und DNS-Einstellungen angepasst werden. Dazu oben rechts auf das „Zahnrad“ klicken:

und in die entsprechenden Einstellungen wechseln:

Step 4: Nextcloud

Jetzt können wir sogar noch unsere Nextcloud-Instanz per WebDAV anbinden und die Dokumente direkt über den Community-Server bearbeiten.

Dazu findet sich auf der Startseite „Dokumente“ unten links ein Icon:

Diese klicken wir an und geben die Verbindungs-URL im Format https://nextcloud.your-domain.tld/remote.php/webdav/, sowie unsere Anmeldedaten an:

Unter „Meine Dokumente“ wird dann für die Nextcloud-Dateien ein Ordner erstellt:

Step 4: Chat

Mit den oben genannten Einstellungen funktioniert der interne Chat bereits von „Haus“ aus.
Solltet Ihr einen externen Chat-Client (z.B. Trillian oder Pidgin) nutzen wollen, dann müsst Ihr den Port 5222 in der Plesk-Firewall freigeben und auf jeden Fall die DNS-Einstellungen (siehe oben) anpassen.

Schluss für heute und viel Spaß beim Ausprobieren! 🙂

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

Quellenangabe:
https://github.com/ONLYOFFICE/Docker-CommunityServer

Schreibe einen Kommentar

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