Einführung
Nextcloud Office baut auf Collabora Online auf und kann genutzt werden, um Office Dokumente direkt in der Nextcloud Weboberfläche anzuzeigen und zu bearbeiten.
Dieses Tutorial beschreibt die Einrichtung eines externen Collabora Online Servers und die Einrichtung in einer Nextcloud. Der Collabora Online Server wird mit SSL Zertifikaten von Let's Encrypt konfiguriert, um eine vertrauenswürdige SSL Verbindung bereitzustellen.
Voraussetzungen
Du benötigst die folgenden Dinge
- Ein Server für Collabora
- Ubuntu 24.04 als Betriebssystem
Andere Ubuntu Versionen sollten aber auch funktionieren.
- Eine Domain/Subdomain, die auf deinen geplanten Collabora Server zeigt
- Ubuntu 24.04 als Betriebssystem
- Einen anderen Server, auf dem bereits Nextcloud installiert wurde
Z.B. Hetzner Cloud App Nextcloud
Beispiel-Benennungen
- Subdomain für Collabora-Server:
office.example.com
- Subdomain für Nextcloud-Server:
nextcloud.example.com
Schritt 1 - Docker Repository einrichten
Docker wird benötigt um den Collabora Docker Container auszuführen. Um Docker installieren zu können, müssen zuerst der Docker GPG Key und das Docker Repository eingerichtet werden:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Schritt 2 - Docker installieren
Nun kann Docker installiert werden:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo docker --version
Füge deinen Benutzer nun der Docker-Gruppe hinzu:
sudo usermod -aG docker <username>
Logge dich aus und wieder ein, um deine Gruppen zu aktualisieren.
Schritt 3 - Collabora Container starten
Siehe CODE Docker image
Mit installiertem Docker kann nun der Collabora Container gestartet werden. Setze die domain
Variable auf die Adresse deiner Nextcloud:
docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=https://nextcloud.example.com:443" --restart always collabora/code
Nun wird der neueste Container heruntergeladen und gestartet. Der Status des laufenden Containers kann mittels docker ps
geprüft werden.
Optional kann auch Docker Compose genutzt werden. Hierfür kann hier eine allgemeine Anleitung gefunden werden.
Prüfe nun, ob die Verbindung hergestellt werden kann:
docker ps
docker exec <container_id> curl -vvv -k https://127.0.0.1:9980/hosting/discovery | head -n 10
Der Output sollte HTTP/1.1 200 OK
enthalten.
Im Docker Container befinden sich die meisten wichtigen Dateien unter /etc/coolwsd
und /etc/nginx
.
Schritt 4 - Nginx installieren
Damit der Collabora Container über das Internet erreicht werden kann wird ein SSL Reverse Proxy eingesetzt. Dieses Tutorial nutzt hierfür Nginx.
Installiere Nginx über die Kommandozeile mit:
sudo apt update
sudo apt install nginx
Schritt 5 - Installiere Let's Encrypt Certbot via Snap
Für die Netzwerkverbindung wird ein vertrauenswürdiges SSL Zertifikat benötigt. Dieses kann mit Let's Encrypt's Certbot generiert werden. Installiere diesen via Snap:
sudo apt install snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Schritt 6 - SSL Zertifikate erstellen
Nun können die SSL Zertifikate erstellt werden. Passe dabei die Domain auf die Domain deines Collabora Servers an:
sudo certbot certonly --nginx -d office.example.com
[...]
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/office.example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/office.example.com/privkey.pem
[...]
Hinweis: Merke dir kurz die Pfade der SSL Zertifikate da diese im nächsten Schritt für die Nginx Konfiguration benötigt werden.
Schritt 7 - Nginx als Reverse Proxy konfigurieren
Füge mit einem Texteditor deiner Wahl (z.B. nano
oder vim
) die folgende Konfiguration in die neue Datei /etc/nginx/sites-available/collabora
ein. Editiere die Variablen server_name
, ssl_certificate
und ssl_certificate_key
so, dass sie auf deine Adressen passen:
server {
listen 443 ssl;
# modify this three lines with your own domain:
server_name office.example.com;
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;
location / {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# 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;
}
}
Nun muss Nginx neugestartet werden, um die neue Konfiguration zu nutzen:
sudo ln -s /etc/nginx/sites-available/collabora /etc/nginx/sites-enabled/collabora
sudo rm -rf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl restart nginx
Prüfe nun, ob die Verbindung hergestellt werden kann:
curl -vvv -k https://office.example.com/hosting/discovery | head -n 10
Der Output sollte HTTP/1.1 200 OK
enthalten.
Schritt 8 - Aktiviere die Nextcloud Office App in Nextcloud
Der Collabora Server selbst ist nun fertig eingerichtet und nutzbar. Nun muss dieser nur noch in der Nextcloud konfiguriert werden.
Um in Nextcloud die App Nextcloud Office
zu aktivieren, folge diesen Schritten:
- Öffne das Webinterface deiner Nextcloud
- Öffne den App Store (Benutzermenü obere rechte Ecke »
+ Apps
) - Wähle in der linken Menüleiste
App-Pakete
aus und suche nachNextcloud Office
. Klicke bei der AppNextcloud Office
auf "Herunterladen und aktivieren".
Schritt 9 - Nextcloud Office App konfigurieren
Nach der Installation muss der Nextcloud Office App noch die Adresse des Collabora Servers mitgeteilt werden.
- Gehe in die Einstellungen deiner Nextcloud (Benutzermenü obere rechte Ecke »
Verwaltungseinstellungen
) - Wähle im linken Menü unterhalb des Punktes
Verwaltung
den MenüpunktOffice
aus. - Wähle hier
Verwende deinen eigenen Server
aus und füge die Adresse deines Collabora Servers ein (z.B.https://office.example.com
).
Drücke auf Save
, um die Einstellungen zu speichern. Wenn die Verbindung funktioniert wird eine Bestätigung angezeigt.
Zusätzlich sollte die Allow list for WOPI requests
konfiguriert werden damit nur der Collabora Server Dokumente abrufen kann. Diese kann weiter unten unterhalb der Erweiterten Einstellungen gefunden werden. Hier muss die IPv4 und IPv6 Adresse des Collabora Servers eingetragen werden (z.B. 1.2.3.4,2a01:4f8:aaaa:bbbb:cccc::1
)
Schritt 10 - SSL Zertifikate erneuern
Let's Encrypt SSL Zertifikate sind nur für ein paar Monate gültig und müssen dann neu ausgestellt werden. Hierfür kann allerdings ein systemd Timer aktiviert werden, der dies automatisch durchführt:
systemctl enable --now snap.certbot.renew.timer
Die SSL Zertifikate werden damit automatisch neuausgestellt, wenn sie sich der Ablaufzeit nähern.
Schritt 11 - Nur der eigenen Nextcloud-Instanz Zugriff erlauben
Momentan kann jeder auf office.example.com
zugreifen. Dieser Schritt erklärt, wie man den Zugriff nur für nextcloud.example.com
erlaubt.
- Folge dieser Collabora Online Anleitung, um die notwendigen Pakete zu installieren.
Öffne die Datei /etc/coolwsd/coolwsd.xml
und ändere die alias_groups
-Konfiguration im storage
-Abschnitt.
<alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="groups">
<!-- If you need to use multiple wopi hosts, please change the mode to "groups" and
add the hosts below. If one host is accessible under multiple ip addresses
or names, add them as aliases. -->
<group>
<host desc="hostname to allow or deny." allow="true">https://nextcloud.example.com</host>
</group>
Ergebnis
Es wurde ein eigener Collabora Server installiert und in einer Nextcloud eingerichtet. Beim Öffnen von Dokumenten im Nextcloud Webinterface wird nun automatisch Collabora geladen, um das Dokument bearbeiten zu können.