I can't get my collabora docker container to respond

So when I try to go to https://collabora.example.net, it doesn’t connect. And even if I try going to https://:9980, it doesn’t connect either. Nextcloud can’t see it either. Any ideas on what I’m doing wrong?

services:
  collabora:
    image: collabora/code:latest
    restart: always 
    container_name: collabora 
    privileged: true
    ports:
      - 0.0.0.0:9980:9980  
    networks:
      - collabora 
    environment:
      - aliasgroup1='https://collabora.example.net,https://collabora\\.example\\.net'
      - aliasgroup2='http://collabora'
      - aliasgroup3='https://collabora'
      - server_name=collabora
      - DONT_GEN_SSL_CERT=1
      - username=admin
      - password=pass
      - extra_params=--o:ssl.enable=false --o:ssl.termination=true
      - dictionaries=en_US
      - TZ=America/New_York
    cap_add:
      - MKNOD
      - SYS_ADMIN
    volumes:
      - /mnt/wd1/collabora/coolwsd/:/etc/coolwsd/:rw

networks:
  collabora:
    name: collabora

Caddy Config:

collabora.example.net {
    tls internal
    reverse_proxy collabora:9980 
}

I see the following in the logs. Please let me know if you need more logs. I tried googling the “Poco::SyntaxException” error but I couldn’t find anything:

