Nextcloud Office (Collabora Office)

Folgen Sie dieser Anleitung und binden Sie Nextcloud Office (aka Collabora Office) in Ihren Nextcloud Server ein, so dass Office Dokumente online (und mobil) bearbeitet werden können. Optional beschreiben wir auch, wie Sie die Microsoft-Schriftarten installieren und in Nextcloud Office einbinden. Folgen Sie dieser Anleitung und passen dabei nur die roten Parameter an.

Wir beginnen mit der Systemvorbereitung:

apt remove docker docker-engine docker.io
apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
 "deb [arch=amd64 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
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Aktualisieren Sie das System und installieren docker-ce (docker community edition):

apt update && apt install docker-ce -y

Testen Sie docker

docker run hello-world

und das Ergebnis sollte in etwa meinem entsprechen:

Laden Sie nun den Collabora Docker herunter:

docker pull collabora/code

Es werden zirka 500 MB heruntergeladen und verifiziert. Im Anschluss daran passen wir den Webserver nginx für die Nutzung der Collabora Software an: (Quelle: Link)

github: https://codeberg.org/criegerde/nextcloud-office/src/branch/master/etc/nginx/conf.d/nextcloud.conf

Fügen Sie den roten Block zu Ihrer bestehenden Webserverkonfiguration hinzu:

nano /etc/nginx/conf.d/nextcloud.conf
...
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }

### Start Collabora Online ###
 # 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;
 }
### End Collabora Online ###

location ~ \.php(?:$|/) {
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;
...
}

Quelle: Collabora

Starten Sie nun zuerst den Webserver

service nginx restart

und ermitteln dann das Netzwerkinterface von Docker.

ip --br a

Ihnen werden alle gebundenen Netzwerke angezeigt, relevant ist aber nur das entsprechende Docker-Interface:

[...]
docker0 UP 172.17.0.1/16 fe80::42:b6ff:fe32:ca91/64
[...]

Starten Sie dann den Nextcloud Office Docker-Container:

docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=https://your.dedyn.io:443,https://your\\.dedyn\\.io:443" -e "username=AdminName" -e "password=Your-Secret" --name NEXTCLOUDOFFICE --memory="4G" --memory-swap="4G" -e "lang=de_DE" -e "dictionaries=de_DE en_GB en_US" -e "extra_params=--o:home_mode.enable=true" --add-host your.dedyn.io:172.17.0.1 --restart always collabora/code

Möchten Sie mehrere Nextcloud Domains und eine Nextcloud Office-Instanz nutzen, so folgen Sie bitte diesem Beispiel:

docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=https://your.dedyn.io:443,https://your\\.dedyn\\.io|your_second\\.dedyn\\.io:443" -e "aliasgroup2=https://your_second.dedyn.io:443" -e "username=AdminName" -e "password=Your-Secret" --name NEXTCLOUDOFFICE --memory="4G" --memory-swap="4G" -e "lang=de_DE" -e "dictionaries=de_DE en_GB en_US" -e "extra_params=--o:home_mode.enable=true" --add-host your.dedyn.io:172.17.0.1 --add-host your_second.dedyn.io:172.17.0.1 --restart always collabora/code

Quelle: Collabora

OPTIONAL: Microsoft Schriftarten

Möchten Sie Microsoft Schriftarten anbieten, so folgen Sie bitte diesem Beispiel: Zuerst installieren Sie die Microsoft Schriftarten:

apt-add-repository contrib non-free -y
add-apt-repository multiverse -y

Schriftarten installieren:

apt install ttf-mscorefonts-installer-y

Schriftarten-Cache aktualisieren:

fc-cache -f -v

Nextcloud-Office als Docker starten:

docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=https://your.dedyn.io:443,https://your\\.dedyn\\.io:443" -e "username=AdminName" -e "password=Your-Secret" --name NEXTCLOUDOFFICE --memory="4G" --memory-swap="4G" -e "lang=de_DE" -e "dictionaries=de_DE en_GB en_US" -e "extra_params=--o:home_mode.enable=true" --add-host your.dedyn.io:172.17.0.1 --volume "/usr/share/fonts/truetype/:/opt/collaboraoffice/share/fonts/truetype/local/:ro" --restart always collabora/code

