Fix ONLYOFFICE Docs internal address rejected by Nextcloud by rage-proof · Pull Request #6060 · getumbrel/umbrel-apps · GitHub
Skip to content

Fix ONLYOFFICE Docs internal address rejected by Nextcloud - #6060

Open
rage-proof wants to merge 2 commits into
getumbrel:masterfrom
rage-proof:fix/onlyoffice-documentserver-hostname
Open

Fix ONLYOFFICE Docs internal address rejected by Nextcloud#6060
rage-proof wants to merge 2 commits into
getumbrel:masterfrom
rage-proof:fix/onlyoffice-documentserver-hostname

Conversation

@rage-proof

@rage-proof rage-proof commented Sep 4, 2026

Copy link
Copy Markdown

Type

App update — package fix. No image change; manifest version bumped 9.4.09.4.0-1.

App

App ID: onlyoffice-nextcloud
Upstream project: https://github.com/ONLYOFFICE/DocumentServer
Version: 9.4.0-1 (image unchanged at 9.4.0)

Summary

The app points Nextcloud at Document Server by its injected container name,
onlyoffice-nextcloud_documentserver_1. Document Server percent-escapes
underscores in the host of every signed URL it returns
(storage-base.js:179),
and Nextcloud's HTTP client rejects a percent escape in a host (guzzle 7.15.2,
GHSA-v5mv-p594-2x33):

Error when trying to connect (The request URI host
"onlyoffice-nextcloud%5fdocumentserver%5f1" must not contain a percent escape,
because a handler can decode it and then connect to a host that differs from
the one the request names.) (version 9.4.0.129)

On a stock install that means no office previews, failed conversions, .doc/
.xls/.ppt failing to save, and that error on the ONLYOFFICE admin page.

Fix: give the service a hostname with no underscore in it.

-      - DOCS_INTERNAL_ADDRESS=http://onlyoffice-nextcloud_documentserver_1
+      - DOCS_INTERNAL_ADDRESS=http://onlyoffice-nextcloud-documentserver-1

   documentserver:
     image: onlyoffice/documentserver:9.4.0@sha256:…
+    container_name: onlyoffice-nextcloud-documentserver-1

Same resolution mechanism as before, same name shape as the injected one, just
- instead of _. Reported upstream too, but that fix needs a Document Server
release; this works today.

Manifest version is bumped to 9.4.0-1 with matching release notes, so
existing installs are offered the update — without it the fix would reach new
installs only.

Verification

Umbrel testing performed: not yet. Static checks only —
npm run lint:apps -- onlyoffice-nextcloud --check-images and
git diff --check. Per .claude/skills/umbrel-test-app that is not Umbrel
verification, so the update path still needs a runtime test on a device.

Environment tested:

  • Umbrel device
  • Local umbrelOS test environment
  • Not runtime tested

Architecture tested:

  • amd64
  • arm64

Known lint warnings or caveats:

WARNING service.container_name onlyoffice-nextcloud/docker-compose.yml:19
  Service `documentserver` sets `container_name`; Umbrel injects container names automatically.

0 error(s). Same advisory searxng, adventurelog, seafile and
rustdesk-server already carry — searxng for this exact reason.

Notes

Existing installs keep the address stored in Nextcloud's app config and need to
paste the new one once (Admin → ONLYOFFICE → Advanced server settings), or:

occ config:app:set onlyoffice DocumentServerInternalUrl --value="http://onlyoffice-nextcloud-documentserver-1/"

They are broken today regardless. No new permissions or dependencies.

rage-proof and others added 2 commits September 4, 2026 20:16
…ores

Document Server percent-escapes every '_' in the base URL of the signed URLs
it returns, so addressing it by its injected container name made Nextcloud
receive URLs with a '%5f' host, which its HTTP client refuses to send.
Set container_name and point DOCS_INTERNAL_ADDRESS at it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Umbrel only offers an update when the manifest version changes, so the
compose fix would otherwise reach new installs only. Release notes cover
the one manual step: re-pasting the internal address in Nextcloud.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant