So. Okt 25th, 2020
Mastodon
0
(0)

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.

Comments from Mastodon:

Wie fandest du den Post?

Auf einen Stern klicken zum bewerten

durchschnittlich 0 / 5. bereits abgestimmt haben: 0

Keine Bewertungen bisher, sei der erste

Von lars

0 Gedanken zu „Setup Onlyoffice mit Docker-compose“
  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

  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.

  3. OnlyOffice allgemein habe ich nicht verstanden. Die Installation wie vorgeschlagen von den Entwicklern selbst lief nicht und ich weiß auch nicht, ob man das alles benötigt. Weil deine Anleitung ja gerade mal ein Bruchteil davon ist. Nur fing es direkt damit an, dass ich NGINX nicht installiert habe. Klar hätte ich dann machen können, aber habe ich nicht. War verwundert, dass es nicht installiert ist. Aber bin gespannt, wenn du noch etwas zu Docker schreibst.

    1. Jaaa das kenne ich von Nextcloud im Docker. Müsste man wenn das selbst kompilieren aber dann geht der Komfort flöten. Ich habe es auf meinem Server allerdings so gemacht. Nextcloud, WordPress in Containern aber Nginx auf dem Hostsystem. Aber da NextcloudPi auf Apache läuft und Pihole auf Lighthttpd kannste das vergessen. ?

      1. Ich find NextCloudPi in Docker aber eben super nice. Easy to Use and maintain. Problem ist für meinen ODROID N2 gibts auch kein Image für NCP, so dass ich es ohne Docker machen könnte und ich glaub das würde ja auch nichts ändern, weil der die Ports ja trotzdem brauchen würde.

        Für OnlyOffice muss es ja auch etwas Leistungsstärkeres sein und da hab ich nun mal nur meinen N2. Ich hab aber für PiHole an für sich noch einen Pi3B hier rumfliegen. Das müsste ja gehen oder?

        Aber zurück zu dem OnlyOffice Ding, das müsste ja gehen, aber die compose Datei von denen ging bei mir nicht: https://raw.githubusercontent.com/ONLYOFFICE/Docker-DocumentServer/master/docker-compose.yml

Schreibe einen Kommentar

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