Home » Nextcloud » Eigenen Collabora Online Server installieren für Nextcloud
|

Eigenen Collabora Online Server installieren für Nextcloud

Hier ist ein Tutorial, das euch zeigt, wie ihr euren eigenen Collabora Online Development Edition (CODE) Server installieren könnt, um ihn für mehrere Nextcloud Instanzen verwenden zu können. Wir verwenden Docker und Docker Compose, um die Installation zu vereinfachen. Wer nur eine einzelne Nextcloud Instanz laufen hat, kann den integrierten Code Server verwenden, und muss keinen eigenen Collabora Server aufsetzen. Die Verwendung eines Stand-Allone Collabora Online Servers kann Resourcen sparen, da nicht auf jeder Nextcloud Instanz ein eigener Collabora Server laufen muss.

Quelle: Apfelcast.com

Voraussetzungen

  1. Server: Ihr benötigt einen Server mit einem modernen Linux-Betriebssystem (z.B. Ubuntu 22.04 oder Debian 12.6). (Achtung, es eigenet sich kein LXC Container auf Proxmox Systemem, es muss eine virtuelle Maschine sein!) Am besten man mietet sich für seinen eigenen Collabora Online Server eine günstige VPS bei einem Provider eurer Wahl. Je nach Nextcloud Instanzen die bedient werden sollen, reichen 2-4 CPU Kerne und 4-6GB RAM. Es ist zudem sinnvoll, wenn der Collabora Server auf einem eigenen Server läuft, und nicht auf einer der Nextcloud Server.
  2. Docker und Docker Compose: Stellt sicher, dass Docker und Docker Compose auf eurem Server installiert sind.
  3. Port Forwarding und Firewall im Homelab: Falls ihr eure Nextcloud im eigenen Netzwerk betreibt, muss ein ReverseProxy vorgeschalten werden, das kann zum Beispiel der NginxProxyManager sein, oder zum Beispiel auch HAProxy, welcher auf einer pfSense Firewall läuft, damit die Nextcloud Instanz, und der Collabora Office Server hinter eurer IP beide erreichbar sind. Die Portweiterleitung für die Collabora Instanz ist Source Port 443 und Destination Port 9980 falls die SSL Terminierung über einen vorgeschaltenen Proxy wie den Nginx Proxy Manager geschieht.
  4. Port Forwarding und Firewall auf einer VPS: es müssen nur Port 80 und 443 freigegeben werden. Ein Port Fowarding auf einer VPS ist nicht nötig da dieser über eine öffentliche IP verfügt.
  5. Domain: Ihr benötigt eine gültige Domain für den Office Server. Bei einer Verwendung zuhause im Homelab mit dynamischer IP empfiehlt sich eine DynDNS Domain.

Docker Installation (Ubuntu & Debian)

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Den Docker Repository GPG Key hinzufügen:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Tauscht ubuntu gegen debian aus bei einem reinen Debian System

Fügt das Repository zu euren Quellen hinzu und updatet die Packete:

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

sudo apt update

Auch hier ubuntu gegen debian austauschen falls ihr ein Debian System fahrt.

Jetzt können wir Docker installieren:

sudo apt-get install docker-ce docker-ce-cli containerd.io

Docker Befehle ohne Sudo verwenden (optional)

sudo usermod -aG docker $USER

Verzeichnisstruktur anlegen

Erstelle ein neues Verzeichnis für eure Collabora-Installation und wechselt gleich in das Verzeichnis:

mkdir -p ~/collabora && cd ~/collabora

Docker Compose Datei erstellen

Erstellt eine neue Datei namens docker-compose.yml im ~/collabora-Verzeichnis mit folgendem Inhalt:

version: '3.3'

services:
  collabora:
    image: collabora/code:latest
    container_name: collabora_app
    environment:
      - aliasgroup1=https://cloud1.yourdomain.com
      - aliasgroup2=https://cloud2.yourdomain.com
      - "extra_params=--o:ssl.enable=false --o:ssl.termination=true"
    cap_add:
      - MKNOD
    ports:
      - "9980:9980"
    restart: unless-stopped

Ersetzt cloud1.euredomaine.com und cloud2 mit der Domain eurer Nextcloudinstanzen, ansonsten können die Nextcloud Instanzen nicht mit dem Collabora Server kommunizieren.

Wichtig ist, dass der Reverse Proxy die SSL Terminierung vornimmt, und über ein geeignetes SSL Zertifkat verfügt, zum Beispiel von LetsEncrypt.

Wer sich ein selbstsigniertes Zertifkat vom Collabora Server erstellen lassen will, ändert die Zeile:

- "extra_params=--o:ssl.enable=false --o:ssl.termination=true"

zu

- "extra_params=--o:ssl.enable=true --o:ssl.termination=false"

ab

Ein selbstsigniertes Zertifkat kann dann verwendet werden, wenn der Collabora Server auf einer Virtuellen Maschine zum Beispiel auf eurem Proxmox Host läuft.

Erläuterungen zur docker-compose.yml:

  • image: Hier geben wir die spezifische Version von Collabora an, die verwendet werden soll (collabora/code:latest) also jeweils das neuste Image.
  • environment: Mit aliasgroup1 und aliasgroup2 werden die URLs euer Nextcloud-Instanzen angegeben. Diese müssen natürlich durch die tatsächlichen URLs euer Nextcloud-Instanzen ersetzt werden.
  • ports: Port 9980 wird nach außen freigegeben, sodass Collabora über diesen Port erreichbar ist.
  • restart: Mit unless-stopped wird der Container automatisch neu gestartet, wenn er unerwartet beendet wird.

Schritt 3: Docker Compose starten

Um den Collabora Server zu starten, führt folgenden Befehl im ~/collabora Verzeichnis aus:

docker-compose up -d

Dieser Befehl startet den Collabora Server im Hintergrund (-d für detached mode).

Konfiguration in Nextcloud

Jetzt müsst ihr eure Nextcloud-Instanzen konfigurieren, damit sie mit dem neuen Collabora-Server zusammenarbeiten.

  1. In Nextcloud einloggen: Loggt euch in jede Nextcloud-Instanz ein, die ihr mit Collabora verbinden möchtet.
  2. Nextcloud Office installieren: installiert euch die Office Suite von Nextcloud aus dem App Store.
  3. Einstellungen: Geht zu den Collabora-Einstellungen in Nextcloud (Admin-Bereich) und gebt die URL eures Collabora-Servers ein (z.B. https://collabora.yourdomain.com).
  4. Falls ihr ein selbstsigniertes Zertifikat verwendet, deaktiviert die den Zertifikatencheck.

Setzt weiter unten in den Erweiterten Einstellungen die IP Adresse des Collabora Servers unter Allow list for WOPI requests.

SSL-Zertifikate bei VPS Installationen

Falls ihr den Collabora Server auf einer VPS betreibt, empfiehlt es sich ein LetsEncrypt Zertifikat zu verwenden. Dies wird häufig mit einem Reverse Proxy wie Nginx oder Traefik gemacht, der das SSL-Zertifikat bereitstellt für die Verschlüsselung. Nginx läuft dabei auf dem Server, auf dem der Collabora Online Server läuft.

Hier ist ein einfaches Beispiel für einen Nginx-Proxy:

server {

 listen 443 ssl;

 server_name collaboraonline.example.com;

 ssl_certificate /etc/letsencrypt/live/collaboraonline.example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/collaboraonline.example.com/privkey.pem;

 # Empfohlene SSL-Einstellungen für zusätzliche Sicherheit
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_ciphers HIGH:!aNULL:!MD5;
 ssl_prefer_server_ciphers on;

 # Pfad zu den SSL-Einstellungen von Certbot (optional, wenn von Certbot verwendet)
 include /etc/letsencrypt/options-ssl-nginx.conf;
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

 # Statische Dateien
 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;
 }

 # Haupt-WebSocket für Dokumentenbearbeitung
 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, Präsentation und Bild-Upload
 location ~ ^/(c|l)ool {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # Admin-Konsole 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;
 }

}

Hier auch auch eine simple Nginx Config, für eine Zertifikatsbeantragung via certbot

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:9980;  # Dies ist das Backend, also der Collabora Docker Container
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Die finale Nginx-SSL Konfiguration muss dann anhand des Beispiels oben natürlich erweitert werden.

Hier die Vorgaben von Collabora selber:

https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html

Testen und Verwalten

Nachdem alles eingerichtet ist, könnt ihr in Nextcloud ein neues Dokument erstellen und es sollte automatisch über den Collabora-Server geöffnet werden. Achtet darauf, die Logs zu überwachen, um sicherzustellen, dass alles reibungslos läuft:

docker logs -f collabora_app

Collabora Server updaten

Um die Collabora Version zu updaten, musst der Tag latest hinter dem Image verwendet werden. Navigiert in den Ordner in der die docker-compose.yml liegt. Stoppt den Container mit

docker compose down

zieht euch das neuste Image mit:

docker compose pull

und fahrt die Kiste wieder hoch mit:

docker compose up -d

Zusammenfassung

Dieses Tutorial führt euch durch die Schritte, um einen Collabora Online Server mit Docker und Docker Compose aufzusetzen und für mehrere Nextcloud-Instanzen zu konfigurieren. Durch die Verwendung von Docker bleibt das Setup flexibel und einfach zu verwalten. Wenn ihr eine SSL-Verschlüsselung benötigt, könnt ihr dies leicht über einen Reverse Proxy wie Nginx implementieren.

Weitere Nextcloud Tutorials findet ihr in der Kategorie Nextcloud.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert