Viele von Euch werden bereits Nextcloud als favorisierte private Cloud-Lösung nutzen. Ob in der heimischen Besenkammer, im Keller oder beim Hoster Eures Vertrauens: Der legitime ownCloud-Nachfolger hat seit der damaligen Abspaltung für viel Furore gesorgt und ist auch hier im Blog bekanntermassen eins meiner definitiven Lieblingsthemen. Was bisher noch fehlte, war die Möglichkeit, Dokumente auch über das Webinterface bearbeiten zu können. Dafür gibt es Collabora Online, eine Open Source Office Suite, die auf dem bekannten LibreOffice basiert und genau diese noch fehlenden Fähigkeiten nahtlos in Nextcloud integriert. Wie das in meiner favorisierten Kombination aus Ubuntu Linux und dem Apache-Webserver im Detail geht, möchte ich Euch im Laufe des Tutorials einmal näherbringen!
Collabora Online läuft hierbei in einem Docker-Container und unterstützt meine bevorzugte Basis aus Debian – respektive hier: Ubuntu – Linux und Apache. Warum Apache? Das hat sich seit ungefähr 1999, als ich das erste Mal mit dem Webserver in Berührung gekommen bin, so herauskristallisiert und nach all der Zeit kann ich mich nur schwerlich an Nginx als Webserver gewöhnen. “Schuster, bleib’ bei Deinen Leisten” ist also hier das Motto und Apache ist bei mir einfach gesetzt – dementsprechend liegt der Fokus in diesem Tutorial auch auf diesem Webserver und nicht auf dem neueren Nginx, den viele von Euch sicherlich auch bevorzugen.
Die Web-Integration von LibreOffice bietet nicht dabei nicht nur grundsätzliche Bearbeitungsfunktionen, sondern auch klassisches WYSIWYG-Rendering und dabei auch Unterstützung von diversen bekannten Dateiformaten wie .DOC, .DOCX, .PPT, .PPTX, .XLS, .XLSX oder OD. Auch der Import und das Betrachten von Visio- und Publisher-Dokumenten samt über hundert weiterer Dateiformate ist möglich und wer gerne gemeinsam an Dokumenten arbeitet (ob in der Familie oder im Projektteam), wird eben diese Funktionen auch innerhalb seiner eigenen Cloud schnell lieben lernen.
Schritt 1: Die Installation von Docker
Als Basis für alles Weitere dient im vorliegenden Fall eine Nextcloud 13-Installation, die auf einem Ubuntu Linux 16.04.4 LTS fußt. Hier gilt es zunächst, mit Docker die Basis für die genutzte Container-Technologie zu schaffen. Dabei bedienen wir uns der vorhandenen Ubuntu-Paket-Repositories:
1
2
|
sudo apt update
sudo apt install docker.io
|
Ist die Installation erfolgt, können wir den erfolgreichen Start des Docker-Daemons durch Eingabe von
1
|
systemctl status docker
|
entsprechend prüfen. Bei meinem System, welches bereits länger online ist, sieht das beispielsweise wie folgt aus:
Sollte der Dienst nicht wie erwartet gestartet sein, können wir ihn durch Eingabe von
1
|
sudo systemctl start docker
|
entsprechend starten und im Nachgang durch den Befehl
1
|
sudo systemctl enable docker
|
dafür sorgen, dass Docker auch nach dem Neustart des Linux-Gastsystems direkt geladen wird. Standardmäßig nutzt Docker übrigens AUFS als Storage-Treiber auf Debian und Ubuntu. Damit das Ganze aber auch in Verbindung mit Collabora Online funktioniert, müssen wir hier eine Änderung zur Nutzung des Device Mapper-Treibers erwirken. Dazu muss erst einmal durch Eingabe des Befehls
1
|
sudo mkdir /etc/systemd/system/docker.service.d
|
ein neues Verzeichnis erstellt werden. Dann legen wir eine neue Konfigurationsdatei an, die ich in meinem Fall mit dem guten, alten vi-Editor anpasse:
1
|
sudo vi /etc/systemd/system/docker.service.d/DeviceMapper.conf
|
Diese befüllen wir mit dem folgenden Inhalt:
1
2
3
|
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd —storage–driver=devicemapper –H fd://
|
Nach dem Speichern und Schliessen der Datei starten wir durch Eingabe von
1
|
sudo systemctl daemon–reload
|
einmal den Systemd-Dienst sowie anschliessend durch den Befehl
1
|
sudo systemctl restart docker
|
den Docker-Dienst an sich neu. Die Prüfung, ob der Storage-Treiber nun der Device Mapper ist, können wir wiederum durch Eingabe von
1
|
sudo docker info
|
prüfen und nach einem genauen Blick auch abnicken.
Damit haben wir im ersten Schritt alle Voraussetzungen für den weiteren Verlauf dieses Tutorials geschaffen und können uns in Schritt 2 an die Installation von Collabora Online machen!
Schritt 2: Die Installation und der erste Start von Collabora Online
Nun, da unser Docker brav im Hintergrund seinen Dienst verrichtet, können wir uns das fertige Image der Collabora Online Development Edition in Version 3.1 von github in einen Container herunterladen. Mittel zum Zweck ist hier der Befehl
1
|
sudo docker pull collabora/code
|
und ein wenig Geduld, bis – je nach der genutzten Internet-Anbindung – das komplette Image mit allen Support-Dateien heruntergeladen ist. Ist das ohne Fehlermeldungen geschehen, können wir den Container starten. Hier gehen wir davon aus, dass Eure bisher genutzte Nextcloud-Instanz unter dem Hostnamen nextcloud.domain.tld erreichbar ist, den Ihr selbstverständlich entsprechend abändern müßt:
1
|
sudo docker run –t –d –p 127.0.0.1:9980:9980 –e ‚domain=nextcloud\.domain\.tld‘ —restart always —cap–add MKNOD collabora/code
|
Der Collabora Online Server beginnt nach der oben aufgeführten Befehlszeile anschliessend, auf Port 9980 Eures Servers zu lauschen. Dies kann durch
1
|
sudo netstat –lnpt
|
entsprechend überprüft werden. Paßt auch die Ausgabe und sieht in etwa wie die nachfolgende meines Systems aus, können wir auch einen Haken hinter Schritt 2 machen und uns nun im nächsten Schritt dem Reverse Proxy zuwenden.
Schritt 3: Die Apache-Konfiguration
Ein bereits bestehenden Apache-Webserver für unsere bisherige Nextcloud-Installation vorausgesetzt, erstellen wir nun eine neue Konfigurationsdatei
1
|
sudo vi /etc/apache2/sites–available/office.domain.tld.conf
|
und befüllen diese mit dem folgenden Inhalt:
1
2
3
|
<VirtualHost *:80>
ServerName office.domain.tld
</VirtualHost>
|
Nach dem Speichern aktivieren wir die Konfiguration im Webserver:
1
|
sudo a2ensite office.domain.tld.conf
|
und starten durch Eingabe von
1
|
sudo systemctl restart apache2
|
den Webserver neu.
Nun geht es darum, den Webserver respektive den neuen Host über SSL zu verschlüsseln und ein Zertifikat zu generieren. Da meine Nextcloud-Instanz bereits ein entsprechendes Zertifikat mit Hilfe von certbot-auto bekommen hat, haben wir bereits alle Hilfsmittel an Bord und durch Eingabe von
1
|
/usr/bin/certbot–auto
|
wird die Beantragung für den neuen Host, der bei mir an Position 2 steht, gestartet. Das Ganze kann natürlich automatisiert werden, wir gehen aber die Punkte einzeln durch und am Ende sollte eine entsprechende Erfolgsmeldung die neuen Zertifikate auf dem System ablegen. Faustregel hier ist: Läuft Eure Nextcloud-Instanz bereits via SSL, werdet Ihr hier auch keine Probleme bekommen!
Schritt 4: Einrichtung des Reverse-Proxy
Während ein klassischer Forward-Proxy Client-Geräte in einem Netzwerk vor Einflüssen aus dem Internet schützt (beispielsweise aus dem Unternehmens-Netzwerk heraus), arbeitet ein Reverse-Proxy dem Namen entsprechend in umgekehrter Richtung. Ein solcher hier benötigter Proxy-Server wird als zusätzliche Sicherheitskomponente vor einen oder mehrere Webserver geschaltet, um Anfragen aus dem Internet stellvertretend entgegenzunehmen und an einen Backend-Server im Hintergrund weiterzuleiten.
Dies erreichen wir durch einen weiteren virtuellen Host, den ich der Einfachheit halber hier als “office.domain.tld” bezeichne und den wir nachfolgend dem Apache-Webserver einmal bekannt machen. Wichtig: Beide Hosts laufen auf demselben Webserver, wir benötigen für unser Collabora Online-Backend also nicht einen zweiten Linux-Server, was im klassischen Anwendungsfall einer kleinen heimischen Cloud ein wenig überzogen wäre. In größeren, entsprechend skalierten Umgebungen kann das schon anders aussehen, das soll aber heute nicht unser Thema sein.
Damit der Reverse Proxy über unseren Apache-Webserver überhaupt erst einmal lauffähig ist, müssen wir die Funktion samt etwaiger noch nicht genutzter Module durch Eingabe von
1
|
sudo a2enmod proxy proxy_wstunnel proxy_http ssl
|
erst einmal aktivieren. Dann machen wir uns daran, die gerade durch den Certbot generierte Konfigurationsdatei grundlegend zu editieren:
1
|
sudo vi /etc/apache2/sites–enabled/office.domain.tld–le–ssl.conf
|
Der Inhalt der Datei sollte dann wie folgt aussehen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName office.your–domain.com
SSLCertificateFile /etc/letsencrypt/live/office.domain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/office.domain.tld/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>
|
Einmal speichern und wir können den Apache2-Webserver einmal neu starten. Wie üblich führt der Befehl
1
|
sudo systemctl restart apache2
|
zum Ziel und unsere Änderungen auf System-Ebene sollten somit komplett sein. Weiter geht es in Schritt 5 im Nextcloud-Backend, denn nun muss unsere private Cloud noch wissen, dass da überhaupt eine Collabora Online-Instanz im Hintergrund auf die gemeinsame Zusammenarbeit wartet!
Schritt 5: Abschliessende Einrichtung in Nextcloud
Wir begeben uns nun also in die Administrations-Oberfläche unserer Nextcloud-Installation, genauer gesagt in den App-Bereich:
Im Bereich “Büro und Text” aktivieren wir nun das Modul “Collabora Online”.
Ist diese Installation geschehen, wandern wir noch einmal in die Einstellungen der Nextcloud-Instanz. Dort ist nun in der Seitenleiste der Optionen Collabora Online zu finden:
Hier geben wir nun den neuen Namen unseres frisch erstellten Collabora Online-Hosts samt https:// davor und dem Port 443 dahinter (beispielsweise https://office.domain.tld:443) ein. Auf Wunsch können wir die Verwendung und Bearbeitung von und mit Collabora Online auch auf bestimmte Gruppen einschränken – das ist in meiner Umgebung aber nicht notwendig gewesen, weswegen die Anpassungen im Backend nach der Eingabe der URL nun vollständig sind.
Um zu schauen, ob nun alles sauber funktioniert, erstellen wir einfach mal ein neues Dokument durch die gewohnte Nutzung des Plus-Zeichens: Wo vorher nur die Möglichkeit zum Upload oder zur Erstellung eines Ordners respektive einer Textdatei bestand, erkennen wir bereits eine Veränderung: Auch ein neues Textdokument im Open Document-Format, eine neue Tabelle oder eine neue Präsentation können nun erstellt werden.
Nach Eingabe des Dateinamens können wir das Dokument nun direkt editieren, was auch ohne Fehlermeldung möglich sein sollte:
Somit können wir nun loslegen und unser Online-Office innerhalb unserer eigenen, auf Nextcloud basierten, private Cloud nutzen. Nextcloud als Lösung an sich ist – auch im kleinen Kreis – nun durch die Office-Features ergänzt worden und die Funktionen von Collabora Online runden ein bereits perfektes Produkt noch einmal final ab!
Wer eh schon viel mit Nextcloud arbeitet und sich bereits von den Cloud-Lösungen der großen Anbieter gelöst hat, wird eventuell noch die hier dargestellten Funktionen vermißt haben. Am Ende dieses Tutorials sollte dieses Manko nun abgestellt sein und wer weiß – vielleicht reichen dem ein oder anderen ja die Möglichkeiten, die ein webbasiertes Office bietet?
Viel Spaß mit Nextcloud 13 und der Collabora Online Development Edition!