Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Installation und Konfiguration von Nextcloud Office

profile picture
Author
Alexander Pücker
Published
2024-09-18
Time to read
7 minutes reading time

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
  • 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 nach Nextcloud Office. Klicke bei der App Nextcloud 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üpunkt Office aus.
  • Wähle hier Verwende deinen eigenen Server aus und füge die Adresse deines Collabora Servers ein (z.B. https://office.example.com).

Nextcloud Collabora Settings

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.

Ö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.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Storage Share

Easily store and share files. Access your data at any time and from any place.

Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more