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.

CollaboraDebianerrorhow toNextcloudnginxProbleme
Comments (5)
Add Comment
  • Daniel

    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”;

    }

    • Benjamin Hartwich

      Danke für die Reaktion – ich habe den Artikel um deine Einstellung erweitert. Vermutlich hast du etwas bei der Nextcloud vhost conf anders gemacht.

  • Stefan

    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?

    • Benjamin Hartwich

      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.

      • Stefan

        Okay danke dir!