Folgen Sie dieser Anleitung um OnlyOffice in ihre besthende Nextcloud unter derselben Domäne zu integrieren und alle gebräuchlichen Officedokumente lesen, bearbeiten und erzeugen zu können. Unabhängig davon, ob es sich um Microsoft-Office oder Libre-Office Dokumente handelt.
- Einrichtung Docker
- Verbindung prüfen und sicherstellen mittels Cronjob
- Aktualisierung von OnlyOffice
- Hilfestellungen rund um Docker
Beginnen wir – melden Sie sich mit sudo-Berechtiungen an um das System vorzubereiten:
sudo -s
apt install apt-transport-https ca-certificates curl software-properties-common -y
Ubuntu
apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Debian
apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)
apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Ubuntu und Debian
Aktualisieren Sie Ihren Server und installieren dann Docker-CE:
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Stellen Sie sicher, dass Docker funktioniert. Führen Sie dazu das folgende Statement aus:
docker run hello-world
Wenn das funktioniert hat, dann beginnen Sie mit dem Download und der Installation des ONLYOFFICE Documentservers (latest):
docker pull onlyoffice/documentserver
Weitere Releases können Sie hier ermitteln und ggf. durch die Angabe des Releases eine dedizierte Version
Beispielsweise:
docker pull onlyoffice/documentserver:9.1
herunterladen und verwenden.
Es werden ca. 750 MB heruntergeladen und verifiziert.

