Collabora - Libre Office mit externem Reverse Proxy

Moin,

ich habe den Libre Workspace erfolgreich hinter meinem Reverse Proxy zum Laufen gebracht. Es ging tatsächlich geschmeidiger als gedacht. Vielen Dank dafür an die Entwickler. Jetzt sammle ich meine ersten Erfahrungen, alles läuft bislang super, bis auf Libre Office, da stosse ich auf ein erstes Hindernis, wahrscheinlich weil es nicht aus der Doku hervorgeht.

  1. Wie starte ich Libre Office überhaupt? Geht es “nur” aus der Nextcloud über den Klick auf eine Libre Office Datei / MS Office Datei oder gibt es da noch andere Wege?
  2. Bei mir öffnet sich dann im Browser Tab eine neue Seite, auf der sich etwas kringelt :wink: und eine Meldung angezeigt wird: "Lade Depot und Watchlist.xlsx … " und darunter ein “Abbrechen”-Button angezeigt wird. Danach ändert sich dann nichts mehr am Zustand der Seite und ich kann diesen Prozess eben nur “Abbrechen”. Es scheint Browser-unabhängig zu sein, da es sich in Firefox und Chrome gleich verhält. Auf dem iPhone erscheint bei gleichem Klick auf die xlxs-Datei nor ein “schwarzes” Fenster in dem oben Links ein unscheinbares “ok” steht. Was kann ich tun, den Fehler zu finden und diesen abzustellen?

Viele Grüße, Torsten

Hi Torsten,

Du meinst sicher Collabora, oder? :slight_smile:
Das öffnest Du nur über die Nextcloud.
Checke mal ob du office.deinedomain.de aufrufen kannst und ob da ein OK scheint.
Wenn nicht überprüfe mal Deine Reverse Proxy Konfiguration.
Ansonsten wenn Du eigene Zertifikate nutzt, kann das auch sein, dass Du die im Libre Workspace installieren musst, oder in den NExtcloud Admin einstellungen unter Office mal nachsehen, was er da meldet.

Hi Jean,

ja, ich meine Collabora. Und ja, office.meinedomain.de bringt ein ok.
Ich nutze Letsencrypt für die Zertifikate der einzelnen Dienste. Wohin genau müssten diese Zertifikate auf dem LibreWorkspace Server kopiert werden?

Hiermit komme ich auch leider so nicht klar:“ NExtcloud Admin einstellungen unter Office mal nachsehen, was er da meldet.“ Ist das im LibreWorkspace zu finden?

Wäre super, wenn Du mir da auf die Sprünge hilfst.

Gruß,Torsten

Hallo Jean,

das hier wird unter Administration - Nexcloud Office gemeldet:

Hilft das weiter?

Gruß, Torsten

Ahh, ich weiß, was das Problem ist, da der Libre Workspace seinen eigenen DNS hat, überschreibt er den öffentlichen DNS Eintrag und leitet die Anfrage direkt auf den eigenen Server.

Also das heißt, DNS auf dem Libre Workspace aktualisieren. Würde mit samba funktionieren.

Probiere es aber erstmal nur mit dem schreiben der IP-Adresse des Reverse Proxys in die /etc/hosts Datei evtl reicht das schon. Da sollte schon ein Eintrag für office.deinedomain.de zu finden sein, den einfach abändern.

Muss noch mal nachfragen: die interne IP des Reverse Proxy in die /etc/Hosts des LibreWorkspace Servers oder den DNS den mein Server im Internet benutzt? Ist es intern zu lösen oder muss ich einen DNS im Internet nutzen?

Bei mir ist es so, dass ich intern eine verschlüsselte Verbindung (ssh Tunnel) zu meinem 1€ Server bei IONOS habe, der quasi alle Anfragen aus dem Internet an den Nginx Proxy Manager (NPM) weiterleitet, der die dann wiederum an meinen Proxmox Server mit seinen einzelnen Diensten (einzelne LXC oder VM) weiterleitet.
Ich schaue aber selbst auch mal, ob ich den DNS über den Samba Server geändert bekomme.

Vorher werde ich aber das mit der /etc/Hosts Datei erkunden und probieren. Wenn das gehen würde, wäre es sicher einfacher! :blush:

Puuh, das muss man schauen.
Ich würde die IP-Adresse der Instanz nehmen, wohin auch deine Domain zeigt.
Die lokale des Reverse Proxy funktioniert sonst eigentlich auch immer aber bei Deinem Setup könnte das anders sein :slight_smile:

Probiere es mal wie gesagt nur mal über die /etc/hosts Datei auf dem Libre Workspace Server, ansonsten sind das die unhandlichen Befehle für den Samba DNS-Server.

