- Vorbedingungen:
- 1.1 Docker auf Ubuntu 16.04
- 1.2 Docker auf device mapper Speichertreiber umschalten:
- 2. Collabora Online installieren und laufen lassen
- 3. Reverse Proxy
- 3.1 Apache Virtual Host
- 3.1.2 Aufsetzen des apache reverse proxy
- 3.2.1 Nginx Virtual Host
- 3.2.2 Nginx reserse Proxy
- 4. Letzer Schritt: Verbinde Nextcloud mit Collabora Online
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