Sehen Sie sich die Logdatei an um einen ordnungsgemäßen Start sicherzustellen:

docker logs NEXTCLOUDOFFICE

Kommt es zu Verbindungsproblemen während des Öffnens von Office-Dokumenten aus der Nextcloud heraus, so kann ein vorgelagerter Reverse Proxy (HAProxy, nginx-ReverseProxy, nginx Proxy Manager o.Ä.) dafür verantwortlich sein. Ändern Sie in diesem Fall das zugrundeliegende docker-Statement (–add-host domain.tld:ip) und verwenden die IP des vorgelagerten Reverse Proxys (im Beispiel 192.168.0.3):

docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=https://your.dedyn.io:443,https://your\\.dedyn\\.io:443" -e "username=AdminName" -e "password=Your-Secret" --name NEXTCLOUDOFFICE --memory="4G" --memory-swap="4G" -e "lang=de_DE" -e "dictionaries=de_DE en_GB en_US" -e "extra_params=--o:home_mode.enable=true" --add-host your.dedyn.io:192.168.0.3 --volume "/usr/share/fonts/truetype/:/opt/collaboraoffice/share/fonts/truetype/local/:ro" --restart always collabora/code

Um Parameter der Dockerinstanz anlaysieren zu können nutzen Sie docker inspect

docker inspect NEXTCLOUDOFFICE

Treten DNS Fehler auf, so erzeugen Sie eine json Datei:

nano /etc/docker/daemon.json

Fügen Sie alle Zeilen ein

{
"dns": ["192.168.2.1"]
}

(angenommen, der DNS sei 192.168.2.1) und starten Docker neu:

service docker restart

Melden Sie sich in der Nextcloud an und aktivieren als Administrator die neue ‚Nextcloud Office‘ App:

Wechseln Sie in die Collabora Einstellungen und tragen dort Ihre Domain (https://ihre.domain.de) ein:

Ergänzen Sie die ‚Allow list for WOPI requests‚, in unserer Anleitung 172.17.0.1/16 ( « das Docker-Subnetz):

Ab sofort können Sie Nextcloud mit einer integrierten Officelösung verwenden!


Nextcloud Office bietet zudem eine kleine Statistik- und Administrationsoberfläche. Diese erreichen Sie über den Aufruf im Browser:

https://ihre.domain.de/browser/dist/admin/admin.html

Wie aktualisieren Sie den Docker container?

Stop:

docker stop NEXTCLOUDOFFICE

Entfernen:

docker rm NEXTCLOUDOFFICE

Aktualisierung laden:

docker pull collabora/code

Neustart

docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=https://your.dedyn.io:443,https://your\\.dedyn\\.io:443" -e "username=AdminName" -e "password=Your-Secret" --name NEXTCLOUDOFFICE --memory="4G" --memory-swap="4G" -e "lang=de_DE" -e "dictionaries=de_DE en_GB en_US" -e "extra_params=--o:home_mode.enable=true" --restart always collabora/code

Aktualisierung der Nextcloud Templates:

sudo -u www-data php /var/www/nextcloud/occ richdocuments:update-empty-templates

Es steht Ihnen auch ein Nextcloud-Updateskript inklusive der Nextcloud-Office-Docker-Aktualisierung zur Verfügung.

wget -O update.sh -q https://codeberg.org/criegerde/nextcloud/raw/branch/master/skripte/update-nc-office.sh

Hilfestellungen rund um DOCKER:

» https://hub.docker.com/r/collabora/code/tags

Status der Docker container:

docker ps
docker image list

Speicherbelegung:

docker system df

Speicherplatz freigeben:

docker system prune

Achtung, das entfernt:
– alle gestoppten container
– alle Netzwerke, die nicht von mindestens einem Container verwendet werden
– dangling images
– build cache

Die Installation von Nextcloud Office wurde erfolgreich abgeschlossen und so wünsche ich Ihnen viel Spaß mit Ihren Daten in Ihrer privaten Cloud. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert) würden sich meine Frau, meine Zwillinge und ich sehr freuen!