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!

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.

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

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.

Schreibe einen Kommentar

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

Ich akzeptiere