Collabora Online + Nextcloud auf Ubuntu 16.04

Vorbedingungen:

Ubuntu 16.04 mit Nextcloud (die unter einer Subdomain erreichbar ist. In diesem Fall ist dies cloud.nextcloud.com läuft)

A Record / cname für eine Domain (in diesem Bsp. office.nextcloud.com)

1.1 Docker auf Ubuntu 16.04

Als erstes installieren wir einmal Docker

sudo apt update
sudo apt install docker.io

Zum prüfen ob Docker richtig läuft nutzen wir systemctl

systemctl status docker

Sollte der Service nicht gestartet worden sein, versuchen wir es mit:

sudo systemctl start docker

Und da nach starten wir noch den Autostart:

sudo systemctl enable docker

1.2 Docker auf device mapper Speichertreiber umschalten:

Standardmässig nutzt Docker AUFS als Speichertreiber. Um aber Docker mit Collabora laufen zu lassen, müssen wir auf device mapper umschalten:

Als erstes erzeugen wir ein Ordner:

sudo mkdir /etc/systemd/system/docker.service.d

Dort erzeugen wir eine neue Datei

sudo vim /etc/systemd/system/docker.service.d/DeviceMapper.conf

Und fügen den folgenden Inhalt ein

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --storage-driver=devicemapper -H fd://

Die Datei abspeichern und schliessen. Dann wird Systemd neugeladen und Docker neugestartet.

sudo systemctl daemon-reload
sudo systemctl restart docker

Mit dem Kommando

sudo docker info

Die Ausgabe sollte nun folgendes zeigen:

Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.13.1
Storage Driver: devicemapper
 Pool Name: docker-253:1-515579-pool

2. Collabora Online installieren und laufen lassen

Das folgende Kommando lädet die neuste Version von Collabora Online Development Edition aus dem Docker hub herunter.

sudo docker pull collabora/code

Danach starten wir diesen Docker Container (Wichtig! Ersetzt die „cloud\\.your-domain\\.com durch eure Domain. Und hier muss die Domain von eurer Cloud rein!)

sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.your-domain\\.com' --restart always --cap-add MKNOD collabora/code

Wie man anhand das Paramenter hinter „-p“ sehen kann hört der Docker Container Collabora auf den Port 9980 von localhost (127.0.0.1).
Das können wir mit dem folgenden Kommando prüfen

sudo netstat -lnpt

 3. Reverse Proxy

Nextcloud benötigt einen TLS/SSL Zertifkat auf dem Collabora Server. Um dies zuerreichen richten wir ein Virtualhost ein und geben ihm ein Domain Namen, installieren ein TLS/SSL Zertifkat und setzen ein reverse proxy auf. Dafür können wir entweder Apache oder Nginx nutzen.

3.1 Apache Virtual Host

Als erstes installieren wir ein Apache Web Server

sudo apt install apache2

Nun erstellen wir eine Apache virtual host file. Ersetzt den Domain Namen mit eurem wirklichen Domain Namen (nicht den A record vergessen).

sudo vim /etc/apache2/sites-available/office.nextcloud.com.conf

In diese Datei kommt der folgende Code:

<VirtualHost *:80>
 ServerName office.nextcloud.com
 </VirtualHost>

Abspeicher und schliessen. Da nach aktivieren wir den virtual host:

sudo a2ensite office.nextcloud.com.conf

Dannach starten wir den Apache neu:

sudo systemctl restart apache2

HTTPS sichert uns gegen man-in-the-middle Angriffe ab.  Wir besorgen uns für unsere Zwecke ein freies TLS/SSl Zertifikat von Let’s Encrypt CA. Als erstes müsen wir dafür den certbot client installieren.  Seit ihr aber meiner Anleitung für die Nextcloud gefolgt könnt ihr auch, den schon heruntergeladen certbot verwenden.

3.1.1 Cerbot aus der Repository von Ubuntu

In den Ubuntu respository heißt er letsencrypt, deshalb geben wir nun folgendes ein:

sudo apt install letsencrypt python-letsencrypt-apache

Mit dem folgende Kommando bekommen wir ein freies TLS/SSL Zertifikat.

sudo letsencrypt --apache --agree-tos --email your-email-address -d office.nextcloud.com

3.1.2 Heruntergeladene Certbot

./certbot --apache --agree-tos --emailyour-email-address -d cloud.nextcloud.com

 

Die Ausführung des  Code bietet nun 2 Varianten an. „secure“ ist die empfehlenswerte Variante, da sie dafür sorgt das alle http Anfragen auf https umgelenkt werden.

