Collabora and NextCloud on Docker, never worked, help finding out what is wrong and where

Hey, hope not to disturb (too much). I am having issues with Collabora CODE and NextCloud on Docker, I tried to solve it by myself for quite a while, but never took it seriously enough… I got in touch with the Collabora tech support and got directed to the forum. I browsed around, found several similar issues, but not much.

I try to describe the issue:

Symptoms: when ever I try to open a document within NextCloud, the Collabora logo appears briefly but the interface never loads up, and a loading spinning animation keeps going for ever.

Context:

  • NextCloud and Collabora are running as Docker images, behind Reverse Proxy (EnginX Proxy Manager) and through Docker-Compose file (that I can off course post)
  • all images are updated to the latest versions (NC 23.0.3), including databases
  • NC and CODE are sharing the same Docker network and are seeing each other as well as having access to the internet
  • the (sub)domains have their SSL certificates, everything seems ok
  • Visiting the CODE address gives a “OK” message
  • NextCloud points to the CODE domain inside Settings/Office and gives back the Green Confirmation

I get several errors on the log for Collabora. Should I post?

Blockquote wsd-00001-00038 2022-04-04 13:39:13.358714 +0000 [ websrv_poll ] ERR #26 Exception while processing incoming request: [GET /cool/https%3A%2F%2Fda.hopto.org%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F35_ocgmfyahmyot%3Faccess_token%3DNIO3cYa2cgNR67NtO2hC8F7y8i0ON1S3%26access_token_ttl%3D0%26permission%3Dedit/ws?WOPISrc=https%3A%2F%2Fda.hopto.org%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F35_ocgmfyahmyot&compat=/ws HTTP/1.1
…]: Invalid or unknown request.| wsd/COOLWSD.cpp:3222

Does Collabora need any further configuration? And last, I could not find a comprehensive and updated guide, there are tons of them, and not one that is complete and simple, and not obsolete.

THANK You if you ever could help out, would love to see this thingy doing what it is supposed to do. the concept is brilliant!!

Dario

@alux77 can you post all the errors please that would be helpful? Are you trying to access CODE using multiple domains ?

1 Like

Not at all we welcome any feedback, thanks for taking the time to write :slight_smile:

Yes that would be good :+1: maybe @rash419 can take a look?

Which version were you updating from?

In the meantime let me paste here some useful links that might have gotten overlooked:

   migrateconfig
       The migrateconfig command migrates config file of Collabora Online 6.4 or older to the new format.

       migrateconfig [--old-config-file=<path>] [--config-file=<path>] [--write]

       --old-config-file=path    Specify file path for the old configuration manually. The default is /etc/loolwsd/loolwsd.xml.

       --write                   Write migrated configuration. Without this option no changes are written to the config file, only information about differences between old and new config is printed.

       Example: coolconfig migrateconfig --old-config-file=/etc/loolwsd/loolwsd.xml --config-file=/etc/coolwsd/coolwsd.xml --write
1 Like

Hey again,
now I need to clean up around, including the other post that is no longer useful, once this got activated. Pity that I can no longer edit this one anymore, being it now old…

All this has nothing to do with migration, it simply never worked, so I need to find out how to configure it correctly from start, and what is eventually missing.

In the installation guide, in the docker section, there is something that I tried already to “translate” inside the docker-composer version. I can try to post the docker-compose file here, if the forum will let me do it, and then also the logs.

docker-compose

version: ‘3’

networks:
frontend:
external: true

services:

collabora-code:
container_name: collabora-code
image: collabora/code:latest
restart: always
environment:
- domain=the.nextcloud.domain
- VIRTUAL_HOST=the.CODE.domain
- VIRTUAL_PORT=9980
- extra_params=–o:ssl.enable=false --o:ssl.termination=true
- USERNAME=username
- PASSWORD=password
cap_add:
- MKNOD
expose:
- 9980
networks:
- frontend

Where I changed here in this message the 2 subdomains and user/password.
For what I understood, the NextCloud subdomain needs to be declared as “domain”, and the Collabora server one as “Virtual Host”, is it still true? I saw that things changed several times depending on the versions… (hat’s where the confusion of the existing guides starts).
Shouldn’t it be enough to configure from this file, without any further configuration inside the Docker itself?

