The Basics
- Nextcloud Server version (e.g., 29.x.x):
Nextcloud Hub 25 Autumn (32.0.4)
- Operating system and version (e.g., Ubuntu 24.04):
OpenMediaVault 8.0.7-1 (Synchrony) on Linux 6.12.63+deb13-amd64
- Web server and version (e.g, Apache 2.4.25):
Apache/2.4.66
- Reverse proxy and version _(e.g. nginx 1.27.2)
npmplus develop branch 6453f5b
- PHP version (e.g, 8.3):
replace me
- Is this the first time you’ve seen this error? (Yes / No):
yes
- When did this problem seem to first start?
first launch
- Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
AIO
- Are you using CloudfIare, mod_security, or similar? (Yes / No)
no
Summary of the issue you are facing:
I can’t use Collabora to edit files when outside of local network, I get a websocket error. No issues when accessing from local network, it works like it should.
I’m running NPMPlus via Docker as a reverse proxy and the error is most probably coming from here. I think NPMPlus can’t access http://nextcloud-aio-apache:23973 because they’re not on the same Docker network.
I tried to follow these “On the same server in a Docker container” reverse proxy setup directions, but they can’t solve my problem:
- I can’t use host network mode on AIO because I have several other services running and so ports will conflict. AFAIK there aren’t environment variables available to manually set each port used by Nextcloud AIO, even though that could solve it.
- NPMPlus has to run in host network mode otherwise it won’t work. So I can’t let it bridge to my nextcloud-aio Docker network, nor can I use
APACHE_ADDITIONAL_NETWORKenv variable.
I tried to set a custom DNS redirection on Adguard to redirect my.domain to my.server.ipbut that didn’t work. I also tried to add 0.0.0.0/0in the allow list for WOPI requests but that didn’t change anything.
Is there something I’m missing? Have I no choice but avoid using the built-in Collabora?
Steps to replicate it (hint: details matter!):
-
Set up AIO using Docker compose and add the built-in Collabora container
-
Run NPMPlus reverse proxy as a Docker container
-
In NPMPlus, redirect your domain name to
http://your.server.ip:$APACHE_PORT -
Try editing a file on Nextcloud web interface outside of local network
Log entries
Nextcloud
richdocuments : ClientException Client error: `GET https://my.domain/custom_apps/richdocumentscode/proxy.php?req=/hosting/discovery` resulted in a `400 Bad Request` response: <html><body> <h1>Socket proxy error</h1> <p>Error: no_glibc</p> </body></html>
Web server / Reverse Proxy
The only error log I found when searching for richdocumentsis this :
2026/01/28 12:19:19 [error] 2057#2057: *2801 connect() failed (111: Connection refused) while connecting to upstream, client: client.ip.address, server: my.domain, request: "GET /apps/richdocuments/settings/fonts.json HTTP/1.1", upstream: "http://my.server.ip:11000/apps/richdocuments/settings/fonts.json", host: "my.domain"
Configuration
Nextcloud AIO Docker compose
name: nextcloud-aio
services:
nextcloud-aio-mastercontainer:
image: ghcr.io/nextcloud-releases/all-in-one:latest
init: true
restart: always
container_name: nextcloud-aio-mastercontainer
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
- /var/run/docker.sock:/var/run/docker.sock:ro
network_mode: bridge
ports:
- 8085:8080
environment:
APACHE_PORT: 11000
APACHE_IP_BINDING: 0.0.0.0
APACHE_ADDITIONAL_NETWORK: host
NEXTCLOUD_DATADIR: /my/data/dir
SKIP_DOMAIN_VALIDATION: false
volumes:
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer
Nextcloud
nextcloud-aio-nextcloud:/var/www/html# ./occ config:list system
{
"system": {
"one-click-instance": true,
"one-click-instance.user-limit": 100,
"memcache.local": "\\OC\\Memcache\\APCu",
"apps_paths": [
{
"path": "\/var\/www\/html\/apps",
"url": "\/apps",
"writable": false
},
{
"path": "\/var\/www\/html\/custom_apps",
"url": "\/custom_apps",
"writable": true
}
],
"check_data_directory_permissions": false,
"memcache.distributed": "\\OC\\Memcache\\Redis",
"memcache.locking": "\\OC\\Memcache\\Redis",
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"password": "***REMOVED SENSITIVE VALUE***",
"port": 6379
},
"overwritehost": "my.domain",
"overwriteprotocol": "https",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"localhost",
"my.domain"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "pgsql",
"version": "32.0.4.1",
"overwrite.cli.url": "https:\/\/my.domain\/",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbtableprefix": "oc_",
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"maintenance": false,
"updatechecker": false,
"loglevel": 2,
"log_type": "file",
"logfile": "\/var\/www\/html\/data\/nextcloud.log",
"log_rotate_size": 10485760,
"log.condition": {
"apps": [
"admin_audit"
]
},
"preview_max_x": 2048,
"preview_max_y": 2048,
"jpeg_quality": 60,
"enabledPreviewProviders": {
"1": "OC\\Preview\\Image",
"2": "OC\\Preview\\MarkDown",
"3": "OC\\Preview\\MP3",
"4": "OC\\Preview\\TXT",
"5": "OC\\Preview\\OpenDocument",
"6": "OC\\Preview\\Movie",
"7": "OC\\Preview\\Krita"
},
"enable_previews": true,
"upgrade.disable-web": true,
"mail_smtpmode": "smtp",
"trashbin_retention_obligation": "auto, 30",
"versions_retention_obligation": "auto, 30",
"activity_expire_days": 30,
"simpleSignUpLink.shown": false,
"share_folder": "\/Shared",
"one-click-instance.link": "https:\/\/nextcloud.com\/all-in-one\/",
"upgrade.cli-upgrade-link": "https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/2726",
"updatedirectory": "\/nc-updater",
"maintenance_window_start": 100,
"allow_local_remote_servers": true,
"davstorage.request_timeout": 3600,
"documentation_url.server_logs": "https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/5425",
"htaccess.RewriteBase": "\/",
"dbpersistent": false,
"auth.bruteforce.protection.enabled": true,
"ratelimit.protection.enabled": true,
"files_external_allow_create_new_local": false,
"trusted_proxies": "***REMOVED SENSITIVE VALUE***",
"onlyoffice": {
"editors_check_interval": 0,
"jwt_secret": "***REMOVED SENSITIVE VALUE***",
"jwt_header": "AuthorizationJwt"
},
"config_preset": 1,
"twofactor_enforced": "true",
"twofactor_enforced_groups": [],
"twofactor_enforced_excluded_groups": [],
"defaultapp": "",
"app_install_overwrite": [],
"DOMAIN": "my.domain"
}
}
Apps
Enabled:
- bruteforcesettings: 5.0.0-dev.0
- cloud_federation_api: 1.16.0
- cookbook: 0.11.5
- dav: 1.34.2
- federatedfilesharing: 1.22.0
- files: 2.4.0
- files_pdfviewer: 5.0.0-dev.0
- files_sharing: 1.24.1
- files_trashbin: 1.22.0
- files_versions: 1.25.0
- fileslibreofficeedit: 2.0.1
- htmlviewer: 32.0.0
- logreader: 5.0.0-dev.0
- lookup_server_connector: 1.20.0
- nextcloud-aio: 0.8.0
- notifications: 5.0.0-dev.0
- notify_push: 1.3.0
- oauth2: 1.20.0
- profile: 1.1.0
- provisioning_api: 1.22.0
- recommendations: 5.0.0-dev.0
- related_resources: 3.0.0-dev.0
- richdocuments: 9.0.2
- settings: 1.15.1
- support: 4.0.0-dev.0
- suspicious_login: 10.0.0-dev.0
- theming: 2.7.0
- twofactor_backupcodes: 1.21.0
- twofactor_nextcloud_notification: 6.0.0-dev.0
- twofactor_totp: 14.0.0
- updatenotification: 1.22.0
- viewer: 5.0.0-dev.0
- weather_status: 1.12.0
- workflowengine: 2.14.0
Disabled:
- activity: 5.0.0-dev.0 (installed 5.0.0-dev.0)
- admin_audit: 1.22.0 (installed 1.22.0)
- app_api: 32.0.0 (installed 32.0.0)
- calendar: 6.1.5 (installed 6.1.5)
- circles: 32.0.0 (installed 32.0.0)
- comments: 1.22.0 (installed 1.22.0)
- contacts: 8.3.0 (installed 8.3.0)
- contactsinteraction: 1.13.1 (installed 1.13.1)
- dashboard: 7.12.0 (installed 7.12.0)
- deck: 1.16.3 (installed 1.16.3)
- encryption: 2.20.0
- federation: 1.22.0 (installed 1.22.0)
- files_downloadlimit: 5.0.0-dev.0 (installed 5.0.0-dev.0)
- files_external: 1.24.0
- files_reminders: 1.5.0 (installed 1.5.0)
- firstrunwizard: 5.0.0-dev.0 (installed 5.0.0-dev.0)
- nextcloud_announcements: 4.0.0-dev.0 (installed 4.0.0-dev.0)
- notes: 4.12.4 (installed 4.12.4)
- password_policy: 4.0.0-dev.0 (installed 4.0.0-dev.0)
- photos: 5.0.0-dev.1 (installed 5.0.0-dev.1)
- privacy: 4.0.0-dev.0 (installed 4.0.0-dev.0)
- serverinfo: 4.0.0-dev.0 (installed 4.0.0-dev.0)
- sharebymail: 1.22.0 (installed 1.22.0)
- survey_client: 4.0.0-dev.0 (installed 4.0.0-dev.0)
- systemtags: 1.22.0 (installed 1.22.0)
- tasks: 0.17.1 (installed 0.17.1)
- text: 6.0.1 (installed 6.0.1)
- user_ldap: 1.23.0
- user_status: 1.12.0 (installed 1.12.0)
- webhook_listeners: 1.3.0 (installed 1.3.0)
Nextcloud Office
NPMPlus Docker compose
npmplus:
container_name: npmplus
image: docker.io/zoeyvid/npmplus:develop
restart: unless-stopped
network_mode: host
volumes:
- "./appdata/npm/data:/data"
environment:
- "TZ=Europe/Paris"
- "ACME_EMAIL=my@email"
- "X_FRAME_OPTIONS=none"
Nginx conf file (generated and maintained by NPMPlus)
# ----------------------------------------------------------------------
# my.domain
# DO NOT EDIT THIS FILE DIRECTLY, CHANGES WILL BE LOST WHEN UPDATING!
# ----------------------------------------------------------------------
server {
server_name my.domain;
listen unix:/run/nginx.sock;
listen 0.0.0.0:80;
listen [::]:80;
listen 0.0.0.0:443 ssl;
listen [::]:443 ssl;
listen 0.0.0.0:443 quic;
listen [::]:443 quic;
more_set_headers 'Alt-Svc: h3=":$alt_svc_port"; ma=86400';
# Certbot TLS
ssl_certificate /data/tls/certbot/live/npm-44/fullchain.pem;
ssl_certificate_key /data/tls/certbot/live/npm-44/privkey.pem;
if ($scheme = "http") {
return 301 https://$host$is_request_port$request_port$request_uri;
}
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$is_request_port$request_port$request_uri;
}
more_set_headers "Strict-Transport-Security: $hsts_includeSubDomains_header";
location /.well-known/acme-challenge/ {
root /data/tls/certbot/acme-challenge;
fancyindex off;
index off;
allow all;
auth_basic off;
auth_request off;
}
# custom locations
location / {
include proxy-headers.conf;
proxy_pass http://my.server.ip:11000$request_uri;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
# Custom
include /data/custom_nginx/server_proxy.conf;
}
NPMPlus



