Nextcloud version : 30.0.2
Operating system and version: Debian GNU/Linux 12 (bookworm), Linux raspberrypi 6.6.51+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux
Apache or nginx version: nginx/1.22.1
PHP version: 8.3.12
The issue you are facing:
I am trying to set up a standalone Collabora server for the Nextcloud server running on the same raspberry pi. There is some kind of miscommunication between Nextcloud and Collabora, giving a few different issues. I am not using Docker.
Adding 192.168.1.1 (the local ip of my openwrt router) to the WOPI allow list is the only working ip I have been able to find aside from 0.0.0.0/0. When I open a document with this setting I get a long list of errors in journalctl coolwsd related to fonts, non-upgraded websockets and self-signed ssl certificates.
I really just want the fonts I uploaded via the Nextcloud webinterface to appear in the documents, but Collabora can’t retrieve them.
Is this the first time you’ve seen this error? (Y/N):
Y
Steps to replicate it:
- Set up a Collabora server with ssl.enable = false and ssl.termination = true
- Set WOPI allow list to 192.168.1.1 (or router’s IP)
- Open an odt document.
The output of your Nextcloud log in Admin > Logging:
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"richdocuments","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"Loaded WOPI Token record: {\"id\":208,\"owner_uid\":\"DeviantEgg\",\"editor_uid\":\"DeviantEgg\",\"guest_displayname\":null,\"fileid\":6879,\"version\":0,\"canwrite\":true,\"server_host\":\"https://example.dk/\",\"token\":\"EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh\",\"expiry\":1731103397,\"template_destination\":null,\"template_id\":0,\"hide_download\":false,\"direct\":false,\"remote_server\":\"\",\"remote_server_token\":\"\",\"share\":null,\"token_type\":0}.","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"richdocuments"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"richdocuments","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"Loaded WOPI Token record: {\"id\":208,\"owner_uid\":\"DeviantEgg\",\"editor_uid\":\"DeviantEgg\",\"guest_displayname\":null,\"fileid\":6879,\"version\":0,\"canwrite\":true,\"server_host\":\"https://example.dk/\",\"token\":\"EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh\",\"expiry\":1731103397,\"template_destination\":null,\"template_id\":0,\"hide_download\":false,\"direct\":false,\"remote_server\":\"\",\"remote_server_token\":\"\",\"share\":null,\"token_type\":0}.","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"richdocuments"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"workflowengine","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"workflowengine","level":"0"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"workflowengine","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"No flow configurations is going to run Block access to a file","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"workflowengine","level":"0"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"workflowengine","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"workflowengine","level":"0"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"workflowengine","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"No flow configurations is going to run Block access to a file","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"workflowengine","level":"0"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"workflowengine","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"workflowengine","level":"0"}}
{"reqId":"8JPF2ExwnuAfhcNvh02a","level":0,"time":"2024-11-08T12:03:18+00:00","remoteAddr":"192.168.1.1","user":"--","app":"workflowengine","method":"GET","url":"/index.php/apps/richdocuments/wopi/files/6879_ocs3w8b6mnop/contents?access_token=EWb5gU9LaglmTx9r6fUkoa7RYtm0adwh&access_token_ttl=0","message":"No flow configurations is going to run Block access to a file","userAgent":"COOLWSD HTTP Agent 24.04.9.1","version":"30.0.2.2","data":{"app":"workflowengine","level":"0"}}
The output of your config.php file in /path/to/nextcloud
(make sure you remove any identifiable information!):
<?php
$CONFIG = array (
'instanceid' => ''
'passwordsalt' => ''
'secret' => ''
'trusted_domains' =>
array (
2 => 'example.com'
1 => 'public ip here',
),
'datadirectory' => '/mnt/external-drive/projects/nextcloud/data',
'dbtype' => 'pgsql',
'version' => '30.0.2.2',
'overwrite.cli.url' => 'https://collabora.example.com',
'dbname' => ''
'dbhost' => 'localhost:5432',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => '',
'dbpassword' => ''
'default_phone_region' => 'DK',
'installed' => true,
'maintenance' => false,
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
'password' => '',
'timeout' => 1.5,
),
'maintenance_window_start' => '03:00',
'maintenance_window_end' => '05:00',
'mail_smtpmode' => 'smtp',
'mail_smtpsecure' => 'ssl',
'mail_sendmailmode' => 'smtp',
'theme' => '',
'loglevel' => 0,
);
The output of your Apache/nginx/system log in /var/log/____
:
in collabora.error:
2024/11/08 12:45:11 [error] 273107#273107: *1277 open() "/usr/share/nginx/html/nextcloud/status.php" failed (2: No such file or directory), client: 131.164.0.0, server: collabora.example.dk, request: "GET /nextcloud/status.php HTTP/1.1", host: "[old address I migrated from, somehow]"
2024/11/08 12:45:36 [error] 273107#273107: *1310 open() "/usr/share/nginx/html/mnt/external-drive/projects/nextcloud/data/.ncdata" failed (2: No such file or directory), client: 192.168.1.1, server: collabora.example.dk, request: "GET /mnt/external-drive/projects/nextcloud/data/.ncdata HTTP/1.1", host: "[public ip]"
2024/11/08 12:55:46 [error] 1245#1245: *8 open() "/usr/share/nginx/html/.env" failed (2: No such file or directory), client: 152.42.0.0, server: collabora.example.dk, request: "GET /.env HTTP/1.1", host: "[public ip here]"
Output errors in nextcloud.log in /var/www/ or as admin user in top right menu, filtering for errors. Use a pastebin service if necessary.
No actual errors.
My nginx configuration for collabora:
server {
server_name collabora.example.dk;
error_log /var/log/nginx/collabora.error;
# static files
location ^~ /browser {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
error_log /var/log/nginx/collabora.error;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/intra.example.dk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/intra.example.dk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = collabora.example.dk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name collabora.example.dk;
return 404; # managed by Certbot
}
My nextcloud Nginx config is the standard one from the documentation, and it has been working fine.
Journalctl of coolwsd when I open a document and click the fonts dropdown. I have put the url recommended by the webinterface in coolwsd.xml:
nov 08 13:24:59 raspberrypi coolwsd[833]: wsd-00833-01581 2024-11-08 13:24:59.027970 +0100 [ websrv_poll ] WRN #17: CheckRemoval: Timeout: {IDLE true, MinThroughput false, Termination false}, Stats[dur[total 67538ms, last 67445 ms], kBps[in 0.03, out 0.02]], StreamSocket[#17, HTTP, IPv4 @ :0]| net/Socket.cpp:1521
nov 08 13:24:59 raspberrypi coolwsd[833]: wsd-00833-01285 2024-11-08 13:24:59.344014 +0100 [ prisoner_poll ] WRN #33: Attempted ping on non-upgraded websocket! #33| net/WebSocketHandler.hpp:633
nov 08 13:25:21 raspberrypi coolwsd[833]: wsd-00833-01579 2024-11-08 13:25:21.447959 +0100 [ remotefontconfig_poll ] WRN #24: CheckTimeout: Timeout while requesting [GET 192.168.1.1/apps/richdocuments/settings/fonts.json%0A%09%09] after 30030ms| net/HttpRequest.hpp:1713
nov 08 13:25:21 raspberrypi coolwsd[833]: wsd-00833-01579 2024-11-08 13:25:21.448013 +0100 [ remotefontconfig_poll ] ERR Remote config server has response status code: 0 (Unknown)| wsd/COOLWSD.cpp:1178
It’s my first time ever posting on one of these forums, so please let me know if I’m unclear or if something is missing