sudo -i
samba-tool dns delete la.deinedomain.de deinedomain.de office A 1.2.3.4 -Uadministrator%DeinAdminPasswort
samba-tool dns add la.deinedomain.de deinedomain.de office A 1.2.3.4 -Uadministrator%DeinAdminPasswort

Könntest Du mir die IP kurz schreiben, die neben der internen vom LibreWorkspace Server noch in der originalen /etc/resolv.conf drinnen steht?! Ich hatte diese auskommentiert, aber irgendwie war die dann auf einmal komplett verschwunden und es stand etwas von meiner friz.box da drin, was ich aber nicht enigetragen hatte!??? :frowning: Sorry!

Die Änderungen in der hosts haben nichts gebracht. Ich hatte die ip der domain eingetragen, über die die Anfragen aus dem Internet kommen (tosoflomi.de 217.160.175.171). Brachte aber keine Veränderung.

Ich probiere dann jetzt noch die Samba Befehle aus. Wenn es dann nicht funzt, würde ich gerne Deine Dienste in Anspruch nehmen. Hast Du eine Idee, wo ich das preislich so landen würde?

LG Torsten

Hi Torsten,

der etc resolv eintrag müsste so aussehen:

nameserver IP-Adresse des Libre Workspace (hostname -I)
nameserver 208.67.222.222

Sollte aber häufig egal sein, was da drinnen steht, hauptsache, hinter der IP-Adresse ist ein DNS-Server. (Libre Workspace hat ja auch sein eigenen mit Samba)

Support-Technisch sollte das nicht länger als eine halbe Stunde dauern. Melde Dich gerne bei Gelegenheit: Linux Support - Linux Guides

Hallo Jean,

ich bin glaube ich etwas weiter gekommen.

Zunächst war der websocket support im NPM nicht aktiviert. danach kam dann diese Fehlermeldung (siehe Foto):

Perfekt! Jetzt sehen wir den eigentlichen Fehler: “Unautorisierter WOPI-Host”. Das bedeutet, dass Collabora die Verbindung von Nextcloud ablehnt.

Problem: WOPI-Host nicht autorisiert

Die Collabora-Konfiguration muss die Nextcloud-Domain als vertrauenswürdigen WOPI-Host erlauben.

Da Collabora ja in einem Docker Container läuft. Sollte ich jetzt folgenden Anpassungen vornehmen:

bash

# Auf Server 192.168.0.182
docker stop collabora
docker rm collabora

2. Neuen Container mit korrekten WOPI-Hosts starten:
docker run -t -d -p 9980:9980
-e “domain=cloud\.tosoflomi\.de|.*\.tosoflomi\.de”
-e “username=Administrator”
-e “password=mein_Passwort”
-e “DONT_GEN_SSL_CERT=true”
-e “extra_params=–o:ssl.enable=false --o:ssl.termination=true”
–name collabora
–restart=always
collabora/code:latest

Wichtige Parameter:

  • domain= enthält alle erlaubten WOPI-Hosts (mit doppelten Backslashes!)
  • DONT_GEN_SSL_CERT=true da SSL über NPM terminiert wird
  • --o:ssl.termination=true für Proxy-Setup

Wie siehst Du das? Ohne Deine Meinung traue ich mich nicht, das auszuprobieren.

Gruß Torsten

Ach ja, da gibt es doch bestimmt ein “docker run” Kommando für Collabora, das Du in Deinen Scripts benutzt. Evtl. könnte man dieses nehmen und entsprechend anpassen und dann einmalig manuell starten?! Allerdings müsste man das dann bei Updates/Neuinstallationen immer wieder tun, oder!?

schau mal in die /root/collabora/run.sh Datei.
Da steht der WOPI Host drinnen. In der Regel generiert das Libre Workspace so wie wir wollen :slight_smile:

Moin! und schon eine Lösung gefunden? hänge hier gerade seit einer Stunde an dem gleichen Problem.
Der Rest läuft super. Dickes Lob

Brauche da mehr Infos :slight_smile:

was sagen denn folgende Befehle?

sudo -i
cat /root/collabora/run.sh
docker logs collabora | tail -n 100
root@la:~# curl -v https://cloud.meineadresse.de:9980/hosting/discovery
*   Trying 192.168.178.151:9980...
* Connected to cloud.meineadresse.de (192.168.178.151) port 9980 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: self-signed certificate in certificate chain
* Closing connection 0
curl: (60) SSL certificate problem: self-signed certificate in certificate chain
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

root@la:~# cat /root/collabora/run.sh
docker pull collabora/code:latest
docker run -t -d -p 9980:9980 -e aliasgroup1=https://cloud\\.meineadresse\\.de:443 -e username=admin -e password=beiSee8e --restart unless-stopped --name collabora --add-host cloud.meineadresse.de:192.168.178.151 collabora/code:latest

