Nextcloud Hub II - Collabora Installation
In diesem Beitrag wird die Integration von von Collabora Office in eine bestehende Nextcloud Hub II Instanz beschrieben.
Vorwort
Mit Version 23 oder Codename »Nextcloud Hub II« wurden neben zahlreichen weiteren Änderungen auch die Office Integration mit Collabora weiter vertieft. Collabora erlaubt das Erstellen und Bearbeiten direkt im Browser, vergleichbar mit Platzhirschen wie beispielsweise Google Docs. Für meinen Einsatzzweck in der Cloud für meine Berufsschulklasse ideal - es wird keine Office Suite benötigt und mehrere Mitschüler können parallel an einem Arbeitsblatt arbeiten. Zudem läuft weiterhin alles auf eigener Hardware und man hat jederzeit volle Kontrolle über seine Daten.
Installation
Optional: Installation von Docker
Auf einem frischen System ist möglicherweise noch kein Docker installiert, dies wird im folgenden Schritt nachgeholt.
Zuerst gilt es, die Vorbereitungen zu erfüllen, dass der Paketmanager APT, sicher via HTTPS, die Paketquellen beziehen kann. Hierfür sind folgende Pakete notwendig:
sudo apt update && sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
Anschließend kann der GPG-Key importiert werden:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Im nächsten Schritt wird der entsprechende Eintrag in den Paketquellen hinterlegt, damit Docker bezogen werden kann:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Jetzt kann Docker wie gewohnt nachinstalliert werden:
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
Installation von Collabora Office
Sofern Docker installiert ist, muss zum Start zunächst das aktuell circa 500MB große Image bezogen werden. Dies geschieht über folgenden Befehl:
docker pull collabora/code
Collabora selbst gibt in deren Dokumentation eine Beispielkonfiguration für ein Reverse Proxy Setup an:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name office.domain.tld;
# SSL configuration
ssl_certificate /etc/letsencrypt/domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/domain.tld/key.pem;
ssl_trusted_certificate /etc/letsencrypt/domain.tld/ca.pem;
# static files
location ^~ /browser {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}
In meinem Beispiel ist »office.domain.tld« die Domain unter der später die Office Suite erreichbar gemacht wird. Dieser Name kann beliebig gewählt werden, muss in der Konfiguration der Nextcloud aber entsprechend später abgewandelt werden.
Anschließend wird nginx neu gestartet, mit nachfolgendem Befehl:
systemctl restart nginx
Danach kann auch der Docker Container gestartet werden.
Hier gilt es zu berücksichtigen, dass ».« (Punkt im Namen der Domain) durch je zwei »\« (Backslash) escaped werden muss!
Mit dem nachstehenden Command wird der Container zunächst gestartet und zunächst lokal (localhost) auf dem Port 9980 veröffentlicht. Das oben eingerichtete nginx Konstrukt übernimmt später die Transportverschlüsselung mittels SSL/TLS und die Erreichbarkeit von außen. Zudem wird ein Name für den Container vergeben - hier »COLLABORAOFFICE«, um den Container für Wartungszwecke schneller finden zu können.
docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud\\.domain\\.tld" --name=COLLABORAOFFICE --restart always --cap-add MKNOD collabora/code
Im nächsten Schritt muss die entsprechende Office App in der Nextcloud installiert werden. Hierzu wird als Administrator zum Punkt Apps navigiert und dort die »Collabora Online« App nachgerüstet. Ist dies erledigt, taucht im Administrationspanel ein neuer Unterpunkt mit dem Namen ›Office‹ auf.
Hier wird die Adresse der Office Suite angegeben, diese entspricht dem DNS Namen aus dem Reverse Proxy Setup weiter oben.

Das wars! Ab jetzt können Dokumente direkt in der Cloud bearbeitet werden.
Updates installieren
In unregelmäßigen Abständen erscheinen neue Images der Docker Container, diese können bequem über die folgenden Befehle bezogen und zum laufen gebracht werden:
# Alten Container stoppen
docker stop COLLABORAOFFICE
# Alten Container entfernen
docker rm COLLABORAOFFICE
# Neuen Container herunterladen
docker pull collabora/code
# Neuen Container starten
docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud\\.domain\\.tld" --name=COLLABORAOFFICE --restart always --cap-add MKNOD collabora/code