Now the logs from inside the docker-image of Collabora:

First of all, once opened, I found a lot of this:

wsd-00001-00038 2022-04-07 04:38:38.048694 +0000 [ websrv_poll ] ERR Poco::Net::DNS::resolve(“xxx.xxx.xxx.xxx”) failed: DNS error: Temporary DNS error while resolving: 92.246.23.75| wsd/COOLWSD.cpp:3015

That IP that I masked is the IP my ISP assigned to me at the moment: why does CODE gets requests from me?

Than this happens when I open a document from NextCloud:

wsd-00001-00038 2022-04-07 08:57:50.204411 +0000 [ websrv_poll ] ERR #26 Exception while processing incoming request: [GET /cool/https%3A%2F%2Fthe.nextcloud.subdomain%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F35_ocgmfyahmyot%3Faccess_token%3DkqkhW8csbTa4IWFrOE6QvtG2unnHSKnq%26access_token_ttl%3D0%26permission%3Dedit/ws?WOPISrc=https%3A%2F%2Fthe.nextcloud.subdomain%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F35_ocgmfyahmyot&compat=/ws HTTP/1.1
…]: Invalid or unknown request.| wsd/COOLWSD.cpp:3222

Thanks
Dario

Hey @rash419 no, Collabora and NextCloud are 2 subdomains of the same domain, if I got your question right.

Hey, I am still hoping to go on with this…
Anyone that can help out?
An updated guide with docker-compose and the right parameters?
Thanks

@alux77 hello , we dont use domain,it is not supported on latest docker version. It should not start when you use domain env varilable It should also give error message in docker logs, instead of domain use
aliasgroup1=the.nextcloud.domain

After that check if you have any ERR in logs like No acceptable host found
more info : CODE Docker image — SDK https://sdk.collaboraonline.com/ documentation

Thanks for replying, I still didn’t go anywhere. I am definitely missing something, but also what I keep finding on-line seems to mislead and further confuse.

Is there anywhere an updated docker-compose (that’s what I organized my stuff with) example with the basic things on?

I am using Portainer (stacks) to keep my projects organized, everything else works flowlessly. Everything is behind a Nginx Proxy Manager and I use A records as subdoomains for the various projects.

I am having

version: '3'

networks:
  frontend:
    external: true

services:
  code:
    image: collabora/code:latest
    restart: always
    container_name: collabora-code
    environment:
      - password=xxxxxxxx
      - username=yyyyy
      - aliasgroup1=cloud.zzzzzzzzz.com
      - extra_params=--o:ssl.enable=true
    ports:
      - 9980:9980
    networks:
      - frontend

I get a “bad gateway” if I visit the page, and

wsd-00001-00040 2022-06-14 05:29:43.103797 +0000 [ websrv_poll ] ERR  #28 Error while handling poll at 0 in websrv_poll: #28BIO error: 0, rc: -1: error:00000000:lib(0):func(0):reason(0):| net/Socket.cpp:451

wsd-00001-00001 2022-06-14 05:30:30.750217 +0000 [ coolwsd ] WRN  Waking up dead poll thread [update], started: false, finished: false| net/Socket.hpp:722

from the logs.
Any hints/help would be greatly appreciated.
Would love to see this thing working finally…

Cheers!

Now I see I forgot a

--o:ssl.enable=true

there, being behind proxy, I set it to false (Nginx is managing the SSL certs) and I get “OK” visiting the page, and different errors from the logs when trying to access a document from nextcloud (still get the green on office server settings)

wsd-00001-00001 2022-06-14 05:43:18.572387 +0000 [ coolwsd ] WRN  Waking up dead poll thread [update], started: false, finished: false| net/Socket.hpp:722

Shouln’t I mention the domain the collabora-code itself is on, apart from the netcloud one?

@alux77 the aliasgroup1 should be: <protocol>://<hostname>:<port>
example: https://cloud.zzzzz.com:443
If you don’t use ssl you should have ssl.enable=false
Search for ERR in log that might be helpful

Tried that too, no difference.

