Collabora Online Development Edition für Nextcloud installieren

Es gibt die Möglichkeit für Nextcloud einen “Office” Server über die Collabora Online Development Edition zu installieren. Die Built-In Version über die App Installation im Nextcloud funktioniert ok, kann aber vor allem von der Leistung ein wenig träge sein. Daher rollen wir das Docker Image aus und konfigurieren in Nextcloud das Office Paket.

Docker Container erstellen

Wir verwenden wieder eine Docker-Compose File als Ausgang. Außerdem sollte der Nginx Proxy Manager und Nextcloud entweder als Baremetal Installation oder Docker Container vorhanden sein.

  1. Wir verbinden uns mit der Shell über SSH auf den Host-Server der Docker installiert hat.
  2. Zuallererst erstellen wir einen Ordner mit mkdir collabora im normalen Homeverzeichnis.
  3. Mit cd collabora wird der Ordner und mit nano docker-compose.yml der Editor geöffnet.
  4. Folgende Einträge werden in die Datei geschrieben:
version: "3"
services:
  pihole:
    image: collabora/code:latest
    container_name: collabora
    hostname: collabora
    restart: unless-stopped
    environment:
      - dictionaries=de_DE en_GB
      - aliasgroup1=https://{DER_NEXTCLOUD_FQDN}:443
      - server_name={DER_FQDN_VOM_COLLABORA_SERVER}
networks:
  default:
    external: true
    name: npmnet
AttributBeschreibung
dictionaries=de_DE en_GBHiermit wird dem Docker Container von Collabora mitgegeben welche Rechtschreibwörterbücher der Server initialisieren soll.
Wird die Variable leer gelassen oder entfernt werden automatisch folgende Sprachen installiert: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru
aliasgroup1=https://{DER_NEXTCLOUD_FQDN}:443Unter Variable aliasgroup1 muss der FQDN von der Nextcloud Instanz angegeben werden, also bspw. für {DER_NEXTCLOUD_FQDN} wird cloud.deinedomain.de eingetragen. Das stellt sicher, dass der Collabora Server nur von der Nextcloud Instanz verwendet werden kann.
server_name={DER_FQDN_VOM_COLLABORA_SERVER}Für {DER_FQDN_VOM_COLLABORA_SERVER} muss der zukünftige FQDN von der Collabora Instanz angegeben werden, bspw. office.deinedomain.de.
  1. Nach dem alle Werte entsprechend eingetragen sind wir mit [STRG]+[O] einmal gespeichert und mit [STRG]+[X] wird der Editor geschlossen.
  2. Nun startet man den Container mit sudo docker-compose up -d. Nach der Initialisierung kann mit mit sudo docker-compose logs prüfen, ob alles soweit gut aussieht und läuft.

Bei Updates für den Collabora Server führt man später einfach im Ordner sudo docker-compose pull und anschließend wieder sudo docker-compose up -d aus. Daraufhin wird der Container entfernt und neu erstellt.

Euch ist vielleicht aufgefallen, dass wir keinerlei Speicherort als Volume bereitstellen. Wir brauchen das auch nicht, da wir alle Einstellungen über die Environment Variablen vornehmen und keine weiteren Daten langfristig gespeichert werden müssen.

Nginx Proxy Manager konfigurieren

Im NPM muss nun einmal der FQDN, den ihr für den Server verwenden wollt, eingetragen werden und für die Domain ein SSL Zertifikat bei Let’s Encrypt erstellt und forciert werden.

Ich habe hier einfach mal office.liersch.it verwendet. Hostname ist der in der Docker-Compose Datei angegebene collabora und der Port ist 9980 mit dem Protokoll https.

Nextcloud konfigurieren

Zu guter Letzt wird in Nextcloud die Nextcloud Office App installiert und in der Konfiguration der eigene Server und die entsprechende URL hinterlegt.

Es macht Sinn die “Allow list for WOPI requests” mit der externen IP Adresse, worüber der Collabora Server aus dem Internet erreichbar ist, zu füllen.

HINWEIS: Es gibt aber Stand 2024-02-04 Probleme eine IP-Adresse in das Feld einzutragen. Die Eintragung wird nicht korrekt gespeichert. Der Fehler ist bekannt, eine Lösung lässt aber noch auf sich warten, daher müsste der folgende Workaround durchgeführt werden:
https://github.com/nextcloud/richdocuments/issues/3377#issuecomment-1872110108

Im Endeffekt führt die “Allow List” dazu, dass nur Anfragen von diesem Collabora Server beantwortet werden dürften. Genauso wie die “aliasgroup1” Variable dafür sorgt, dass der Collabora Server nur unserem Nextcloud Server vollständig antwortet.

Anschließend kann man Office Dokumente in Nextcloud öffnen, und das relativ flott – je nach Leistung des Servers.

Workaround WOPI Konfiguration und dynamische öffentliche IP Adresse

Ich habe mir mal ein Skript zusammen geklöppelt, um alle drei Stunden meine öffentliche IP Adresse zu prüfen und in Nextcloud einzutragen.

Folgendes Skript mit nano pubipwopi.sh in den Editor einfügen.

#!/bin/bash
# Author: LierschIT
# Created: 2024-03-22
# Description: This script looks for the actual public IP address and add this IP to the WOPI configuration of Nextcloud.

ip=""
ip=$(curl -s https://api.ipify.org)

if [ -n "${ip}" ]
then
    sudo -u www-data php occ config:app:set richdocuments wopi_allowlist --value="${ip}"
else
    echo "Public IP can't be optained. Update of WOPI not possible."
fi

Mit [STRG]+[O] und [STRG]+[X] die Datei abspeichern. Anschließend mit sudo chmod +x pubipwopi.sh das Skript ausführbar machen. Mit ./pubiwopi.sh kann ausprobiert werden, ob das Skript funktioniert. Solltet ihr eine Turnkey-Linux Installation verwenden, benutzt statt sudo -u www-data php occ den Befehl turnkey-occ.

Mit dem Befehl crontab -e könnt ihr dann den Job als zusätzliche Zeile einfügen. Bei mir sieht der wie folgt aus:

20 0/3 * * * /{PATH-TO-FILE}/pubipwopi.sh >> /dev/null

Mein Skript wird also alle 3 Stunden zur 20ten Minute ausgeführt. Die Ausgabe wird in eine Null-File geschrieben, also verworfen. Dort kann auch eine Log-Datei eingefügt werden, damit man nachvollziehen kann, ob das Skript korrekt ausgeführt wird. PATH-TO-FILE sollte den Pfad zu eurem Speicherort enthalten, also beispielsweise /home/pi/pubiwobi.sh

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert