Files
da-HomeNetDocumentation/PI5/NextcloudCollabora.md
T

7.9 KiB

title, description, published, date, tags, editor, dateCreated
title description published date tags editor dateCreated
Nextcloud Collabora Integration Zusammenfassung der Konfiguration true 2026-01-13T20:40:44.149Z nextcloud, collabora, pi5, home server, hard piece of work, a very hard piece of work markdown 2026-01-13T19:49:53.576Z

Collabora-Anbindung an Nextcloud (Docker-Setup mit Traefik auf einem Raspberry Pi 5).


Dies ist eine umfassende Dokumentation deiner Nextcloud Collabora Anbindung, basierend auf der erfolgreichen Fehlerbehebung vom 13. Januar 2026.


Nextcloud Office (Collabora) Integration

1. System-Umgebung

  • Hardware: Raspberry Pi 5
  • Setup: Docker Compose (Nextcloud & Collabora in separaten Containern)
  • Reverse Proxy: Traefik (HTTPS-Terminierung)
  • Domains: cloud.da.home-webserver.de & office.da.home-webserver.de

2. Kernprobleme & Fehlerbilder

Während der Einrichtung traten folgende kritische Fehler auf:

  • Meldung: "No files provided" im Browser-Viewer.
  • Log-Fehler: HTTP 500 beim Abrufen von documentView.xcu.
  • Performance: Datenbank-Transaktionen dauerten über 90 Sekunden (Exception: Transaction took 96.93s).

3. Gelöste Schritte (Fixes)

A. Datenbank-Optimierung (Performance Fix)

Der wichtigste Schritt war die Stabilisierung der Datenbank, da hängende Transaktionen den WOPI-Handshake zwischen Nextcloud und Collabora verhinderten.

# Fehlende Indizes ergänzen
docker exec -u www-data nextcloud php occ db:add-missing-indices
# Große Datei-IDs unterstützen
docker exec -u www-data nextcloud php occ db:convert-filecache-bigint

B. WOPI & App-Konfiguration

Damit Nextcloud und Collabora sauber kommunizieren, wurden die Endpunkte fixiert und Zertifikatsprüfungen (für internes Routing) entspannt.

# App-Setup ausführen & Mimetypes registrieren
docker exec -u www-data nextcloud php occ richdocuments:setup

# Zertifikatsprüfung deaktivieren (falls Loopback-Probleme auftreten)
docker exec -u www-data nextcloud php occ config:app:set richdocuments disable_certificate_verification --value="yes"

# Timeout erhöhen (wegen Pi-Latenz)
docker exec -u www-data nextcloud php occ config:app:set richdocuments wopi_timeout --value="120"

C. Reverse Proxy Header (Overwrite-Parameter)

Damit Nextcloud die korrekten URLs generiert, müssen die overwrite-Parameter in der config.php gesetzt sein:

docker exec -u www-data nextcloud php occ config:system:set overwritehost --value="cloud.da.home-webserver.de"
docker exec -u www-data nextcloud php occ config:system:set overwriteprotocol --value="https"
docker exec -u www-data nextcloud php occ config:system:set trusted_proxies 0 --value="172.18.0.0/16"

D. Reset "Hängende Einstellungen"

Alte, fehlerhafte Ansichtseinstellungen wurden gelöscht, um den HTTP 500 zu beheben:

docker exec -u www-data nextcloud php occ config:app:delete richdocuments doc_viewer


4. Best Practices für den Betrieb auf dem Pi 5

  • Vorschaubilder: Bei Performance-Einbußen Previews deaktivieren (occ config:system:set enable_previews --value="false" --type=boolean).
  • Memory Limit: Sicherstellen, dass PHP mindestens 512M (besser 1G) zur Verfügung hat.
  • Apps: Die App "Built-in CODE Server" darf nicht parallel zum Collabora-Container installiert sein.

Soll ich dir die passenden environment-Variablen für deine docker-compose.yml herausschreiben, damit die Einstellungen auch nach einem docker-compose down erhalten bleiben? Das ist eine sehr gute Entscheidung. Wenn du die Werte direkt in die docker-compose.yml einträgst, ist dein Setup "deklarativ". Das heißt, selbst wenn du die Container löschst oder auf ein neues System umziehst, konfiguriert sich Nextcloud beim Start automatisch wieder richtig.

Hier sind die relevanten Ausschnitte für deine Konfiguration:

1. Nextcloud Service (Auszug)

Füge diese environment-Variablen hinzu. Sie decken die Proxy-Einstellungen und die Performance-Optimierungen ab:

