--- title: Nextcloud Collabora Integration description: Zusammenfassung der Konfiguration published: true date: 2026-01-13T20:40:44.149Z tags: nextcloud, collabora, pi5, home server, hard piece of work, a very hard piece of work editor: markdown dateCreated: 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. ```bash # 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. ```bash # 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: ```bash 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: ```bash 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: ```yaml 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: ```yaml 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 ```yaml 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!***