Setup Onlyoffice mit Docker-compose4 min zu lesen

Heute habe ich meinen Nextcloud umgestellt von Collabora/code auf Onlyoffice. Dies hat zu einem den Grund, das Onlyoffice etwas performanter ist und zum anderen auch mit Microsoft Office Dateien umgehen kann.
Nun eine kurze und schnelle Beschreibung wie ich das aufgesetzt habe.

In dieser Anleitung gehe ich davon aus das bereits Docker und Docker-compose installiert ist!

Docker-compose konfiguration erstellen

Zuerst muss eine docker-compose.yml Datei erstellt werden.
In diese schreiben wir folgendes ein und speichern dies dann ab.

version: '2.2'
services:
     onlyoffice:
       image: onlyoffice/documentserver:latest
       restart: always
       volumes:
       - /home/onlyoffice/data:/var/www/onlyoffice/Data
       environment:
       - JWT_ENABLED=true
       - JWT_SECRET=SuperSecretKey
       ports:
       - '8833:80'

Zur Erklärung:
Das Volume wird genötigt für Dateien innerhalb von Onlyoffice, die nicht bei einem Container Update verloren gehen sollen.
Die Enviroment Variablen (JWT_ENABLED und JWT_SECRET) benötigen wir damit nicht jeder, der die externe URL oder Port kennt zugriff auf Onlyoffice hat und dies mitbenutzen kann

Wenn die Datei erstellt ist, kann der Container schon gestartet werden. Dieser sollte nun laufen, wir können aber mit sudo netstat -tulpn | grep 8833 überprüfen ob der Container auf den Port 8833 richtig lauscht.

Dann geht es weiter. Wir öffnen nun den Port 833 mit sudo ufw allow 8833, anschliessend muss noch eine Konfiguration für Nginx erstellen.

Nginx einrichten

sudo vi /etc/nginx/sites-available/onlyoffice.conf
upstream docservice {
  server 0.0.0.0:8833;
}
map $http_host $this_host {
    "" $host;
    default $http_host;
}
map $http_x_forwarded_proto $the_scheme {
     default $http_x_forwarded_proto;
     "" $scheme;
}
map $http_x_forwarded_host $the_host {
    default $http_x_forwarded_host;
    "" $this_host;
}
map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
## Normal HTTP host
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_name office.domain.tld;
  server_tokens off;
  ## Redirects all traffic to the HTTPS host
  root /nowhere; ## root doesn't have to be a valid path since we are redirecting
  rewrite ^ https://$host$request_uri? permanent;
}
server {
  listen 0.0.0.0:443 ssl;
  listen [::]:443 ssl default_server;
  server_tokens off;
  root /usr/share/nginx/html;
  ## Strong SSL Security
  ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
  ssl on;
  ssl_certificate /etc/letsencrypt/live/office.domain.tld/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/office.domain.tld/privkey.pem;
  ssl_verify_client off;
  ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
  ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
  #ssl_session_cache  builtin:1000  shared:SSL:10m;
  ssl_prefer_server_ciphers   on;
  add_header Strict-Transport-Security max-age=31536000;
  # add_header X-Frame-Options SAMEORIGIN;
  add_header X-Content-Type-Options nosniff;
  ## [Optional] If your certficate has OCSP, enable OCSP stapling to reduce the overhead and latency of running SSL.
  ## Replace with your ssl_trusted_certificate. For more info see:
  ## - https://medium.com/devops-programming/4445f4862461
  ## - https://www.ruby-forum.com/topic/4419319
  ## - https://www.digitalocean.com/community/tutorials/how-to-configure-ocsp-stapling-on-apache-and-nginx
  # ssl_stapling on;
  # ssl_stapling_verify on;
  # ssl_trusted_certificate /etc/nginx/ssl/stapling.trusted.crt;
  # resolver 208.67.222.222 208.67.222.220 valid=300s; # Can change to your DNS resolver if desired
  # resolver_timeout 10s;
  ## [Optional] Generate a stronger DHE parameter:
  ##   cd /etc/ssl/certs
  ##   sudo openssl dhparam -out dhparam.pem 4096
  ##
  # ssl_dhparam /etc/ssl/certs/dhparam.pem;
  location / {
    proxy_pass http://docservice;
    proxy_http_version 1.1;
  }
}

Anschliessend wird ein Symlink erzeugt damit Nginx auch die Datei berücksichtigt beim start.

ln -s /etc/nginx/sites-available/onlyoffice.conf /etc/nginx/sites-enabled/onlyoffice.conf

Zertifikate erstellen

Im nächsten Schritt muss ein Zertifikat für die Webseite erstellt werden. Dies geschieht mit

sudo certbot certonly -d office.domain.tld