Im Anschluß daran wird der Webserver nginx angepasst:
nano /etc/nginx/nginx.conf
Fügen Sie diesen Block hinzu: upstream onlyoffice-docker { server 127.0.0.1:8443; }
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on; use epoll;
}
http {
server_names_hash_bucket_size 64;
upstream onlyoffice-docker {
server 127.0.0.1:8443;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
[...]
Weiterführende Informationen des Herstellers OnlyOffice finden Sie u.a. hier: https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx. Überprüfen Sie die /etc/nginx/nextcloud.conf bzgl. der Verwendung von TLS v. 1.2, welches von ONLYOFFICE bevorzugt benötigt wird:
nano /etc/nginx/nginx.conf
...
ssl_session_tickets off;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384';
ssl_ecdh_curve X448:secp521r1:secp384r1;
...
Stellen Sie zudem sicher, dass der Eintrag (‚allow_local_remote_servers‘ => true,)
nano /var/www/nextcloud/config/config.php
in der config.php enthalten ist:
[...]
'allow_local_remote_servers' => true,
[...]
Starten Sie dann den Webserver nginx und PHP neu:
systemctl restart php8.3-fpm nginx.service
Erzeugen Sie neue Ordner und kopieren Ihre SSL-Zertifikate (bspw. Let’s Encrypt Zertifikate) hinein:
mkdir -p /app/onlyoffice/DocumentServer/data/certs cp /etc/letsencrypt/rsa-certs/privkey.pem /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
cp /etc/letsencrypt/rsa-certs/fullchain.pem /app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt cp /etc/ssl/certs/dhparam.pem /app/onlyoffice/DocumentServer/data/certs/dhparam.pem chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
Dieser Schritt muss nach jeder Zertifikatserneuerung wiederholt werden und wird daher durch das automatisierte Skript (renewal.sh) per Cronjob ausgeführt:
nano /root/renewal.sh
#!/bin/bash
echo "... requesting TLS-renewal"
sudo -u acmeuser "/home/acmeuser/.acme.sh"/acme.sh --cron --home "/home/acmeuser/.acme.sh"
echo "... stopping nginx-Webserver"
/usr/bin/systemctl stop nginx
echo "... restarting services (mysql, redis, php)"
/usr/bin/systemctl restart mariadb.service redis-server.service php8.3-fpm.service
echo "... copying certificates to the OnlyOffice-Docker"
cp /etc/letsencrypt/rsa-certs/privkey.pem /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
cp /etc/letsencrypt/rsa-certs/fullchain.pem /app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
cp /etc/ssl/certs/dhparam.pem /app/onlyoffice/DocumentServer/data/certs/dhparam.pem
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
echo "... restarting OnlyOffice-Docker"
/usr/bin/docker restart ONLYOFFICEDOCKER
echo "... restarting nginx-Webserver"
/usr/bin/systemctl restart nginx.service
exit 0
Markieren Sie das Skript als ausführbar
chmod +x /root/renewal.sh
und fügen einen wöchentlichen Cronjob der crontab-Datei hinzu:
(crontab -l ; echo "@weekly /root/renewal.sh > /var/log/renewal.log 2>&1") | crontab -u root -
Sofern Sie vorab unserem Nextcloud-Guide gefolgt sind, so deaktivieren Sie noch den acme-Cronjob:
crontab -e -u acmeuser
Kommentieren Sie dazu den Job durch setzen eines ‚#‘-Zeichens aus:
# 19 0 * * * "/home/acmeuser/.acme.sh"/acme.sh --cron --home "/home/acmeuser/.acme.sh" > /dev/null
Geben Sie den Port 8443 frei
ufw allow 8443/tcp comment "OnlyOffice"
Starten Sie nun den ONLYOFFICE-Dockercontainer mit dem folgenden Einzeiler. Passen Sie dazu bitte ‚yoursecret ‚nach Ihrem Bedarf an.
docker run --name=ONLYOFFICEDOCKER -i -t -d -p 8443:443 --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
-e JWT_ENABLED='true' -e JWT_SECRET='yoursecret' onlyoffice/documentserver
Warten Sie einen kurzen Moment ab und überprüfen dann die Erreichbarkeit des ONLYOFFICE-Servers:
https://ihre.domain.de:8443/

Wählen Sie sich in Ihre Nextcloud als Administrator ein und aktivieren dort die ONLYOFFICE-App. Oder führen Sie auf der Kommandozeile diesen Befehl aus:
sudo -u www-data php /var/www/nextcloud/occ app:enable onlyoffice
Wechseln Sie in die Einstellungen und tragen Ihre Nextcloud-Domäne (https://ihre.domain.de:8443) inkl. des TCP-Ports 8443 ein. Setzen Sie zudem das von Ihnen vergebene Passwort ‚yoursecret‚.


Ab sofort können Sie Ihre Office-Dokumente lesen, bearbeiten und auch neue Officedokumente direkt in Ihrer Nextcloud erzeugen:


2. Verbindung überprüfen und ggf. neu verbinden
Erstellen Sie das Skript onlyoffice.sh
nano /root/onlyoffice.sh
und fügen Sie den Inhalt (rote Werte anpassen) ein:
#!/bin/bash
sudo -u www-data php /var/www/nextcloud/occ onlyoffice:documentserver --check
if [[ $? == 0 ]]
then
echo "OnlyOffice is successfully connected"
else
echo "OnlyOffice is NOT successfully connected, we will try to connect now"
sudo -u www-data php /var/www/nextcloud/occ config:app:set onlyoffice DocumentServerUrl --value="https://ihre.domain.de"
sudo -u www-data php /var/www/nextcloud/occ config:app:set onlyoffice jwt_secret --value="yoursecret"
fi
exit 0
Machen Sie das Skript ausführbar und tragen es dann als Cronjob ein.
chmod +x /root/onlyoffice.sh
crontab -e
fügen Sie diese Zeile am Ende ein:
0 4 * * * /root/onlyoffice.sh > /var/log/onlyoffice.log 2>&1
Somit wird jede Nacht bspw. um 04.00 Uhr die Verbindung geprüft und ggf. neu gesetzt.
3. Wie aktualisieren Sie den Dockercontainer?
Stoppen des OnlyOffice-Containers:
docker stop ONLYOFFICEDOCKER
Entfernen des OnlyOffice-Containers:
docker rm ONLYOFFICEDOCKER
docker image rm $(docker image ls | grep onlyoffice/documentserver | awk '{ print $3 }')
Aktualisierung/Neustart des OnlyOffice-Containers:
docker run --name=ONLYOFFICEDOCKER -i -t -d -p 8443:443 --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
-e JWT_ENABLED='true' -e JWT_SECRET='yoursecret' onlyoffice/documentserver
4. Hilfestellungen rund um DOCKER:
Status der Dockercontainer:
docker ps docker image list
Speicherbelgung:
docker system df
Speicherplatz freigeben:
docker system prune
Achtung, das entfernt:
– alle gestoppten container
– alle Netzwerke, die nicht von mindestens einem Container verwendet werden
– dangling images
– build cache
Die Installation Ihres Nextcloudservers und der ONLYOFFICE Suite wurde erfolgreich abgeschlossen und so wünsche ich Ihnen viel Spaß mit Ihren Daten in Ihrer privaten Cloud. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!