For some reason I see from logs that collabora looks to the IP of the machine it is running on, instead of the subdomain, and rejects it.

Is there an up to date template for a standard accepted working docker-compose file?
I still think I am missing something, and that what I am using is outdated.

@alux77 Could you please share the complete log messages? I don;t think we have a docker-compose file at hand…hm :frowning:

The docker-compose I can compile, as soon as I understand what is right and what is wrong. Of the many “guides” around, most of them are outdated and misleading.

What i get is

Server: COOLWSD HTTP Server 21.11.5.3
Upgrade: websocket
Connection: Upgrade

Sec-WebSocket-Accept: Ky8fA2/4bDM/60rXEBsxOGdWIF8=
| net/WebSocketHandler.hpp:891
wsd-00001-00035 2022-06-23 14:41:37.875519 +0000 [ prisoner_poll ] TRC  #22: Wrote 201 bytes of 201 buffered data| net/Socket.hpp:1437
wsd-00001-00035 2022-06-23 14:41:37.875538 +0000 [ prisoner_poll ] INF  ChildProcess ctor [38].| wsd/COOLWSD.hpp:58
wsd-00001-00035 2022-06-23 14:41:37.875552 +0000 [ prisoner_poll ] TRC  #22 resetting thread affinity while in transit (was 0x7f21751d7700)| net/Socket.hpp:329
wsd-00001-00035 2022-06-23 14:41:37.875570 +0000 [ prisoner_poll ] TRC  Calling addNewChild in disposition's move thing to add to NewChildren| wsd/COOLWSD.cpp:3186
wsd-00001-00035 2022-06-23 14:41:37.875581 +0000 [ prisoner_poll ] TRC  Adding one child to NewChildren| wsd/COOLWSD.cpp:526
wsd-00001-00035 2022-06-23 14:41:37.875598 +0000 [ prisoner_poll ] INF  Have 1 spare child after adding [38].| wsd/COOLWSD.cpp:530
wsd-00001-00035 2022-06-23 14:41:37.875610 +0000 [ prisoner_poll ] TRC  Notifying NewChildrenCV| wsd/COOLWSD.cpp:533
wsd-00001-00035 2022-06-23 14:41:37.875653 +0000 [ prisoner_poll ] TRC  Removing socket #22 (at 2 of 3) from prisoner_poll| net/Socket.cpp:473
wsd-00001-00035 2022-06-23 14:41:37.875675 +0000 [ prisoner_poll ] TRC  #20: setupPollFds getPollEvents: 0x1| net/Socket.hpp:854
wsd-00001-00035 2022-06-23 14:41:37.875692 +0000 [ prisoner_poll ] TRC  #21: setupPollFds getPollEvents: 0x1| net/Socket.hpp:854
wsd-00001-00001 2022-06-23 14:41:37.875674 +0000 [ coolwsd ] TRC  Have 1 new children.| wsd/COOLWSD.cpp:5051
wsd-00001-00001 2022-06-23 14:41:37.875788 +0000 [ coolwsd ] INF  WSD initialization complete: setting log-level to [warning] as configured.| wsd/COOLWSD.cpp:5067
wsd-00001-00035 2022-06-23 14:41:37.875766 +0000 [ prisoner_poll ] TRC  ppoll start, timeoutMicroS: 5000000 size 2| net/Socket.cpp:339
Ready to accept connections on port 9980.
wsd-00001-00001 2022-06-23 14:42:37.943488 +0000 [ coolwsd ] WRN  Waking up dead poll thread [update], started: false, finished: false| net/Socket.hpp:722
wsd-00001-00040 2022-06-23 14:43:36.089211 +0000 [ websrv_poll ] ERR  Poco::Net::DNS::resolve("92.xx.yy.zz") failed: Host not found: 92.xx.yy.zz| wsd/COOLWSD.cpp:3332

It is clearly resolving at the IP of the machine, but why?

Oh I’m sorry to hear that. I would recommend to keep an eye for the official documentation: Collabora Online SDK — SDK https://sdk.collaboraonline.com/ documentation in this case and since you have a multihost setup: Configuration — SDK https://sdk.collaboraonline.com/ documentation