Website-Icon HOPPLIN GmbH [dev] Blog

Eigener Collabora Online Server ohne Docker

Eigener Collabora Online Server ohne Docker
4.4/5 - (5 votes)

Sofern du eine eigene Collabora Online (früher OpenOffice) Instanz benötigst, kannst du diese ganz einfach auf deinem System installieren. Du kannst diese auch ohne Docker-Container laufen lassen. Ich verwende die Collabora Online Development Edition (kurz: CODE). Um diese zu Installieren benötigt es nur eine Hand voll Befehle:

Installation

Zuerst musst du den Schlüssel vom Schlüssel-Server herunterladen und installieren:

user@system: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D

Je nach Betriebssystem findest du hier die passende APT Repository Konfiguration:

Debian 8

user@system: echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian8 ./' >> /etc/apt/sources.list

Debian 9

user@system: echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian9 ./' >> /etc/apt/sources.list

Ubuntu 16.04

user@system: echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE ./' >> /etc/apt/sources.list

Ubuntu 18.04

user@system: echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 ./' >> /etc/apt/sources.list

Sobald dieser Prozess durchgelaufen ist, kannst du den Index aktualisieren und die notwendigen Pakete installieren:

user@system: apt update
user@system: apt install loolwsd code-brand

Konfiguration

Damit ist die Online-Version von Collabora auch schon auf deinem Linux-System installiert. Der Dienst kann allerdings noch nicht laufen, da dieser noch ein Zertifikat benötigt. In meinem Fall habe ich das folgendermaßen erstellt:

user@system: mkdir -p /etc/loolwsd
user@system: openssl genrsa -out /etc/loolwsd/root.key.pem 2048 -key /etc/loolwsd/root.key.pem
user@system: openssl req -x509 -new -nodes -key /etc/loolwsd/root.key.pem -days 9131 -out /etc/loolwsd/ca-chain.cert.pem -subj "/C=DE/ST=BY/L=Kaufering/O=HOPPLIN GmbH/CN=Groupware Collabora"
user@system: openssl genrsa -out /etc/loolwsd/key.pem 2048 -key /etc/loolwsd/key.pem
user@system: openssl req -key /etc/loolwsd/key.pem -new -sha256 -out /etc/loolwsd/localhost.csr.pem -subj "/C=DE/ST=BY/L=Kaufering/O=HOPPLIN GmbH/CN=Groupware Collabora"
user@system: openssl x509 -req -in /etc/loolwsd/localhost.csr.pem -CA /etc/loolwsd/ca-chain.cert.pem -CAkey /etc/loolwsd/root.key.pem -CAcreateserial -out /etc/loolwsd/cert.pem -days 9131

Dieses Zertifikat wird nur für die Anwendung selbst, aber nicht für den Aufruf via Browser verwendet. Jetzt kannst du den Dienst (neu)starten:

user@system: systemctl start loolwsd
user@system: systemctl status loolwsd
● loolwsd.service - LibreOffice Online WebSocket Daemon
   Loaded: loaded (/lib/systemd/system/loolwsd.service; enabled; vendor preset: enabled)
   Active: active (running)

nginx als Reverse Proxy für Collabora ohne Docker konfigurieren

Jetzt muss noch der ReverseProxy für den Aufruf via HTTP(S) eingerichtet werden. (In meinem Fall leite ich den direkten Aufruf auf eine andere Seite um.)

collabora-nginx.conf

server {
    listen       443 ssl;
    server_name  collabora.example.com;

    ssl_certificate /path/to/ssl_certificate;
    ssl_certificate_key /path/to/ssl_certificate_key;

    location ^~ /loleaflet {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    location ^~ /hosting/discovery {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    location ~ ^/lool/(.*)/ws$ {
        proxy_pass https://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }

    location ~ ^/lool {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    location ^~ /lool/adminws {
        proxy_pass https://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
}

Das hier verwendete Zertifikat kann bspw. ein letsencrypt Zertifikat sein.

Fazit: Wie du siehst, ist es ganz einfach, Collabora Online ohne Docker laufen zu lassen. Hast du überdies Fragen, Kritik oder Anregungen, so können wir das gerne über die Kommentar-Funktion besprechen.

Die mobile Version verlassen