root@la:~# docker logs collabora | tail -n 100
kit-00028-00028 2025-07-28 22:59:57.832205 +0000 [ kit_spare_001 ] TRC  #25: StreamSocket ctor| net/Socket.hpp:1237
kit-00028-00028 2025-07-28 22:59:57.832214 +0000 [ kit_spare_001 ] TRC  #25: setHandler| net/Socket.hpp:1530
kit-00028-00028 2025-07-28 22:59:57.832221 +0000 [ kit_spare_001 ] TRC  #25: resetHandler| net/Socket.hpp:1540
kit-00028-00028 2025-07-28 22:59:57.832226 +0000 [ kit_spare_001 ] TRC  #25: Connected to WS Handler 0x44e7bf10| net/WebSocketHandler.hpp:192
kit-00028-00028 2025-07-28 22:59:57.832234 +0000 [ kit_spare_001 ] DBG  Connected to local UDS coolwsd-DokQsUfC #25| net/Socket.cpp:984
wsd-00001-00022 2025-07-28 22:59:55.284561 +0000 [ prisoner_poll ] TRC  ppoll start, timeoutMicroS: 17999962 size 2| net/Socket.cpp:534
wsd-00001-00022 2025-07-28 22:59:57.832188 +0000 [ prisoner_poll ] TRC  Poll completed with 1 live polls max (17999962us)| net/Socket.cpp:552
wsd-00001-00022 2025-07-28 22:59:57.832225 +0000 [ prisoner_poll ] TRC  #15: Handling poll events of prisoner_poll at index 0 (of 2): 0x1| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.832242 +0000 [ prisoner_poll ] DBG  #15: Accepted prisoner socket #17, creating socket object.| net/Socket.cpp:1417
kit-00028-00028 2025-07-28 22:59:57.832278 +0000 [ kit_spare_001 ] TRC  Requesting upgrade of websocket at path /coolws/newchild?jailid=L0fGqzTNVgu1VPBk&version=%7B%22BuildConfig%22:%22%27--enable-hardening-flags%27%20%27--enable-mpl-subset%27%20%27--with-vendor=Collabora%27%20%27--disable-community-flavor%27%20%27--with-branding=icon-themes%2Fgalaxy%2Fbrand_cp%27%20%27--with-system-dicts%27%20%27--with-myspell-dicts%27%20%27--with-system-zlib%27%20%27--disable-poppler%27%20%27--enable-cairo-rgba%27%20%27--without-system-cairo%27%20%27--without-system-fontconfig%27%20%27--without-system-freetype%27%20%27--without-system-graphite%27%20%27--without-system-harfbuzz%27%20%27--without-system-openssl%27%20%27--without-system-libpng%27%20%27--without-system-libxml%27%20%27--without-system-jpeg%27%20%27--without-system-expat%27%20%27--without-system-curl%27%20%27--without-system-icu%27%20%27--without-system-nss%27%20%27--without-system-jars%27%20%27--without-system-postgresql%27%20%27--without-java%27%20%27--without-junit%27%20%27--without-help%27%20%27--with-linker-hash-style=both%27%20%27--with-fonts%27%20%27--with-docrepair-fonts%27%20%27--enable-noto-font%27%20%27--with-galleries=no%27%20%27--with-theme=colibre%20colibre_svg%27%20%27--with-external-thes-dir=%2Fusr%2Fshare%2Fmythes%27%20%27--with-external-hyph-dir=%2Fusr%2Fshare%2Fhyphen%27%20%27--with-external-dict-dir=%2Fusr%2Fshare%2Fhunspell%27%20%27--disable-dbus%27%20%27--enable-extension-integration%27%20%27--disable-odk%27%20%27--disable-kf5%27%20%27--disable-gtk3%27%20%27--disable-qt5%27%20%27--disable-gstreamer-1-0%27%20%27--disable-evolution2%27%20%27--disable-gio%27%20%27--disable-gui%27%20%27--disable-scripting-beanshell%27%20%27--disable-scripting-javascript%27%20%27--disable-ext-wiki-publisher%27%20%27--disable-report-builder%27%20%27--disable-ext-nlpsolver%27%20%27--disable-sdremote%27%20%27--disable-sdremote-bluetooth%27%20%27--disable-postgresql-sdbc%27%20%27--disable-firebird-sdbc%27%20%27--disable-randr%27%20%27--enable-epm%27%20%27--enable-python=internal%27%20%27--disable-online-update%27%20%27--disable-dconf%27%20%27--enable-mergelibs%27%20%27--with-package-format=deb%20rpm%27%20%27--enable-release-build%27%20%27--with-lang=ar%20bg%20ca%20cs%20da%20de%20el%20en-US%20en-GB%20eo%20es%20eu%20fi%20fr%20gl%20he%20hr%20hu%20id%20is%20it%20ja%20ko%20lo%20nb%20nl%20oc%20pl%20pt%20pt-BR%20sq%20ru%20sk%20sl%20sv%20tr%20uk%20vi%20zh-CN%20zh-TW%27%20%27--disable-lotuswordpro%27%20%27--disable-lpsolve%27%20%27--enable-symbols%27%20%27--enable-sal-log%27%20%27--without-templates%27%20%27--with-buildconfig-recorded%27%20%27--srcdir=%2Fopt%2Fcollaboraoffice%2Fdebugsource%27%20%27--enable-option-checking=fatal%27%20%27PKG_CONFIG_PATH=%2Fopt%2Frh%2Fdevtoolset-12%2Froot%2Fusr%2Flib64%2Fpkgconfig%27%22%2C%22BuildId%22:%223a97a8da3ab1aa2192c2f37b9ab8ae29b5edb276%22%2C%22ProductExtension%22:%22.4.1%22%2C%22ProductName%22:%22Collabora%20Office%22%2C%22ProductVersion%22:%2225.04%22%2C%22tunnelled_dialog_image_cache_size%22:%22100%22%7D #25| net/Socket.cpp:995
wsd-00001-00022 2025-07-28 22:59:57.832281 +0000 [ prisoner_poll ] TRC  PrisonerRequestDispatcher| wsd/COOLWSD.cpp:2936
wsd-00001-00022 2025-07-28 22:59:57.832287 +0000 [ prisoner_poll ] DBG  #17: Created socket. Thread affinity set to 0x7f06bdb5b6c0, Socket[#17, Unix @ :0]| net/Socket.hpp:472
wsd-00001-00022 2025-07-28 22:59:57.832294 +0000 [ prisoner_poll ] TRC  #17: StreamSocket ctor| net/Socket.hpp:1237
wsd-00001-00022 2025-07-28 22:59:57.832298 +0000 [ prisoner_poll ] TRC  #17: setHandler| net/Socket.hpp:1530
wsd-00001-00022 2025-07-28 22:59:57.832320 +0000 [ prisoner_poll ] TRC  #17: resetHandler| net/Socket.hpp:1540
wsd-00001-00022 2025-07-28 22:59:57.832325 +0000 [ prisoner_poll ] TRC  #17: Connected to WS Handler 0x7f06ac002410| net/WebSocketHandler.hpp:192
wsd-00001-00022 2025-07-28 22:59:57.832330 +0000 [ prisoner_poll ] TRC  #17: Prisoner connected| wsd/COOLWSD.cpp:2957
wsd-00001-00022 2025-07-28 22:59:57.832341 +0000 [ prisoner_poll ] DBG  #15: Accepted socket #17 is UDS - address uds-to-pid-28 and uid/gid 1001/1001| net/Socket.cpp:1460
kit-00028-00028 2025-07-28 22:59:57.832306 +0000 [ kit_spare_001 ] TRC  performWrites (request header)| net/HttpRequest.hpp:788
kit-00028-00028 2025-07-28 22:59:57.832322 +0000 [ kit_spare_001 ] TRC  performWrites (request body)| net/HttpRequest.hpp:805
kit-00028-00028 2025-07-28 22:59:57.832327 +0000 [ kit_spare_001 ] TRC  performWrites (request body): finished, total: 3096| net/HttpRequest.hpp:823
kit-00028-00028 2025-07-28 22:59:57.832342 +0000 [ kit_spare_001 ] TRC  #25: Wrote 3096 bytes of 3096| net/Socket.hpp:1422
wsd-00001-00022 2025-07-28 22:59:57.832352 +0000 [ prisoner_poll ] TRC  #15: Accepted client #17, StreamSocket[#17, HTTP, Unix @ uds-to-pid-28:0]| net/ServerSocket.hpp:107
wsd-00001-00022 2025-07-28 22:59:57.832364 +0000 [ prisoner_poll ] TRC  Inserting socket #17, address [uds-to-pid-28], into prisoner_poll| net/Socket.hpp:944
wsd-00001-00022 2025-07-28 22:59:57.832368 +0000 [ prisoner_poll ] TRC  #17: Resetting thread affinity while in transit (was 0x7f06bdb5b6c0)| net/Socket.hpp:446
wsd-00001-00022 2025-07-28 22:59:57.832372 +0000 [ prisoner_poll ] TRC  #17: Resetting thread affinity while in transit (was 0x7f06bdb5b6c0)| net/Socket.hpp:690
wsd-00001-00022 2025-07-28 22:59:57.832397 +0000 [ prisoner_poll ] TRC  #16: Handling poll events of prisoner_poll at index 1 (of 2): 0x0| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.832404 +0000 [ prisoner_poll ] TRC  #15: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.832409 +0000 [ prisoner_poll ] TRC  #16: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.832412 +0000 [ prisoner_poll ] TRC  ppoll start, timeoutMicroS: 15452103 size 2| net/Socket.cpp:534
wsd-00001-00022 2025-07-28 22:59:57.832429 +0000 [ prisoner_poll ] TRC  Poll completed with 1 live polls max (15452103us)| net/Socket.cpp:552
wsd-00001-00022 2025-07-28 22:59:57.832433 +0000 [ prisoner_poll ] TRC  Handling events of wakeup pipe (6): 0x1| net/Socket.cpp:584
wsd-00001-00022 2025-07-28 22:59:57.832440 +0000 [ prisoner_poll ] TRC  Wakeup pipe (6) read 1 bytes| net/Socket.cpp:595
wsd-00001-00022 2025-07-28 22:59:57.832444 +0000 [ prisoner_poll ] TRC  Inserting 1 new sockets after the existing 2| net/Socket.cpp:604
wsd-00001-00022 2025-07-28 22:59:57.832457 +0000 [ prisoner_poll ] TRC  #17: Thread affinity set to 0x7f06bdb5b6c0 (was 0)| net/Socket.hpp:435
wsd-00001-00022 2025-07-28 22:59:57.832462 +0000 [ prisoner_poll ] TRC  #17: Thread affinity set to 0x7f06bdb5b6c0 (was 0)| net/Socket.hpp:680
wsd-00001-00022 2025-07-28 22:59:57.832467 +0000 [ prisoner_poll ] TRC  PrisonerPoll - wakes up with 0 new children and 0 brokers and 1 kits forking| wsd/COOLWSD.cpp:2736
wsd-00001-00022 2025-07-28 22:59:57.832475 +0000 [ prisoner_poll ] TRC  Rebalance children to 4, have 0 and 1 outstanding requests| wsd/COOLWSD.cpp:629
wsd-00001-00022 2025-07-28 22:59:57.832491 +0000 [ prisoner_poll ] TRC  PollSocket container size has changed from 2 to 3| net/Socket.cpp:668
wsd-00001-00022 2025-07-28 22:59:57.832495 +0000 [ prisoner_poll ] TRC  #16: Handling poll events of prisoner_poll at index 1 (of 2): 0x0| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.832500 +0000 [ prisoner_poll ] TRC  #15: Handling poll events of prisoner_poll at index 0 (of 2): 0x0| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.832504 +0000 [ prisoner_poll ] TRC  #15: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.832514 +0000 [ prisoner_poll ] TRC  #16: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.832517 +0000 [ prisoner_poll ] TRC  #17: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.832521 +0000 [ prisoner_poll ] TRC  ppoll start, timeoutMicroS: 15452004 size 3| net/Socket.cpp:534
wsd-00001-00022 2025-07-28 22:59:57.832527 +0000 [ prisoner_poll ] TRC  Poll completed with 1 live polls max (15452004us)| net/Socket.cpp:552
wsd-00001-00022 2025-07-28 22:59:57.832542 +0000 [ prisoner_poll ] TRC  #17: Handling poll events of prisoner_poll at index 2 (of 3): 0x1| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.832555 +0000 [ prisoner_poll ] TRC  #17: Read 3096 bytes in addition to 0 buffered bytes| net/Socket.hpp:1480
wsd-00001-00022 2025-07-28 22:59:57.832561 +0000 [ prisoner_poll ] TRC  #17: Incoming data buffer 3096 bytes, read result: 3096, events: 0x1 (not closed)| net/Socket.hpp:1689
wsd-00001-00022 2025-07-28 22:59:57.832575 +0000 [ prisoner_poll ] TRC  Parsing header given 159 bytes: User-Foo: Adminbits
Sec-WebSocket-Key: 4bkEtOboTcf21FqGRcg9RA==
Sec-WebSocket-| net/HttpRequest.cpp:120
wsd-00001-00022 2025-07-28 22:59:57.832689 +0000 [ prisoner_poll ] TRC  Read 157 bytes of header. hasContentLength: false, contentLength: -1, chunked: false:
User-Foo: Adminbits
Sec-WebSocket-Key: 4bkEtOboTcf21FqGRcg9RA==
Sec-WebSocket-Version: 13
Accept-Language: en
Cache-Control: no-cache
Pragma: no-cache
| net/HttpRequest.cpp:159
wsd-00001-00022 2025-07-28 22:59:57.832696 +0000 [ prisoner_poll ] TRC  #17: Child connection with URI [/coolws/newchild?jailid=L0fGqzTNVgu1VPBk&version=%7B%22BuildConfig%22:%22%27--enable-hardening-flags%27%20%27--enable-mpl-subset%27%20%27--with-vendor=Collabora%27%20%27--disable-community-flavor%27%20%27--with-branding=icon-themes%2Fgalaxy%2Fbrand_cp%27%20%27--with-system-dicts%27%20%27--with-myspell-dicts%27%20%27--with-system-zlib%27%20%27--disable-poppler%27%20%27--enable-cairo-rgba%27%20%27--without-system-cairo%27%20%27--without-system-fontconfig%27%20%27--without-system-freetype%27%20%27--without-system-graphite%27%20%27--without-system-harfbuzz%27%20%27--without-system-openssl%27%20%27--without-system-libpng%27%20%27--without-system-libxml%27%20%27--without-system-jpeg%27%20%27--without-system-expat%27%20%27--without-system-curl%27%20%27--without-system-icu%27%20%27--without-system-nss%27%20%27--without-system-jars%27%20%27--without-system-postgresql%27%20%27--without-java%27%20%27--without-junit%27%20%27--without-help%27%20%27--with-linker-hash-style=both%27%20%27--with-fonts%27%20%27--with-docrepair-fonts%27%20%27--enable-noto-font%27%20%27--with-galleries=no%27%20%27--with-theme=colibre%20colibre_svg%27%20%27--with-external-thes-dir=%2Fusr%2Fshare%2Fmythes%27%20%27--with-external-hyph-dir=%2Fusr%2Fshare%2Fhyphen%27%20%27--with-external-dict-dir=%2Fusr%2Fshare%2Fhunspell%27%20%27--disable-dbus%27%20%27--enable-extension-integration%27%20%27--disable-odk%27%20%27--disable-kf5%27%20%27--disable-gtk3%27%20%27--disable-qt5%27%20%27--disable-gstreamer-1-0%27%20%27--disable-evolution2%27%20%27--disable-gio%27%20%27--disable-gui%27%20%27--disable-scripting-beanshell%27%20%27--disable-scripting-javascript%27%20%27--disable-ext-wiki-publisher%27%20%27--disable-report-builder%27%20%27--disable-ext-nlpsolver%27%20%27--disable-sdremote%27%20%27--disable-sdremote-bluetooth%27%20%27--disable-postgresql-sdbc%27%20%27--disable-firebird-sdbc%27%20%27--disable-randr%27%20%27--enable-epm%27%20%27--enable-python=internal%27%20%27--disable-online-update%27%20%27--disable-dconf%27%20%27--enable-mergelibs%27%20%27--with-package-format=deb%20rpm%27%20%27--enable-release-build%27%20%27--with-lang=ar%20bg%20ca%20cs%20da%20de%20el%20en-US%20en-GB%20eo%20es%20eu%20fi%20fr%20gl%20he%20hr%20hu%20id%20is%20it%20ja%20ko%20lo%20nb%20nl%20oc%20pl%20pt%20pt-BR%20sq%20ru%20sk%20sl%20sv%20tr%20uk%20vi%20zh-CN%20zh-TW%27%20%27--disable-lotuswordpro%27%20%27--disable-lpsolve%27%20%27--enable-symbols%27%20%27--enable-sal-log%27%20%27--without-templates%27%20%27--with-buildconfig-recorded%27%20%27--srcdir=%2Fopt%2Fcollaboraoffice%2Fdebugsource%27%20%27--enable-option-checking=fatal%27%20%27PKG_CONFIG_PATH=%2Fopt%2Frh%2Fdevtoolset-12%2Froot%2Fusr%2Flib64%2Fpkgconfig%27%22%2C%22BuildId%22:%223a97a8da3ab1aa2192c2f37b9ab8ae29b5edb276%22%2C%22ProductExtension%22:%22.4.1%22%2C%22ProductName%22:%22Collabora%20Office%22%2C%22ProductVersion%22:%2225.04%22%2C%22tunnelled_dialog_image_cache_size%22:%22100%22%7D]| wsd/COOLWSD.cpp:3062
wsd-00001-00022 2025-07-28 22:59:57.833388 +0000 [ prisoner_poll ] TRC  #17: New child spawned after 11678ms of requesting| wsd/COOLWSD.cpp:3112
wsd-00001-00022 2025-07-28 22:59:57.833436 +0000 [ prisoner_poll ] INF  #17: New child [28], jailId: L0fGqzTNVgu1VPBk, configId: | wsd/COOLWSD.cpp:3144
wsd-00001-00022 2025-07-28 22:59:57.833441 +0000 [ prisoner_poll ] TRC  #17: Calling make_shared<ChildProcess>, for NewChildren?| wsd/COOLWSD.cpp:3150
wsd-00001-00022 2025-07-28 22:59:57.833446 +0000 [ prisoner_poll ] TRC  #17: Upgrading to WebSocket| net/WebSocketHandler.hpp:1019
wsd-00001-00022 2025-07-28 22:59:57.833730 +0000 [ prisoner_poll ] INF  #17: WebSocket version: 13, key: [4bkEtOboTcf21FqGRcg9RA==], protocol: [chat]| net/WebSocketHandler.hpp:1029
wsd-00001-00022 2025-07-28 22:59:57.833748 +0000 [ prisoner_poll ] TRC  #17: Sending WS Upgrade response: Date: Mon, 28 Jul 2025 22:59:57
Server:
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: VJTPD7wX/Lkx8nbZBu9hnWPbVv4=
| net/WebSocketHandler.hpp:1051
wsd-00001-00022 2025-07-28 22:59:57.833763 +0000 [ prisoner_poll ] TRC  #17: Wrote 173 bytes of 173 buffered data| net/Socket.hpp:1827
wsd-00001-00022 2025-07-28 22:59:57.834217 +0000 [ prisoner_poll ] INF  ChildProcess ctor [28].| wsd/Process.hpp:40
wsd-00001-00022 2025-07-28 22:59:57.834233 +0000 [ prisoner_poll ] TRC  Adding a new child 28 with config  to NewChildren, have 0 outstanding requests| wsd/COOLWSD.cpp:698
wsd-00001-00022 2025-07-28 22:59:57.834239 +0000 [ prisoner_poll ] INF  Have 1 spare child after adding [28]. Notifying.| wsd/COOLWSD.cpp:707
wsd-00001-00022 2025-07-28 22:59:57.834253 +0000 [ prisoner_poll ] TRC  #16: Handling poll events of prisoner_poll at index 1 (of 3): 0x0| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.834420 +0000 [ prisoner_poll ] TRC  #15: Handling poll events of prisoner_poll at index 0 (of 3): 0x0| net/Socket.cpp:705
wsd-00001-00022 2025-07-28 22:59:57.834427 +0000 [ prisoner_poll ] TRC  #15: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.834431 +0000 [ prisoner_poll ] TRC  #16: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
wsd-00001-00022 2025-07-28 22:59:57.834435 +0000 [ prisoner_poll ] TRC  #17: setupPollFds getPollEvents: 0x1| net/Socket.hpp:1110
kit-00028-00028 2025-07-28 22:59:57.832359 +0000 [ kit_spare_001 ] TRC  #25: Connected to WS Handler 0x44e7bf10| net/WebSocketHandler.hpp:192
kit-00028-00028 2025-07-28 22:59:57.832364 +0000 [ kit_spare_001 ] TRC  Inserting socket #25, address [], into kit| net/Socket.hpp:944
kit-00028-00028 2025-07-28 22:59:57.832368 +0000 [ kit_spare_001 ] TRC  #25: Resetting thread affinity while in transit (was 0x7f478b41a7c0)| net/Socket.hpp:446
kit-00028-00028 2025-07-28 22:59:57.832373 +0000 [ kit_spare_001 ] TRC  #25: Resetting thread affinity while in transit (was 0x7f478b41a7c0)| net/Socket.hpp:690
wsd-00001-00001 2025-07-28 22:59:46.154195 +0000 [ coolwsd ] INF  Waiting for a new child for a max of 20000ms| wsd/COOLWSD.cpp:3748
wsd-00001-00001 2025-07-28 22:59:57.834301 +0000 [ coolwsd ] TRC  Have 1 new children.| wsd/COOLWSD.cpp:3757
Ready to accept connections on port 9980.

