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