I am trying to install CODE on my openmediavault NAS, alongside Nginx Proxy manager (NPM) and Sync-in.
Based upon the Installation Guide, as well as an ‘include’ compose file coming from Sync-in, my compose in openmediavault is as follows:
name: collabora
services:
code:
container_name: collabora
image: collabora/code
restart: always
environment:
- PUID=${{ uid:"appuser" }} # omv user appuser
- PGID=${{ gid:"users" }} # omv usergroup users
- TZ=${{ tz }} # omv system time zone
- user=${{ uid:"appuser" }} # omv user appuser
- username=ADMIN-USER # If needed, USE 'single quotes' so as to prevent including "Double quotes" in name
- password=ADMIN-PASSWORD # If needed, USE 'single quotes' so as to prevent parsing /escape sequences
- dictionaries=de_DE en_GB en_US fr_FR nl
# extra_parms copied from sync-in collabora compose
- extra_params=--o:ssl.enable=false --o:ssl.termination=false --o:logging.disable_server_audit=true --o:admin_console.enable=false
ports:
# - 9980:9980 # Standard port redirection
- '[::1]:9980:9980' # IPv6 port redirection as suggested by CODE installation guide
tty: true
cap_drop: # capabilities drop copied from sync-in collabora compose
- ALL
cap_add: # capabilities add copied from sync-in collabora compose
- SYS_CHROOT
- SYS_ADMIN
- FOWNER
- CHOWN
logging:
driver: json-file
options:
max-size: 25m
max-file: 5
networks:
- sync_in_network # join sync-in external network
- web-proxy # join web-proxy external network
networks:
sync_in_network:
external: true
web-proxy:
external: true
Upon docker compose UP, I get the following warning:
time="2026-06-13T14:00:29+02:00" level=warning msg="The \"pd\" variable is not set. Defaulting to a blank string."
I don’t understand what this variable “pd” is about, but I was hoping to find an explanation somewhere in the config file coolwsd.xml. However, on my debian 13 based openmediavault system, I cannot find the folder /etc/coolwsd. Any suggestions where it might be hiding?
And would there be a way, similar to the oftenly used docker compose environment variable ./data:/app/data, to redirect collabora to a more convenient location for its internal data?
Using WinSCP FIND gave me two results. Now which is the real thing?
Hm, need to search again. This time for the full filename coolwsd.xml
Again two results for coolwsd.xml. Which is the right one to edit?
I could do with some guidance here.
In other posts at this forum I’ve found this compose snippet
volumes:
- ./coolwsd/coolwsd.xml:/etc/coolwsd/coolwsd.xml
This looks like a good way to make coolwsd.xml more accessible for making configurations.
I also understand that I’d need to place my own copy in ./cool/coolwsd/
Better than snitching it from somewhere deep inside an obscore docker folder structure, is there a proper online source (Github?) where I can pull the latest template of coolwsd.xml?
Searching for ‘pd’ everywhere, I discovered that the only place where it occors is inside the password value which had a part ‘$pd’. After changing the $ for an S, the warning message disappeared. I briefly tried to enclose the password value in single quotes, but this did not help.
So, the password value shall not hold special characters, e.g. $ or / or … what else?
I don’t think that this crucial requirement is mentioned in the Installation guide.
Hi @Stephan-P
Long time no see 
Searching for ‘pd’ everywhere, I discovered that the only place where it occors is inside the password value which had a part ‘$pd’. After changing the $ for an S, the warning message disappeared. I briefly tried to enclose the password value in single quotes, but this did not help.
1. “pd” warning: Compose read $pd in your password as a variable. Fix: double the dollar sign → $$. Single quotes don’t help in Compose. Only $ needs escaping; / @ ! etc. are fine.
Better than snitching it from somewhere deep inside an obscore docker folder structure, is there a proper online source (Github?) where I can pull the latest template of coolwsd.xml?
2. Which coolwsd.xml? Neither edit directly — both are inside Docker’s overlay filesystem (the container, not your host). That’s why /etc/coolwsd doesn’t exist on your host: Collabora only lives in the container.
3. Right way: Use the bind-mount you found:
volumes:
- ./coolwsd/coolwsd.xml:/etc/coolwsd/coolwsd.xml
Get a clean template by copying from the running container:
docker cp collabora:/etc/coolwsd/coolwsd.xml ./coolwsd/coolwsd.xml
(Better than GitHub, which only has a .in template with placeholders.)
4. Data redirect: Not needed — Collabora is stateless. Documents live in Sync-in, not Collabora. Only config/logs are worth persisting.
Note: [::1]:9980:9980 binds IPv6 loopback only. If NPM connects over the Docker network it’s fine; if it targets 127.0.0.1:9980 it’ll fail.
I Hope this will help 
Cheers
Darshan
Get a clean template by copying from the running container:
docker cp collabora:/etc/coolwsd/coolwsd.xml ./coolwsd/coolwsd.xml
Being quite the old Windows user and unfamiliar with Linux, I had to let this sink in a bit… and do some experimenting.
Using WinSCP’s context option “Static Custom Commands” I learned that above cp command is giving an error message when the subfolder ./coolwsd/ does not exist. So apparently it won’t automatically create the destination folder ./coolwsd/.
So I came up with the following:
- Use WinSCP to navigate to ‘appdata/collabora’ where omv compose stores its ‘collabora.yaml’ and ‘collabora.env’
- create a subfolder ‘coolwsd’
- RMB-click below the last file in the list, to open the context menu
and choose option “Static Custom Commands” - “Enter”
- Then paste the command:
docker cp collabora:/etc/coolwsd/coolwsd.xml ./coolwsd/coolwsd.xml
@darshan the Installation guide makes multiple reference to the configuration file /etc/coolwsd/coolwsd.xml, which is really hard to find down within the docker rabbit hole. Being a simple home user trying to setup a NAS with docker containers, I’d ask you to consider adding more info on how to mount coolwsd.xml at a more convenient location. Better yet, how about automatically copying this file to the more convenient location: ./coolwsd/coolwsd.xml?