I used “jodconver-remote” to convert docx to pdf and deployed the CODE container in podman without ssl, using port 9980
.
But when calling to code’s conversion api, it prompted a file uri error, here is the detailed log:
wsd-00001-00044 2025-05-04 14:05:12.359595 +0000 [ docbroker_004 ] ERR Unsupported URI [/opt/cool/child-roots/1-c2770680/tmp/incoming/cool-hKUwSiaWe2eWcH3c/test.docx] or no storage configured| wsd/Storage.cpp:223
wsd-00001-00044 2025-05-04 14:05:12.359682 +0000 [ docbroker_004 ] ERR loading document exception: No Storage configured or invalid URI /opt/cool/child-roots/1-c2770680/tmp/incoming/cool-hKUwSiaWe2eWcH3c/test.docx]| wsd/DocumentBroker.cpp:3708
wsd-00001-00044 2025-05-04 14:05:12.359705 +0000 [ docbroker_004 ] ERR Failed to add session to [%2Fopt%2Fcool%2Fchild-roots%2F1-c2770680%2Ftmp%2Fincoming%2Fcool-hKUwSiaWe2eWcH3c%2Ftest.docx] with URI [/opt/cool/child-roots/1-c2770680/tmp/incoming/cool-hKUwSiaWe2eWcH3c/test.docx]: No Storage configured or invalid URI /opt/cool/child-roots/1-c2770680/tmp/incoming/cool-hKUwSiaWe2eWcH3c/test.docx]| wsd/DocumentBroker.cpp:3667
wsd-00001-00044 2025-05-04 14:05:12.359727 +0000 [ docbroker_004 ] ERR Exception while invoking poll [docbroker_004] callback: No Storage configured or invalid URI /opt/cool/child-roots/1-c2770680/tmp/incoming/cool-hKUwSiaWe2eWcH3c/test.docx]| net/Socket.cpp:607
frk-00015-00015 2025-05-04 14:05:12.359745 +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:587
The java program suggests that it can’t receive a response from CODE, but to be on the safe side, I’ve placed the code for the jodconverter to connect to CODE here as well, to make it easier to analyze.
@Bean
@ConditionalOnProperty(name = "xxxx", havingValue = "REMOTE", matchIfMissing = false)
public OfficeManager remoteOfficeManager() throws OfficeException {
var url = "http://localhost:9980";
SslConfig sslConfig = new SslConfig();
sslConfig.setTrustAll(true);
var manager = RemoteOfficeManager.builder()
.urlConnection(url)
.sslConfig(sslConfig)
.build();
manager.start();
return manager;
}
CODE’s description file:
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-5.3.2
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2025-05-04T14:17:29Z"
labels:
app: co-pod
name: co-pod
spec:
containers:
- env:
- name: username
value: admin
- name: TERM
value: xterm
- name: password
value: admin
- name: dictionaries
value: en_US
- name: extra_params
value: --o:ssl.enable=false
- name: aliasgroup1
value: https://.*:443,https://.*:9980
image: docker.io/collabora/code:latest
name: co
ports:
- containerPort: 9980
hostPort: 9980
securityContext:
runAsNonRoot: true
stdin: true
tty: true
Thank you for your help.
BR
hii @armando007 welcome to collabora online forum!
You’re encountering this error:
Unsupported URI [/opt/cool/child-roots/.../test.docx] or no storage configured
This means that the Collabora Online (CODE) instance cannot open the document path passed by JODConverter Remote, because CODE does not support arbitrary local file paths via URI. CODE expects files to be passed via a supported WOPI interface, or in headless mode, via its own conversion endpoint.
Why It Fails
The RemoteOfficeManager
in your Spring Boot setup is trying to open the document using a file path like:
/opt/cool/child-roots/.../test.docx
But CODE doesn’t understand local file paths from external callers. It only accepts:
- WOPI endpoints (
https://your-wopi-server/
)
- URLs passed to
/lool/convert-to/
with appropriate parameters and access
- WebSocket sessions for interactive editing
Use CODE’s Native Conversion API
CODE exposes an HTTP API for converting documents
Thanks
Darshan
Hi @darshan ,
Thanks for your help!
After posting, I used postman to send requests to the paths /lool/convert-to/pdf
or /cool/convert-to/pdf
, neither of which were successful. 
such as
curl --location --request POST 'http://localhost:9980/lool/convert-to/pdf' \
--form 'data=@"/Users/armando/Desktop/test.docx"'
I made sure not to include anything related to /opt/cool/xxxxx
in my request, but when I looked the logs of code’s container, I still see familiar error logs…
wsd-00001-00034 2025-05-07 06:55:56.790846 +0000 [ docbroker_004 ] ERR Unsupported URI [/opt/cool/child-roots/1-c0d4bb2a/tmp/incoming/cool-g2rh7nbaxt8MlXa1/test.docx] or no storage configured| wsd/Storage.cpp:223
frk-00015-00015 2025-05-07 06:55:56.790944 +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:587
wsd-00001-00034 2025-05-07 06:55:56.790950 +0000 [ docbroker_004 ] ERR loading document exception: No Storage configured or invalid URI /opt/cool/child-roots/1-c0d4bb2a/tmp/incoming/cool-g2rh7nbaxt8MlXa1/test.docx]| wsd/DocumentBroker.cpp:3708
wsd-00001-00034 2025-05-07 06:55:56.790971 +0000 [ docbroker_004 ] ERR Failed to add session to [%3A%2F%2F.%2A%3A0%2Fopt%2Fcool%2Fchild-roots%2F1-c0d4bb2a%2Ftmp%2Fincoming%2Fcool-g2rh7nbaxt8MlXa1%2Ftest.docx] with URI [/opt/cool/child-roots/1-c0d4bb2a/tmp/incoming/cool-g2rh7nbaxt8MlXa1/test.docx]: No Storage configured or invalid URI /opt/cool/child-roots/1-c0d4bb2a/tmp/incoming/cool-g2rh7nbaxt8MlXa1/test.docx]| wsd/DocumentBroker.cpp:3667
wsd-00001-00034 2025-05-07 06:55:56.790995 +0000 [ docbroker_004 ] ERR Exception while invoking poll [docbroker_004] callback: No Storage configured or invalid URI /opt/cool/child-roots/1-c0d4bb2a/tmp/incoming/cool-g2rh7nbaxt8MlXa1/test.docx]| net/Socket.cpp:607
Could you help me again?
Thanks for the update — but the issue is likely due to missing headers, especially the Content-Disposition
header that tells CODE the original filename. CODE needs this to process the file correctly, otherwise it defaults to a path that fails due to "No Storage configured
have you checked the sdk link Conversion API — SDK https://sdk.collaboraonline.com/ documentation ?
Hi @darshan ,
Thanks for your answer!
I sent the same request with reference to the documentation on the conversion API, but I still get a log with the words “No Storage configured or invalid URI /opt/cool/xxx”. 
I think
-F
will add Header
Content-Disposition
automatically.
This is the lastest error log:
wsd-00001-00044 2025-05-07 09:36:38.887563 +0000 [ docbroker_009 ] ERR Unsupported URI [/opt/cool/child-roots/1-5d79495d/tmp/incoming/cool-r6R5imVMHGJFPJd0/test.docx] or no storage configured| wsd/Storage.cpp:223
wsd-00001-00044 2025-05-07 09:36:38.887696 +0000 [ docbroker_009 ] ERR loading document exception: No Storage configured or invalid URI /opt/cool/child-roots/1-5d79495d/tmp/incoming/cool-r6R5imVMHGJFPJd0/test.docx]| wsd/DocumentBroker.cpp:3708
frk-00015-00015 2025-05-07 09:36:38.887708 +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:587
wsd-00001-00044 2025-05-07 09:36:38.887736 +0000 [ docbroker_009 ] ERR Failed to add session to [%3A%2F%2F.%2A%3A0%2Fopt%2Fcool%2Fchild-roots%2F1-5d79495d%2Ftmp%2Fincoming%2Fcool-r6R5imVMHGJFPJd0%2Ftest.docx] with URI [/opt/cool/child-roots/1-5d79495d/tmp/incoming/cool-r6R5imVMHGJFPJd0/test.docx]: No Storage configured or invalid URI /opt/cool/child-roots/1-5d79495d/tmp/incoming/cool-r6R5imVMHGJFPJd0/test.docx]| wsd/DocumentBroker.cpp:3667
wsd-00001-00044 2025-05-07 09:36:38.887773 +0000 [ docbroker_009 ] ERR Exception while invoking poll [docbroker_009] callback: No Storage configured or invalid URI /opt/cool/child-roots/1-5d79495d/tmp/incoming/cool-r6R5imVMHGJFPJd0/test.docx]| net/Socket.cpp:607
I’m guessing if the problem is related to my container environment, such as I’m using podman to run CODE’s containers, or my podman is running on macOS, or my container environment variables are set incorrectly, etc.
This is my pod configuration:
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-5.3.2
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2025-05-07T09:44:26Z"
labels:
app: code-test-pod
name: code-test-pod
spec:
containers:
- env:
- name: extra_params
value: --o:ssl.enable=false --o:ssl.termination=false --o:storage.filesystem[@allow]=true
--o:logging.color=false --o:storage.ssl.enable=false
- name: aliasgroup1
value: https://.*:443,https://.*:15000,http://.*:80,http://.*:31000
- name: username
value: admin
- name: TERM
value: xterm
- name: password
value: admin
- name: dictionaries
value: en_US
image: docker.io/collabora/code:latest
name: code-test
ports:
- containerPort: 9980
hostPort: 9980
securityContext:
privileged: true
procMount: Unmasked
runAsNonRoot: true
stdin: true
tty: true
restartPolicy: Always
I apologize for asking you so many questions in a row, but I am beyond grateful because of your help!
Hi,
I’ve the same problem running collabora/code:latest
(25.04.1.1.1) in Docker to be used together with Nextcloud. Document editing is working fine but creating the preview images leads to exactly this issue.
Also trying to call the convert-to endpoint manually using curl as mentioned above leads to the Empty replay from Server
response and the Unsupported URI [/opt/cool/child-roots/...] or no storage configured
log message.
For the requests from Nextcloud my nginx reverse proxy (configured according the Proxy settings docs) reports in the logs:
upstream prematurely closed connection while reading response header from upstream, client: 2a01:1234:1234::42, server: collabora.hostname.tld, request: "POST /cool/convert-to/png HTTP/1.1", upstream: "http://127.0.0.1:9980/cool/convert-to/png", host: "collabora.hostname.tld"
I figured out that it must be related to the latest version 25.04.1.1.1 in some way.
If I start the docker container with the previous version 24.04.13.3.1 the convert-to endpoint is working as expected, my preview images get generated and also the curl command is working.
Regards
Peter
1 Like
Hi @crycode-de
Thanks for the detailed report — very helpful in understanding the issue.
Since you’ve confirmed that the problem only occurs with version 25.04.1.1.1
and works fine with 24.04.13.3.1
, this sounds like a regression in the latest Collabora Online version. The behavior you’re seeing with the /cool/convert-to
endpoint and the proxy error suggests there may have been a change in how that endpoint handles requests or interacts with the storage backend.
To help the developers investigate this further, I’d recommend filing a bug report on our GitHub issue tracker here:
GitHub · Where software is built
When reporting, it’s helpful to include:
- The full version number that’s affected (
25.04.1.1.1
)
- A summary of the behavior (e.g., “convert-to endpoint fails behind reverse proxy in latest version”)
- Logs (like the
Unsupported URI
and upstream prematurely closed connection
)
- Steps to reproduce (mentioning it works in 24.04.13.3.1, for comparison)
Thanks again for helping improve Collabora Online!
2 Likes