collabora          | 2025-05-21T12:17:30.822202741Z preload: merged xmlsecurity ucpchelp1 wpftwriter wpftcalc wpftimpress wpftdraw msforms cached1 vbaswobj swd sw ucppkg1 sm msword slideshow pdfimport sdui sd scriptframe protocolhandler dlgprov solver pricing date vbaobj scd sc ucpdav1 pcr pdffilter ldapbe2 log migrationoo2 sdd deploymentgui smd cui dbase animcore t602filter flash flat PresentationMinimizer invocation stocservices acc sw_writerfilter io reflection uuresolver bootstrap scn dba calc sdbt dbaxml dbpool2 scfilt introspection mysql_jdbc cairocanvas writer binaryurp LanguageTool bib storagefd namingservice svgfilter graphicfilter ucpcmis1 analysis migrationoo3 invocadapt mozbootstrap hwp textconversiondlgs proxyfac
collabora          | 2025-05-21T12:17:30.822245452Z Disabled: cmdmail rptxml rptui rpt dbp dbu abp odbc sdbc2 
collabora          | 2025-05-21T12:17:30.996549632Z Preload textencodings
collabora          | 2025-05-21T12:17:31.001298998Z Allowlisted languages: en_US 
collabora          | 2025-05-21T12:17:31.028378079Z Preloading local dictionaries: en-US 
collabora          | 2025-05-21T12:17:31.044262913Z Preloading local thesauri: en-US 
collabora          | 2025-05-21T12:17:31.049823632Z Preloading local hyphenators: en-US 
collabora          | 2025-05-21T12:17:31.049845799Z Preloading breakiterator
collabora          | 2025-05-21T12:17:31.050290806Z Preload icons
collabora          | 2025-05-21T12:17:31.056049110Z Preload short cut accelerators
collabora          | 2025-05-21T12:17:31.114159553Z Preload languages
collabora          | 2025-05-21T12:17:31.148076908Z Preload fonts
collabora          | 2025-05-21T12:17:31.149488737Z Fontconfig error: Cannot load default config file: No such file: (null)
collabora          | 2025-05-21T12:17:31.194176752Z Preload config
collabora          | 2025-05-21T12:17:31.346987167Z frk-00010-00010 2025-05-21 08:17:30.383471 -0400 [ coolforkit-ns ] TRC  dlopen(/opt/collaboraoffice/program/libmergedlo.so, RTLD_GLOBAL|RTLD_NOW)| kit/Kit.cpp:4105
collabora          | 2025-05-21T12:17:31.347007322Z frk-00010-00010 2025-05-21 08:17:30.409463 -0400 [ coolforkit-ns ] TRC  Invoking lok_preinit_2(/opt/collaboraoffice/program", "file:///tmp/user")| kit/Kit.cpp:4162
collabora          | 2025-05-21T12:17:31.347021189Z frk-00010-00010 2025-05-21 08:17:31.346771 -0400 [ coolforkit-ns ] DBG  After lok_preinit_2: loKitPtr=0x3f8ac100| kit/Kit.cpp:4171
collabora          | 2025-05-21T12:17:31.347024530Z frk-00010-00010 2025-05-21 08:17:31.346790 -0400 [ coolforkit-ns ] TRC  Finished lok_preinit(/opt/collaboraoffice/program", "file:///tmp/user") in 937ms| kit/Kit.cpp:4173
collabora          | 2025-05-21T12:17:31.347027507Z frk-00010-00010 2025-05-21 08:17:31.346830 -0400 [ coolforkit-ns ] INF  Setting up systemplate dynamic files in [/opt/cool/systemplate].| common/JailUtil.cpp:521
collabora          | 2025-05-21T12:17:31.347030224Z frk-00010-00010 2025-05-21 08:17:31.346838 -0400 [ coolforkit-ns ] INF  Updating systemplate dynamic files in [/opt/cool/systemplate]| common/JailUtil.cpp:550
collabora          | 2025-05-21T12:17:31.347033881Z frk-00010-00010 2025-05-21 08:17:31.346861 -0400 [ coolforkit-ns ] DBG  File contents mismatch: [/opt/cool/systemplate//etc/passwd] exists, 883 bytes, modified at 1747344330 =/= [/etc/passwd]: exists, 885 bytes, modified at 1747344335| common/FileUtil.hpp:329
collabora          | 2025-05-21T12:17:31.347037605Z frk-00010-00010 2025-05-21 08:17:31.346867 -0400 [ coolforkit-ns ] INF  No write access to path [/opt/cool/systemplate]: Permission denied| common/FileUtil-unix.cpp:450
collabora          | 2025-05-21T12:17:31.347040463Z frk-00010-00010 2025-05-21 08:17:31.346872 -0400 [ coolforkit-ns ] 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
collabora          | 2025-05-21T12:17:31.347043612Z frk-00010-00010 2025-05-21 08:17:31.346874 -0400 [ coolforkit-ns ] WRN  Failed to update the dynamic files in [/opt/cool/systemplate]. Will clone dynamic elements of systemplate to the jails.| common/JailUtil.cpp:529
collabora          | 2025-05-21T12:17:31.347047566Z frk-00010-00010 2025-05-21 08:17:31.346880 -0400 [ coolforkit-ns ] INF  Systemplate dynamic files in [/opt/cool/systemplate] will be copied to keep them up-to-date.| common/JailUtil.cpp:542
collabora          | 2025-05-21T12:17:31.347050404Z frk-00010-00010 2025-05-21 08:17:31.346886 -0400 [ coolforkit-ns ] DBG  Linking symbolically [/opt/cool/systemplate/dev/random] to [../tmp/dev/random].| common/JailUtil.cpp:670
collabora          | 2025-05-21T12:17:31.347053066Z frk-00010-00010 2025-05-21 08:17:31.346890 -0400 [ coolforkit-ns ] TRC  Random device link [/opt/cool/systemplate/dev/random] already exists.| common/JailUtil.cpp:678
collabora          | 2025-05-21T12:17:31.347285603Z terminate called after throwing an instance of 'Poco::SyntaxException'
collabora          | 2025-05-21T12:17:31.347305475Z   what():  Syntax error
collabora          | 2025-05-21T12:17:31.347308873Z frk-00010-00010 2025-05-21 08:17:31.347226 -0400 [ coolforkit-ns ] SIG   Fatal signal received: SIGABRT code: 18446744073709551610 for address: 0x3e90000000a
collabora          | 2025-05-21T12:17:31.347311517Z Recent activity:
collabora          | 2025-05-21T12:17:31.347313752Z 
collabora          | 2025-05-21T12:17:31.347315894Z Backtrace 10 - forkit startup of 25.04.2.1 0968141f2c:
collabora          | 2025-05-21T12:17:31.347412179Z /usr/bin/coolforkit-ns(_ZN7SigUtil13dumpBacktraceEv+0x73)[0x63d503]

Main Problem: Poco::SyntaxException

The container crashes at startup with a Poco::SyntaxException. This is often caused by invalid environment variable syntax, especially in values like aliasgroup1.

You have:

- aliasgroup1='https://collabora.example.net,https://collabora\\.example\\.net'

Fix:

Try removing the quotes and the backslashes (they’re likely not needed inside the YAML file and might break parsing inside the container):

- aliasgroup1=https://collabora.example.net,https://collabora.example.net

The backslashes and quotes might be misinterpreted by coolwsd, hence the syntax error.


Secondary Issues to Watch

1. DONT_GEN_SSL_CERT=1 with --o:ssl.enable=false

You’re explicitly telling Collabora not to use SSL inside the container (ssl.enable=false, termination=true). That’s correct only if your reverse proxy handles HTTPS, which you are doing with Caddy.

But make sure:

  • Caddy can resolve collabora to the container IP (via Docker network).
  • Caddy is on the same Docker network as the container.

Right now, your Docker Compose declares:

networks:
  collabora:
    name: collabora

But Caddy isn’t connected to it. Unless you’re running Caddy inside the same Docker Compose or manually connected it to the collabora network, it won’t reach the container.

Fix:

Either:

  • Add Caddy to the same network (if it’s in a separate Compose file):

    docker network connect collabora caddy_container_name
    

Or, if Caddy is in the same Compose setup:

services:
  caddy:
    ...
    networks:
      - collabora

Thanks for the quick reply. I changed the aliasgroup environment variable, and removed aliasgroup 2 and 3 for now. It is still throwing that “Poco::SyntaxException” error. below’s the updated environment sections. And Caddy is able to resolve collabora and is part of the collabara network. I’ve included a screenshot to show that Caddy/collabora are on the same network in docker:

    environment:
      - aliasgroup1=https://collabora.example.net
      - server_name=collabora
      - DONT_GEN_SSL_CERT=1
      - username=admin
      - password=pass
      - extra_params=--o:ssl.enable=false --o:ssl.termination=true
      - dictionaries=en_US
      - TZ=America/New_York

Since you’ve fixed the aliasgroup1 format and the container is still throwing a Poco::SyntaxException, the next most likely culprit is the extra_params

Follow the instructions in sdk documentation for setup. You can also find some minimal working of Collabora online with nextcloud. let paste the links…

I have followed the steps in that link and I still get that same error. I also commented out the extra params and set those directly in the coolwsd.xml, and I still get the same SyntaxException error. The coolwsd.xml file I used was the default one from GitHub. Should I be using a different one? It was this one, and I just changed the filename by removing the ‘.in’ at the end:

Just in case anyone else has the same issue, it was the coolwsd.xml.in file that I had downloaded. Not sure where to get the proper coolwsd, but I ended up just removing the bind mount from the docker compose that pointed to the coolwsd. This way it just uses the built in coolwsd.xml, but I won’t be able to edit it.

Hi @simpat1zq

  • Don’t use coolwsd.xml.in directly — it’s a template and not valid XML.
  • Use the config already inside the container, or extract it using docker run ... cat.
  • Only mount your own coolwsd.xml if you know it’s fully valid

There is also a nice setup video in our Youtube channel thet migh be helpful https://www.youtube.com/watch?v=xngSk727aBk

Thanks
Darshan