frk-00023-00023 2025-07-28 22:59:55.280910 +0000 [ forkit ] INF  Forked kit [28]| kit/ForKit.cpp:567
frk-00023-00023 2025-07-28 22:59:55.280982 +0000 [ forkit ] TRC  Forking child took 10ms| kit/ForKit.cpp:578
frk-00023-00023 2025-07-28 22:59:55.281000 +0000 [ forkit ] INF  Forkit initialization complete: setting log-level to [warning] as configured.| kit/ForKit.cpp:1051
frk-00023-00023 2025-07-28 22:59:57.839519 +0000 [ forkit ] WRN  The systemplate directory [/opt/cool/systemplate] is read-only, and at least [/opt/cool/systemplate//etc/passwd] is out-of-date. Will have to clone dynamic elements of systemplate to the jails. To restore optimal performance, make sure the files in [/opt/cool/systemplate/etc] are up-to-date.| common/JailUtil.cpp:586
frk-00023-00023 2025-07-28 22:59:57.861661 +0000 [ forkit ] WRN  The systemplate directory [/opt/cool/systemplate] is read-only, and at least [/opt/cool/systemplate//etc/passwd] is out-of-date. Will have to clone dynamic elements of systemplate to the jails. To restore optimal performance, make sure the files in [/opt/cool/systemplate/etc] are up-to-date.| common/JailUtil.cpp:586
frk-00023-00023 2025-07-28 22:59:57.867265 +0000 [ forkit ] WRN  The systemplate directory [/opt/cool/systemplate] is read-only, and at least [/opt/cool/systemplate//etc/passwd] is out-of-date. Will have to clone dynamic elements of systemplate to the jails. To restore optimal performance, make sure the files in [/opt/cool/systemplate/etc] are up-to-date.| common/JailUtil.cpp:586
kit-00028-00028 2025-07-28 22:59:57.836960 +0000 [ kit_spare_001 ] TRC  #25: Set socket buffer size to 262144| net/Socket.hpp:305
kit-00028-00028 2025-07-28 22:59:57.836990 +0000 [ kit_spare_001 ] INF  New kit client websocket inserted.| kit/Kit.cpp:3880
kit-00028-00028 2025-07-28 22:59:57.836998 +0000 [ kit_spare_001 ] INF  Kit initialization complete: setting log-level to [warning] as configured.| kit/Kit.cpp:3894
wsd-00001-00022 2025-07-28 22:59:57.834523 +0000 [ prisoner_poll ] TRC  ppoll start, timeoutMicroS: 15450080 size 3| net/Socket.cpp:534
wsd-00001-00001 2025-07-28 22:59:57.837125 +0000 [ coolwsd ] INF  WSD initialization complete: setting log-level to [warning] as configured.| wsd/COOLWSD.cpp:3772

Wo läuft denn Dein Reverse Proxy?
Sieht so aus als müssten wir dem Libre Workspace verkaufen, dass er sich unter einer anderen Adresse melden muss.

Ich habe das gleiche Problem seit dem Upgrade auf Version 0.10. Zuvor konnten Office Dokumente aus Nextcloud heraus bearbeitet werden. Jetzt tritt der Fehler auf, dass der WOPI-Server nicht autorisiert sei (“Unautorisierter WOPI-Host.”, Meldung in Nextcloud).

Hier werden externe Anfragen an Subdomains (auch von Libre Workspace, portal., cloud., office. usw.) von einem externen VPS per socat an die IPv6 eines Nginx reverse proxy geleitet – um CGNAT zu umgehen – und vom dort an die jeweiligen internen IPv4-Adressen verteilt. Alle Subdomains von Libre Workspace sind auf einer internen IP erreichbar, Libre Workspace und Nginx reverse proxy laufen auf virtuellen Maschinen (Proxmox).

Es gab zunächst eine Fehlermeldung in den Admin-Office-Einstellungen von Nexcloud, dass keine Verbindung mit dem Collabora Online-Server aufgebaut werden konnte:

“Es konnte keine Verbindung zum Collabora Online-Server hergestellt werden.
Failed to connect to the remote server: cURL error 35: OpenSSL/3.0.17: error:0A000438:SSL routines::tlsv1 alert internal error (see libcurl - Error Codes) for https://office.meinedomain.tld/hosting/discovery

Die verschwand nachdem entweder die interne IP des Reverse-Proxy oder die IP des externen Weiterleitungsservers in /etc/hosts oder im lokalen Samba DNS eingetragen wurde. Erst danach waren auch die Einstellungen für die erlaubten Quellen für WOPI-Anfragen in den Nexcloud-Einstellungen sichtbar.

Zwar kann ich nun verschiedene erlaubte IPs für WOPI-Anfragen bei Nexcloud eintragen, konnte jedoch bisher keinen Erfolg damit erzielen: weder die interne IP des reverse proxy (IPv4 oder IPv6) noch die IP des externen VPS, die IP der virtuellen Maschine auf der Libre Worspace läuft (v4 oder v6) noch private IP-Bereiche komplett einzutragen, wirkte. Die Fehlermeldung in Nexcloud bleibt die gleiche.

Mir ist nicht klar, wie Nexcloud direkter mit Collabora kommunizieren könnte (laufen beide in eigenen Docker-Containern?). Aktuell scheint Nextcloud die Domain office.meinedomain.tdl zu kontaktieren und daher über den Reverse Proxy oder sogar die externe IPv4 zu gehen? Könnte direkt auf den Collabora-Server per IP zugegriffen werden, oder steht SSL als Bedingung dem entgegen?

Nextcloud läuft direkt auf der Maschine als LAMP, Collabora ist im Docker-Container.
Beide müssen sich meine ich über https erreichen und gehen über die “öffentliche” IP-Adresse. Des reverse proxies.
127.0.0.1 oder sowas funktioniert nicht, da der Docker-Container da nicht mitmacht.

Die Meldung kann schon relativ nervig sein, vor allem in Custom Setups mit externen Reverse Proxies, da wir das nicht offiziell unterstützen, kann ich hier nur bedingt im Forum weiterhelfen,

Wenn Du nochmal gezielte über das Thema Hilfe brauchst, gerne melden :slight_smile:

Danke für die Informationen. Es ist nur eine Testinstallation. Ich werde bei Gelegenheit weiter probieren und hier posten, falls ich eine Lösung finde.