3.1.2 Aufsetzen des apache reverse proxy

Erst aktivieren wir alle notwendigen Apache Module.

sudo a2enmod proxy proxy_wstunnel proxy_http ssl

Dann passen wir die von certbot (Let’s Encrypt) erzeugte virtual host Datei an:

sudo vim /etc/apache2/sites-enabled/office.nextcloud.com-le-ssl.conf

Fügt nun den grünen Text hinzu, da nach sollte die Datei so aussehen:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName office.nextcloud.com

  SSLCertificateFile /etc/letsencrypt/live/office.nextcloud.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/office.nextcloud.com/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf

  # Encoded slashes need to be allowed
  AllowEncodedSlashes NoDecode

  # Container uses a unique non-signed certificate
  SSLProxyEngine On
  SSLProxyVerify None
  SSLProxyCheckPeerCN Off
  SSLProxyCheckPeerName Off

  # keep the host
  ProxyPreserveHost On

  # static html, js, images, etc. served from loolwsd
  # loleaflet is the client part of LibreOffice Online
  ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
  ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet

  # WOPI discovery URL
  ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
  ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery

  # Main websocket
  ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

  # Admin Console websocket
  ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws

  # Download as, Fullscreen presentation and Image upload operations
  ProxyPass /lool https://127.0.0.1:9980/lool
  ProxyPassReverse /lool https://127.0.0.1:9980/lool

</VirtualHost>
</IfModule>

Speicher und schliessen, dann starten wir den Apache web server neu:

sudo systemctl restart apache2

 3.2.1 Nginx Virtual Host

Nun will ich euch die nginx Methode zeigen:

sudo apt install nginx

Auch hier erzeugen wir eine virtual host Datei

sudo nano /etc/nginx/conf.d/office.nextcloud.com.conf

Folgender Text wird in die Datei eingefügt

server {
  listen 80;
  server_name office.nextcloud.com;

  root /usr/share/nginx/office;
}

Speichere und schliess die Datei. Nun erstellen wir ein Verzeichnis für diesen virtual host.

sudo mkdir /usr/share/nginx/office

Da nach ändern wir den Besitzer diese Verzeichnis auf www-data (der Nginx user)

sudo chown www-data:www-data /usr/share/nginx/office -R

Neuladen des Nginx Server

sudo systemctl reload nginx

Nun besorgen wir uns ein TLS certificate von Let’s encrypt.

sudo apt install letsencrypt

Dazu nutzen wir das webroot plugin. Nicht vergessen die roten Stellen durch die richtigen Daten auszutauschen.

sudo letsencrypt certonly --webroot --email your-email-address -d office.nextcloud.com -w /usr/share/nginx/office/

Das Zertifikat wird unter /etc/letsencrypt/live/office.nextcloud.com/ gespeichert.

3.2.2 Nginx reserse Proxy

Als erstes editieren wir die virtual host Datei

sudo nano /etc/nginx/conf.d/office.nextcloud.com.conf

Wir passen die Datei wie folgt an:

server {
  listen 443 ssl;
  server_name office.nextcloud.com;
  root /usr/share/nginx/office;

  ssl_protocols TLSv1.1 TLSv1.2;
  ssl_certificate /etc/letsencrypt/live/office.nextcloud.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/office.nextcloud.com/privkey.pem;

  # static files
  location ^~ /loleaflet {
    proxy_pass https://localhost:9980;
    proxy_set_header Host $http_host;
  }

  # WOPI discovery URL
  location ^~ /hosting/discovery {
    proxy_pass https://localhost:9980;
    proxy_set_header Host $http_host;
  }

  # websockets, download, presentation and image upload
  location ^~ /lool {
    proxy_pass https://localhost:9980;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
  }
}

Abspeichern und schliessen. Dannach testen wir die Konfiguration mit

sudo nginx -t

und starten  Nginx neu

sudo systemctl reload nginx

 4. Letzer Schritt: Verbinde Nextcloud mit Collabora Online

Logt euch in euer Nextcloud ein und sucht unter Apps Collobora Online Connector. Fügt dort eure Domain ein (https://office.nextcloud.com).

Ich hoffe alles hat geklappt.

Vielen Dank nochmal an Xiao Guoan für das orginale Tutorial.

 

https://www.linuxbabe.com/cloud-storage/integrate-collabora-online-server-nextcloud-ubuntu-16-04

Schreibe einen Kommentar

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

*