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.
- Wir verbinden uns mit der Shell über SSH auf den Host-Server der Docker installiert hat.
- Zuallererst erstellen wir einen Ordner mit
mkdir collabora
im normalen Homeverzeichnis. - Mit
cd collabora
wird der Ordner und mitnano docker-compose.yml
der Editor geöffnet. - Folgende Einträge werden in die Datei geschrieben:
version: "3"
services:
collabora:
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
Attribut | Beschreibung |
---|---|
dictionaries=de_DE en_GB | Hiermit 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}:443 | Unter 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. |
- Nach dem alle Werte entsprechend eingetragen sind wir mit
[STRG]+[O]
einmal gespeichert und mit[STRG]+[X]
wird der Editor geschlossen. - Nun startet man den Container mit
sudo docker-compose up -d
. Nach der Initialisierung kann mit mitsudo 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]+[
und O
][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