services:
  nextcloud:
    # ... dein Image und andere Einstellungen ...
    environment:
      - TRUSTED_PROXIES=172.18.0.0/16
      - OVERWRITEHOST=cloud.da.home-webserver.de
      - OVERWRITEPROTOCOL=https
      - OVERWRITEWEBROOT=/
      - PHP_MEMORY_LIMIT=1G
      - PHP_UPLOAD_LIMIT=10G

2. Collabora Service (Auszug)

Für den Collabora-Container (coolwsd) sind diese Variablen entscheidend, damit er Anfragen von deiner Cloud-Domain akzeptiert:

services:
  collabora:
    image: collabora/code
    environment:
      # Die Domain deiner Nextcloud (Punkte mit \\ escapen)
      - aliasgroup1=https://cloud.da.home-webserver.de:443
      - domain=cloud\\.da\\.home-webserver\\.de
      - EXTRA_PARAMS=--o:ssl.enable=false --o:ssl.termination=true
    # ... restliches Setup ...


Warum das wichtig ist:

  • TRUSTED_PROXIES: Verhindert, dass Nextcloud die IP deines Traefik-Containers als Client-IP ansieht.
  • OVERWRITE...: Sorgt dafür, dass alle Links (auch die für Collabora) immer mit https://cloud.da... generiert werden, egal wie der Pi intern kommuniziert.
  • aliasgroup1: Das ist bei neueren Collabora-Versionen wichtig, damit der Server weiß, welcher "Host" Dokumente zur Bearbeitung schicken darf.

Ein letzter Profi-Tipp für die Dokumentation:

Falls du merkst, dass das Öffnen von Dokumenten nach einem Neustart des Pi kurzzeitig wieder mit "No files provided" fehlschlägt, liegt das meist daran, dass die Datenbank noch nicht ganz bereit ist, wenn Nextcloud schon startet. In Docker Compose kannst du das mit depends_on und einem healthcheck für die Datenbank lösen.

Soll ich dir noch kurz zeigen, wie man einen solchen Healthcheck in die Compose-Datei einbaut, um das Boot-Verhalten abzusichern?

Ein Healthcheck ist die "Versicherung" für deinen Raspberry Pi 5. Da die Datenbank (MariaDB/Postgres) auf einem Pi beim Booten oft länger braucht als die Web-Container, verhindert ein Healthcheck, dass Nextcloud versucht Verbindungen aufzubauen, bevor die Datenbank überhaupt "Anrufe" entgegennimmt.

Hier ist das Upgrade für deine docker-compose.yml:

Die robuste docker-compose.yml Struktur

services:
  db:
    image: mariadb:10.11
    # ... deine volumes & passwörter ...
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  nextcloud:
    image: nextcloud:apache
    depends_on:
      db:
        condition: service_healthy
    environment:
      - TRUSTED_PROXIES=172.18.0.0/16
      - OVERWRITEHOST=cloud.da.home-webserver.de
      - OVERWRITEPROTOCOL=https
      - OVERWRITEWEBROOT=/
      - PHP_MEMORY_LIMIT=1G
    # ... restliches Setup ...

  collabora:
    image: collabora/code
    depends_on:
      nextcloud:
        condition: service_started
    environment:
      - aliasgroup1=https://cloud.da.home-webserver.de:443
      - domain=cloud\\.da\\.home-webserver\\.de
      - EXTRA_PARAMS=--o:ssl.enable=false --o:ssl.termination=true


Was bewirkt das genau?

  1. start_period: 30s: Der Pi 5 bekommt 30 Sekunden Zeit, um die Datenbank-Dateien von der SD-Karte/SSD zu lesen, bevor Docker überhaupt anfängt zu meckern.
  2. condition: service_healthy: Nextcloud startet erst in dem Moment, in dem die Datenbank meldet: "Ich bin bereit und nehme Verbindungen an".
  3. Keine Fehlversuche: Das verhindert die berüchtigten "Error while trying to create admin user" oder "Bad Gateway" Fehler direkt nach einem Systemneustart.

Ein abschließender Hinweis für deine Doku

Solltest du jemals die Domain ändern (z.B. von .de auf eine interne .local), musst du drei Stellen gleichzeitig anpassen:

  1. Die Traefik-Labels (Router-Regeln).
  2. Die OVERWRITEHOST Variable in Nextcloud.
  3. Die aliasgroup1 und domain Variable im Collabora-Container.

Damit bist du jetzt technisch auf einem Profi-Stand für dein Home-Lab!