Collabora mit Nextcloud und nginx
Unter Debian 8 und nginx Collabora zum Laufen zu bringen, ist nicht ganz trivial. Aus verschiedenen Forenthreads und Anleitungen habe ich mir die Infos zusammengesucht, mit denen ich nun Collabora problemlos betreiben kann.
Diese Anleitung funktioniert mit Debian 8. Bitte andere ggf. austesten.
Als erstes installiert bitte Docker mit den offiziellen Docker Repos und entfernt ggf. die bisherige Docker Version:
sudo apt-get purge docker-ce sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Danach muss bei Docker unter Debian der Storage Driver auf Device Mapper umgestellt werden. Dabei werden alle bestehenden laufenden Container gelöscht!
nano /etc/default/docker:
DOCKER_OPTS="--storage-driver=devicemapper"
Zusätzlich:
mkdir /etc/systemd/system/docker.service.d nano /etc/systemd/system/docker.service.d/execWithDeviceMapper.conf
und folgenden Code einfügen:
[Service] ExecStart= ExecStart=/usr/bin/dockerd --storage-driver=devicemapper -H fd://
Bitte überprüft abschließend, ob die letzte Zeile stimmt mittels:
grep ExecStart /lib/systemd/system/docker.service
Nun bitte Docker neu laden und neu starten:
systemctl daemon-reload service docker reload service docker restart
Nun installieren wir Collabora. Wer mehreren Nextcloud Instanzen den Zugriff auf Collabora ermöglichen möchte, muss auch alle Domains angeben, von denen Collabora aufgerufen wird:
docker pull collabora/code docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.nextcloud\\.com\|cloud\\.speibox\\.de' --restart always --cap-add MKNOD collabora/code
Die nginx Konfiguration sieht folgendermaßen aus – bitte nimm ein eigene Subdomain:
server { listen 443 ssl http2; server_name office.xy.de; add_header X-XSS-Protection "1; mode=block"; #Wenn es nicht geht, notfalls deaktivieren ssl_certificate /etc/letsencrypt/live/xy.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xy.de/privkey.pem; # static files location ^~ /loleaflet { proxy_pass https://localhost:9980; proxy_set_header Host $http_host; } # WOPI discovery URL location ^~ /hosting/discovery { proxy_pass https://localhost:9980; proxy_set_header Host $http_host; } location ^~ /hosting/capabilities { proxy_pass https://localhost:9980; proxy_set_header Host $http_host; } # Main websocket location ~ /lool/(.*)/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; } # Admin Console websocket location ^~ /lool/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; } # download, presentation and image upload location ^~ /lool { proxy_pass https://localhost:9980; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
Ein Reload von nginx genügt. Zum Abschluss noch die Collabora App in Nextcloud installieren und dort die Adresse https://office.xy.de eintragen. Der Port 443 muss nicht mit angegeben werden.
Nähere Infos zum Update von Collabora findest du auf der Seite von Nextcloud.
Danke für die Anleitung! Ich brauchte für meine Nextcloud-Instanz mehrere Anläufe, aber letztendlich hat es nun doch endlich geklappt 🙂
Kleiner Hinweis: Bei mir war es so, dass es erst funktionierte, als ich in der Browser-Konsole (Entwicklermodus o.ä.) diesen Fehler entdeckte:
“Error parsing header X-XSS-Protection: 1; mode=block, 1; mode=block, 1; mode=block, 1; mode=block: expected semicolon at character position 14. The default protections will be applied.”
Nachdem in /etc/nginx/sites-available/collabora.conf diese Zeile hinzugefügt wurde, klappte es dann endlich 🙂
server {
…
add_header X-XSS-Protection “1; mode=block”;
…
}
Danke für die Reaktion – ich habe den Artikel um deine Einstellung erweitert. Vermutlich hast du etwas bei der Nextcloud vhost conf anders gemacht.
Ich habe verstehe aber eins nicht, warum “–storage-driver=devicemapper” umgestellt werden soll? Ist das zwingend oder betrifft nur Leute mit Nextcloud-Instanz? Oder brauch das “Collabora” das so? Könntest du das kurz erklären?
Soweit ich das noch richtig im Kopf habe, liegt das an einem Debian 8 Problem mit Docker. Mit Debian 9 müsste es bereits ohne diese Anweisung funktionieren.
Okay danke dir!