Wenn das Zertifikat erstellt ist, kann die Konfiguration überprüft und der Nginx Server neu gestartet werden.

sudo nginx -t
sudo service nginx restart

Ab diesem Zeitpunkt sollte bereits Onlyoffice laufen. Um das zu testen wird einfach mal die Internetseite geöffnet.

Dann gehts an die Einstellungen in Nextcloud.
Zuerst die Onlyoffice App herunterladen und installieren.
Anschliessend gehts in den Einstellungen weiter. Hier wird die URL eingetragen, sowie der Secretkey der zuvor im docker-compose File eingetragen wurde.

Danach sollte es funktionieren… Herzlichen Glückwunsch!

Sollten Fragen aufkommen, einfach in die Kommentare posten. Ich melde mich auf jedenfall..

Falls die Anleitung hilfreich war würde ich mich über ein Kommentar und einer Bewertung freuen.

Wie hat dir der Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (1 Stimme(n), durchschnittliche Bewertung: 5,00 von 5)
Loading...

12 Kommentare

  1. Hey hey. Mal eine Frage. Deine Artikel sind gut, aber leider für einen Docker-Compose wie mich Anfänger nicht geeignet.
    Derzeit benutzt ich einen ODROID N2 als Gerät in Verbindung mit einem RAID System und habe dort über Docker NextCloudPi laufen. Der Traum wäre es noch PiHole und OnlyOffice damit anschließen und das geht ja eben nur über PiHole und ich habe gar keine Ahnung wie das gehen soll. Ich versuche in das Thema einzusteigen, aber das ist zu komplex. Könntest du etwas in der Richtung machen oder Einsteigertipps geben, die mir dies ermöglichen?
    Viele Grüße

    1. Hallo und danke für deinen Kommentar. Docker-compose ist eigentlich einfacher, da man immer was hat wo man einen Container hoch und runter fahren kann. Aber ich habe mich auch am Anfang schwer getan.

      Also bei einem Compose File ist das möglich einziger Punkt wäre pihole nutzt nicht nginx als Webserver sondern lighthttpd. Aber ich denke da lässt sich was machen.

      1. Meinst du, du könntest in der Richtung mal etwas machen? Versuche gerade von Docker auf Docker-Compose umzusteigen mit NextCloudPi, aber irgendwas in meiner yml mach ich wohl immer falsch…

          1. Weiß gerade nicht genau, was du mit komplettem Setup etc. meinst, aber ich würde das auch echt gerne verstehen. Wie gesagt der Traum ist NCP, PiHole und OnlyOffice eben. Ich wollte deshalb selbstständig den ersten Schritt machen und NCP auf compose umstellen, aber irgendwas mit dem Volume mach ich falsch.

            Mach das, was du denkst. Finde auch leider dazu sehr wenig Erklärungen im Internet.

  2. Hey. Danke für die Mühe. https://paste.dasnetzundich.de/view/9983508e das ist der Link und eigentlich gibt es ja keine Passwörter. Problem ist, dass er mein Volume nicht erkennt. Alles liegt ja quasi mit Datenbank von NextCloud und NextCloudPi auf meinem RAID System und ja das ist eben dieser eine Pfad, aber so lässt sich das ganze zwar ausführen, aber der will mir alles neuinstallieren und ich glaube der erkennt den Pfad auch gar nicht richtig.

      1. Ne, das ist es nicht. Wie gesagt dann soll ich NCP komplett neu einrichten. Command ist von der yml vom Entwickler vorgegeben. Ist soweit ich weiß die IP zur Ersteinrichtung eben.

        https://github.com/nextcloud/nextcloudpi/blob/master/docker-compose-nc-armhf.yml

        Der mappt dieses Volume nicht. Sobald ich meinen docker run Befehl ausführe ist auch alles wieder da wie immer, da das Volume wohl so auch nirgendwo vermerkt wird. Das ist schwer zu erklären irgendwie…

          1. Ich danke dir tausendfach! Hat nun geklappt. Naja deinen Ansatz zu OnlyOffice krieg ich natürlich wieder trotzdem nicht hin… hab aber auch gar kein NGINX direkt installiert. Hab dann gedacht ich mach es mit dem offiziellen Guide von OnlyOffice, aber da hat man ja mal 100 Container und ganz andere Einstellungen, die außerdem zu treffen sind. Dachte immer so etwas ist komplett beschrieben, aber dem ist wohl nicht so. Bei PiHole dasselbe, aber da ja sowieso das Problem mit dem Port.

          2. Schön das freut mich. Also läuft nun alles, oder brauchst du was für Apache2?
            Schreibe aber trotzdem noch was zu dem Thema Docker. Wo hängt es denn bei Onlyoffice noch?

Schreibe einen Kommentar

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

Ich akzeptiere