The Basics
- Nextcloud Server version (e.g., 29.x.x):
- Nextcloud Hub 9 (30.0.4)
- Operating system and version (e.g., Ubuntu 24.04):
- NixOS
- Web server and version (e.g, Apache 2.4.25):
- Not using one (as far as I’m aware)
- Reverse proxy and version _(e.g. nginx 1.27.2)
- nginx-1.26.2
- PHP version (e.g, 8.3):
- 8.3.15
- Is this the first time you’ve seen this error? (Yes / No):
- Yes, but the issue is repeatable
- When did this problem seem to first start?
- Haven’t gotten it to not happen yet
- Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
- Via applications packaged on nixos
- Are you using CloudfIare, mod_security, or similar? (Yes / No)
- No
Summary of the issue you are facing:
I have collabora CODE and whiteboard running with nextcloud. In the admin settings, both servers are reachable and there are no errors with the secrets.
I am able to create documents and whiteboards and modify them. Both documents and whiteboards can be reopened, showing the data we expect to see.
When I attempt to revert documents to an earlier version, I have no issues.
When I attempt to revert whiteboards to an earlier version, I get the errors listed in the Web Browser section.
I’ve looked at /var/lib/nextcloud/data/some_user/files
and it appears as though the files aren’t corrupted on the disk.
While this isn’t a feature I necessarily depend on, it appears that some amount of the undo history piggybacks off of this.
Note: Services are hosted on 10.0.0.2, behind dns name.
Steps to replicate it (hint: details matter!):
- Create new whiteboard
- Draw in whiteboard
- Close and reopen whiteboard
- Draw again and reopen (Creating a distinct version)
- Click 3 dots in top right to open sidebar
- Go to versions tab
- Select older version
- Observe error
I’ve omitted my nix configuration here since I need to remove unrelated parts of my configuration in order to post and it seems likely that this is an error in my nginx conf. I will happily upload this if needed.
Thanks for any help!
Log entries
Nextcloud
The logs don’t change when running this.
I also checked the logs for the whiteboard and no errors are listed.
Web Browser
If the problem is related to the Web interface, open your browser inspector Console and Network tabs while refreshing (reloading) and reproducing the problem. Provide any relevant output/errors here that appear.
This issue occurs both in firefox and chrome
Disconnected from room 333 and cleared JWT token
Object { updateScene: ie(q), updateLibrary: updateLibrary(z), addFiles: ie(q), resetScene: ie(q), getSceneElementsIncludingDeleted: getSceneElementsIncludingDeleted(), history: {…}, scrollToContent: scrollToContent(), getSceneElements: getSceneElements(), getAppState: getAppState(), getFiles: getFiles()
, … }
Setting API
Then two failed get requests
XHR GET https://drive.example.com/apps/whiteboard/null/
Followed by:
Error refreshing JWT:
Object { stack: "...removed stack here, can re-add if I made the wrong call removing it...", message: "Request failed with status code 404", name: "AxiosError", code: "ERR_BAD_REQUEST", config: {…}, request: XMLHttpRequest, response: {…}, status: 404 }
The last error repeats 4x, showing a 404 popup each time.
Visiting the url https://drive.example.com/apps/whiteboard/null/token
, I get the json response: {message: “File not found”}. This matches the response shown in the debugger’s console.
Web server / Reverse Proxy
The output of your Apache/nginx/system log in /var/log/____
:
192.168.10.5 - - [22/Jan/2025:17:08:25 -0700] "GET /socket.io/?EIO=4&transport=websocket HTTP/1.1" 101 162 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0"
192.168.10.5 - - [22/Jan/2025:17:08:25 -0700] "GET /apps/files/api/v1/views HTTP/2.0" 200 46 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0"
192.168.10.5 - - [22/Jan/2025:17:08:25 -0700] "GET /apps/whiteboard/null/token HTTP/2.0" 404 28 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0"
192.168.10.5 - - [22/Jan/2025:17:08:25 -0700] "GET /apps/whiteboard/null/token HTTP/2.0" 404 28 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0"
192.168.10.5 - - [22/Jan/2025:17:08:50 -0700] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/2.0" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0"
nginx configuration (Included as this seems like a likely origin of the error):
pid /run/nginx/nginx.pid;
error_log stderr;
daemon off;
events {
}
http {
# Load mime types and configure maximum size of the types hash tables.
include /nix/store/77yxcw58nmqx2c67a7srpfxxp40j5rbl-mailcap-2.1.54/etc/nginx/mime.types;
types_hash_max_size 2688;
include /nix/store/1vnblhajcymgpkyzsjvmpib69svvimq1-nginx-1.26.2/conf/fastcgi.conf;
include /nix/store/1vnblhajcymgpkyzsjvmpib69svvimq1-nginx-1.26.2/conf/uwsgi_params;
default_type application/octet-stream;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
# $connection_upgrade is used for websocket proxying
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
client_max_body_size 10m;
server_tokens off;
server {
listen 0.0.0.0:80 ;
listen [::0]:80 ;
server_name board.example.com ;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 0.0.0.0:443 ssl ;
listen [::0]:443 ssl ;
server_name board.example.com ;
http2 on;
ssl_certificate /run/secrets/reverseproxy/pub;
ssl_certificate_key /run/secrets/reverseproxy/priv;
location / {
proxy_pass http://10.0.0.2:3002;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
}
server {
listen 0.0.0.0:80 ;
listen [::0]:80 ;
server_name drive.example.com ;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 0.0.0.0:443 ssl ;
listen [::0]:443 ssl ;
server_name drive.example.com ;
http2 on;
ssl_certificate /run/secrets/reverseproxy/pub;
ssl_certificate_key /run/secrets/reverseproxy/priv;
location / {
proxy_pass http://10.0.0.2;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+|.+/richdocumentscode/proxy).php(?:$|/) {
}
}
server {
listen 0.0.0.0:80 ;
listen [::0]:80 ;
server_name office.example.com ;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 0.0.0.0:443 ssl ;
listen [::0]:443 ssl ;
server_name office.example.com ;
http2 on;
ssl_certificate /run/secrets/reverseproxy/pub;
ssl_certificate_key /run/secrets/reverseproxy/priv;
location / {
proxy_pass http://10.0.0.2:9980;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
location ^~ /hosting/capabilities {
proxy_pass http://10.0.0.2:9980;
proxy_set_header Host $host;
}
location ^~ /hosting/discovery {
proxy_pass http://10.0.0.2:9980;
proxy_set_header Host $host;
}
location ^~ /loleaflet {
proxy_pass http://10.0.0.2:9980;
proxy_set_header Host $host;
}
location ^~ /lool/adminws {
proxy_pass http://10.0.0.2:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 36000s;
}
location ~ ^/lool {
proxy_pass http://10.0.0.2:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 36000s;
}
}
server {
listen 0.0.0.0:80 ;
listen [::0]:80 ;
server_name coturn.example.com ;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 0.0.0.0:443 ssl ;
listen [::0]:443 ssl ;
server_name coturn.example.com ;
http2 on;
ssl_certificate /run/secrets/reverseproxy/pub;
ssl_certificate_key /run/secrets/reverseproxy/priv;
location / {
proxy_pass http://10.0.0.2:3478;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
}
}
Configuration
Nextcloud
{
"system": {
"apps_paths": [
{
"path": "\/nix\/store\/714d9w8ysxwfcx0q8gnv8f1h2jalv82g-nextcloud-30.0.4-with-apps\/apps",
"url": "\/apps",
"writable": false
},
{
"path": "\/nix\/store\/714d9w8ysxwfcx0q8gnv8f1h2jalv82g-nextcloud-30.0.4-with-apps\/nix-apps",
"url": "\/nix-apps",
"writable": false
},
{
"path": "\/nix\/store\/714d9w8ysxwfcx0q8gnv8f1h2jalv82g-nextcloud-30.0.4-with-apps\/store-apps",
"url": "\/store-apps",
"writable": true
}
],
"appstoreenabled": false,
"memcache.local": "\\OC\\Memcache\\APCu",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbtype": "sqlite",
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"default_phone_region": "",
"log_type": "file",
"loglevel": 2,
"memcache.distributed": "\\OC\\Memcache\\Redis",
"memcache.locking": "\\OC\\Memcache\\Redis",
"overwriteprotocol": "https",
"profile.enabled": false,
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"port": 0
},
"skeletondirectory": "",
"trusted_proxies": "***REMOVED SENSITIVE VALUE***",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"version": "30.0.4.1",
"overwrite.cli.url": "https:\/\/drive.example.com",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"enabledPreviewProviders": [
"OC\\Preview\\Imaginary"
],
"preview_imaginary_url": "***REMOVED SENSITIVE VALUE***",
"maintenance": false,
"trusted_domains": [
"drive.example.com",
"10.0.0.2",
"10.0.0.1"
]
}
}
Apps
Enabled:
- activity: 3.0.0
- app_api: 4.0.3
- bruteforcesettings: 3.0.0
- calendar: 5.0.8
- circles: 30.0.0
- cloud_federation_api: 1.13.0
- comments: 1.20.1
- contacts: 6.1.2
- contactsinteraction: 1.11.0
- cookbook: 0.11.2
- cospend: 3.0.7
- dashboard: 7.10.0
- dav: 1.31.1
- deck: 1.14.2
- federatedfilesharing: 1.20.0
- federation: 1.20.0
- files: 2.2.0
- files_downloadlimit: 3.0.0
- files_pdfviewer: 3.0.0
- files_reminders: 1.3.0
- files_sharing: 1.22.0
- files_trashbin: 1.20.1
- files_versions: 1.23.0
- firstrunwizard: 3.0.0
- impersonate: 1.17.0
- logreader: 3.0.0
- lookup_server_connector: 1.18.0
- nextcloud_announcements: 2.0.0
- notifications: 3.0.0
- oauth2: 1.18.1
- password_policy: 2.0.0
- photos: 3.0.2
- polls: 7.2.6
- privacy: 2.0.0
- provisioning_api: 1.20.0
- recommendations: 3.0.0
- related_resources: 1.5.0
- richdocuments: 8.5.3
- serverinfo: 2.0.0
- settings: 1.13.0
- sharebymail: 1.20.0
- spreed: 20.1.1
- support: 2.0.0
- survey_client: 2.0.0
- systemtags: 1.20.0
- tasks: 0.16.1
- text: 4.1.0
- theming: 2.5.0
- twofactor_backupcodes: 1.19.0
- unsplash: 3.0.3
- updatenotification: 1.20.0
- user_status: 1.10.0
- viewer: 3.0.0
- weather_status: 1.10.0
- webhook_listeners: 1.1.0-dev
- whiteboard: 1.0.4
- workflowengine: 2.12.0
Disabled:
- admin_audit: 1.20.0
- encryption: 2.18.0
- files_external: 1.22.0
- suspicious_login: 8.0.0
- twofactor_nextcloud_notification: 4.0.0
- twofactor_totp: 12.0.0-dev
- user_ldap: 1.21.0