The Basics
- Nextcloud Server version (e.g., 29.x.x):
30.0.5
- Operating system and version (e.g., Ubuntu 24.04):
Debian 12 bookworm
- Web server and version (e.g, Apache 2.4.25):
Apache/2.4.62 (Debian)
- Reverse proxy and version _(e.g. nginx 1.27.2)
Apache
- PHP version (e.g, 8.3):
8.2.27 inside the docker container (community docker image), 8.2.26 on the server
- Is this the first time you’ve seen this error? (Yes / No):
Yes
- When did this problem seem to first start?
this morning, after a series of upgrade to bring the instance up to date the server is running super slow. Way slower than before.
- Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
Docker
- Are you using CloudfIare, mod_security, or similar? (Yes / No)
not that I know of
Summary of the issue I’m facing:
I upgraded from v27 to v30 with Docker, upgrading one version after the other. Now the server is super slow. Unusably slow.
My files are being sent super super super slower than before and the performance has plummeted. We are talking hours to send 60mo of data.
I’ve tried to setup Redis to see if it would solve it (I did not use it before that). As it seemed more recommended for the kind of setup I have, I ran it throug unixsocket. As I have website hosted on the same server it made sense (I think?). So I’m not running a docker container for that but just connecting Nextcloud container to it (config included further down).
I don’t have a warning in the Overview panel anymore but it does not seem to have solved it.
Files take several seconds to be send, CPU is spiking to 150% usage by one mariadb process (command
/bin/bash /usr/local/bin/docker-entrypoint.sh mariadb
) everytime I load the interface or try to sync with my local machine.
I have 3 types of debug repeated in the logs (included in the following) but I’m not sure I understand what they are saying. Help more than welcome.
More info on my setup:
- OS: Debian 12 bookworm
Kernel: x86_64 Linux 6.1.0-29-amd64
CPU: Intel Atom C2338 @ 2x 2.1GHz
CRAM: 2501MiB / 3911MiB - Debian / Apache server running virtual hosts and acting as reverse proxy (SSL with Let’s Encrypt). I have websites hosted on the same server, not using docker, and run Nextcloud alongside those.
- Nextcloud:30 running on docker container alongside its mariadb container
- Container is setup to use the reverse proxy running on the host machine.
- Tried to run Redis for the file locking, as recommended by Nextcloud
I know I have changed one thing in the reverse proxy after upgrade because it was mentionned by Nextcloud that the following was no longer accepted (full config shared further down):
'trusted_proxies' =>
array (
0 => '127.0.0.1',
1 => 'cloud.example.com',
),
Log entries
Nextcloud
Please provide the log entries from your Nextcloud log that are generated during the time of problem (via the Copy raw option from Administration settings->Logging screen or from your nextcloud.log
located in your data directory). Feel free to use a pastebin/gist service if necessary.
{"reqId":"hYNKzDKu8UpI1XPfN417","level":0,"time":"2025-01-29T23:10:37+00:00","remoteAddr":"172.22.0.1","user":"julien","app":"no app in context","method":"PUT","url":"/remote.php/dav/files/julien/{redacted}Email.php","message":"dirty table reads: SELECT `path` FROM `*PREFIX*filecache` WHERE (`storage` = :dcValue1) AND (`fileid` = :dcValue2)","userAgent":"Mozilla/5.0 (Linux) mirall/3.15.0daily (Nextcloud, manjaro-6.1.119-1-MANJARO ClientArchitecture: x86_64 OsArchitecture: x86_64)","version":"30.0.5.1","exception":{"Exception":"Exception","Message":"dirty table reads: SELECT `path` FROM `*PREFIX*filecache` WHERE (`storage` = :dcValue1) AND (`fileid` = :dcValue2)","Code":0,"Trace":[{"file":"/var/www/html/lib/private/DB/ConnectionAdapter.php","line":50,"function":"executeQuery","class":"OC\\DB\\Connection","type":"->","args":["SELECT `path` FROM `*PREFIX*filecache` WHERE (`storage` = :dcValue1) AND (`fileid` = :dcValue2)",{"dcValue1":2,"dcValue2":"*** sensitive parameters replaced ***"},{"dcValue1":1,"dcValue2":1}]},{"file":"/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php","line":289,"function":"executeQuery","class":"OC\\DB\\ConnectionAdapter","type":"->","args":["SELECT `path` FROM `*PREFIX*filecache` WHERE (`storage` = :dcValue1) AND (`fileid` = :dcValue2)",{"dcValue1":2,"dcValue2":"*** sensitive parameters replaced ***"},{"dcValue1":1,"dcValue2":1}]},{"file":"/var/www/html/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php","line":285,"function":"executeQuery","class":"OC\\DB\\QueryBuilder\\QueryBuilder","type":"->","args":[{"__class__":"OC\\DB\\ConnectionAdapter"}]},{"file":"/var/www/html/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php","line":53,"function":"executeQuery","class":"OC\\DB\\QueryBuilder\\ExtendedQueryBuilder","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":1098,"function":"execute","class":"OC\\DB\\QueryBuilder\\ExtendedQueryBuilder","type":"->","args":[]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":393,"function":"getPathById","class":"OC\\Files\\Cache\\Cache","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Files/Cache/Scanner.php","line":281,"function":"update","class":"OC\\Files\\Cache\\Cache","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Files/Cache/Scanner.php","line":217,"function":"addToCache","class":"OC\\Files\\Cache\\Scanner","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Files/Cache/Scanner.php","line":329,"function":"scanFile","class":"OC\\Files\\Cache\\Scanner","type":"->","args":["*** sensitive parameters replaced ***",3,1284571,{"__class__":"OC\\Files\\Cache\\CacheEntry"},false]},{"file":"/var/www/html/lib/private/Files/Cache/Updater.php","line":110,"function":"scan","class":"OC\\Files\\Cache\\Scanner","type":"->","args":["*** sensitive parameters replaced ***",false,3,false]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/File.php","line":330,"function":"update","class":"OC\\Files\\Cache\\Updater","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":1137,"function":"put","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":492,"function":"updateFile","class":"Sabre\\DAV\\Server","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpPut","class":"Sabre\\DAV\\CorePlugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["method:PUT",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":43,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":371,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":19,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":146,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/DB/Connection.php","Line":402,"message":"dirty table reads: SELECT `path` FROM `*PREFIX*filecache` WHERE (`storage` = :dcValue1) AND (`fileid` = :dcValue2)","tables":["filecache"],"reads":["filecache"],"exception":[],"CustomMessage":"dirty table reads: SELECT `path` FROM `*PREFIX*filecache` WHERE (`storage` = :dcValue1) AND (`fileid` = :dcValue2)"},"id":"679ab578c47c3"}
{"reqId":"9rtujxoA3DC7p2SuQE7x","level":0,"time":"2025-01-29T23:12:07+00:00","remoteAddr":"172.22.0.1","user":"--","app":"webdav","method":"PROPFIND","url":"/remote.php/dav/principals/users/julien/","message":"No public access to this resource., No 'Authorization: Bearer' header found. Either the client didn't send one, or the server is mis-configured, No 'Authorization: Basic' header found. Either the client didn't send one, or the server is misconfigured","userAgent":"Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0","version":"30.0.5.1","exception":{"Exception":"Sabre\\DAV\\Exception\\NotAuthenticated","Message":"No public access to this resource., No 'Authorization: Bearer' header found. Either the client didn't send one, or the server is mis-configured, No 'Authorization: Basic' header found. Either the client didn't send one, or the server is misconfigured","Code":0,"Trace":[{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMethod","class":"Sabre\\DAV\\Auth\\Plugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":456,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["beforeMethod:PROPFIND",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":43,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":371,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":19,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":146,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php","Line":152,"message":"No public access to this resource., No 'Authorization: Bearer' header found. Either the client didn't send one, or the server is mis-configured, No 'Authorization: Basic' header found. Either the client didn't send one, or the server is misconfigured","exception":[],"CustomMessage":"No public access to this resource., No 'Authorization: Bearer' header found. Either the client didn't send one, or the server is mis-configured, No 'Authorization: Basic' header found. Either the client didn't send one, or the server is misconfigured"},"id":"679ab5ca4e7a1"}
{"reqId":"WEh1hfRiiw7q8J6uHzAj","level":0,"time":"2025-01-29T23:12:07+00:00","remoteAddr":"172.22.0.1","user":"--","app":"no app in context","method":"PROPFIND","url":"/remote.php/dav/principals/users/julien/","message":"The loading of lazy AppConfig values have been requested","userAgent":"Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0","version":"30.0.5.1","exception":{"Exception":"RuntimeException","Message":"ignorable exception","Code":0,"Trace":[{"file":"/var/www/html/lib/private/AppConfig.php","line":1180,"function":"loadConfig","class":"OC\\AppConfig","type":"->","args":[null]},{"file":"/var/www/html/lib/private/AppConfig.php","line":100,"function":"loadConfigAll","class":"OC\\AppConfig","type":"->","args":[]},{"file":"/var/www/html/lib/private/AllConfig.php","line":169,"function":"getKeys","class":"OC\\AppConfig","type":"->","args":["bruteForce"]},{"file":"/var/www/html/lib/private/Security/Bruteforce/Throttler.php","line":95,"function":"getAppKeys","class":"OC\\AllConfig","type":"->","args":["bruteForce"]},{"file":"/var/www/html/lib/private/Security/Bruteforce/Throttler.php","line":175,"function":"isBypassListed","class":"OC\\Security\\Bruteforce\\Throttler","type":"->","args":["172.22.0.1"]},{"file":"/var/www/html/lib/private/Security/Bruteforce/Throttler.php","line":192,"function":"getAttempts","class":"OC\\Security\\Bruteforce\\Throttler","type":"->","args":["172.22.0.1","login"]},{"file":"/var/www/html/lib/private/Security/Bruteforce/Throttler.php","line":265,"function":"getDelay","class":"OC\\Security\\Bruteforce\\Throttler","type":"->","args":["172.22.0.1","login"]},{"file":"/var/www/html/lib/private/User/Session.php","line":383,"function":"sleepDelayOrThrowOnMax","class":"OC\\Security\\Bruteforce\\Throttler","type":"->","args":["172.22.0.1","login"]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Auth.php","line":87,"function":"logClientIn","class":"OC\\User\\Session","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php","line":103,"function":"validateUserPass","class":"OCA\\DAV\\Connector\\Sabre\\Auth","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Auth.php","line":198,"function":"check","class":"Sabre\\DAV\\Auth\\Backend\\AbstractBasic","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Auth.php","line":112,"function":"auth","class":"OCA\\DAV\\Connector\\Sabre\\Auth","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php","line":179,"function":"check","class":"OCA\\DAV\\Connector\\Sabre\\Auth","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php","line":135,"function":"check","class":"Sabre\\DAV\\Auth\\Plugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMethod","class":"Sabre\\DAV\\Auth\\Plugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":456,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["beforeMethod:PROPFIND",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":43,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":371,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":19,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":146,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/AppConfig.php","Line":1194,"message":"The loading of lazy AppConfig values have been requested","exception":[],"CustomMessage":"The loading of lazy AppConfig values have been requested"},"id":"679ab5ca4e703"}
Web server / Reverse Proxy
Apache access logs (no errors):
xx.xx.xx.xx - - [30/Jan/2025:00:24:27 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:30 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 381 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:32 +0100] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/2.0" 304 95 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:33 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:33 +0100] "GET /apps/logreader/api/poll?lastReqId=GMgyKkZiOCK96LZIKn7v HTTP/2.0" 200 79 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:34 +0100] "GET /ocs/v2.php/apps/serverinfo/api/v1//basicdata?format=json HTTP/2.0" 200 243 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:36 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:38 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 350 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:16 +0100] "PROPFIND /remote.php/dav/principals/users/julien/ HTTP/2.0" 207 1412 "-" "Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:16 +0100] "PROPFIND /remote.php/dav/principals/users/julien/ HTTP/2.0" 207 1407 "-" "Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:38 +0100] "PROPFIND /remote.php/dav/calendars/julien/ HTTP/2.0" 401 1649 "-" "Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:38 +0100] "PROPFIND /remote.php/dav/addressbooks/users/julien/ HTTP/2.0" 401 1645 "-" "Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:40 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 350 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:43 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 344 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:44 +0100] "GET /ocs/v2.php/apps/serverinfo/api/v1//basicdata?format=json HTTP/2.0" 200 422 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:44 +0100] "GET /apps/logreader/api/poll?lastReqId=GMgyKkZiOCK96LZIKn7v HTTP/2.0" 200 1478 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:45 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 343 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:47 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:51 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:53 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 465 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:55 +0100] "GET /ocs/v2.php/apps/serverinfo/api/v1//basicdata?format=json HTTP/2.0" 200 246 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:55 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 324 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:56 +0100] "GET /apps/logreader/api/poll?lastReqId=5zW6mqG8NYyDPb52V9Gb HTTP/2.0" 200 103 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:58 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 349 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:39 +0100] "PROPFIND /remote.php/dav/addressbooks/users/julien/ HTTP/2.0" 207 1453 "-" "Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0"
xx.xx.xx.xx - - [30/Jan/2025:00:24:39 +0100] "PROPFIND /remote.php/dav/calendars/julien/ HTTP/2.0" 207 2065 "-" "Mozilla/5.0 (X11; Linux x86_64) KIO/6.8 kioworker/6.8.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:00 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 349 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:03 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:03 +0100] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/2.0" 304 95 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:05 +0100] "GET /ocs/v2.php/apps/serverinfo/api/v1//basicdata?format=json HTTP/2.0" 200 242 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:06 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 349 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:07 +0100] "GET /apps/logreader/api/poll?lastReqId=5zW6mqG8NYyDPb52V9Gb HTTP/2.0" 200 1235 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:09 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 348 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:12 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 373 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:21:44 +0100] "PUT /remote.php/dav/files/julien/{redacted}/LanguageRouter.php HTTP/1.1" 204 732 "-" "Mozilla/5.0 (Linux) mirall/3.15.0daily (Nextcloud, manjaro-6.1.119-1-MANJARO ClientArchitecture: x86_64 OsArchitecture: x86_64)"
xx.xx.xx.xx - - [30/Jan/2025:00:25:15 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 341 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:16 +0100] "GET /ocs/v2.php/apps/serverinfo/api/v1//basicdata?format=json HTTP/2.0" 200 242 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:17 +0100] "GET /apps/logreader/api/poll?lastReqId=OmfedQwlfFCwkLh6LOMy HTTP/2.0" 200 333 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:18 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 347 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:21 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 349 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:21:47 +0100] "PUT /remote.php/dav/files/julien/{redacted}/LanguageRoutes.php HTTP/1.1" 204 732 "-" "Mozilla/5.0 (Linux) mirall/3.15.0daily (Nextcloud, manjaro-6.1.119-1-MANJARO ClientArchitecture: x86_64 OsArchitecture: x86_64)"
xx.xx.xx.xx - - [30/Jan/2025:00:25:12 +0100] "PROPFIND /remote.php/dav/files/julien/ HTTP/1.1" 207 1112 "-" "Mozilla/5.0 (Linux) mirall/3.15.0daily (Nextcloud, manjaro-6.1.119-1-MANJARO ClientArchitecture: x86_64 OsArchitecture: x86_64)"
xx.xx.xx.xx - - [30/Jan/2025:00:25:22 +0100] "GET /ocs/v2.php/apps/notifications/api/v2/notifications?format=json HTTP/1.1" 200 1019 "-" "Mozilla/5.0 (Linux) mirall/3.15.0daily (Nextcloud, manjaro-6.1.119-1-MANJARO ClientArchitecture: x86_64 OsArchitecture: x86_64)"
xx.xx.xx.xx - - [30/Jan/2025:00:25:24 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 349 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:21:55 +0100] "PUT /remote.php/dav/files/julien/{redacted}/LanguageRules.php HTTP/1.1" 204 732 "-" "Mozilla/5.0 (Linux) mirall/3.15.0daily (Nextcloud, manjaro-6.1.119-1-MANJARO ClientArchitecture: x86_64 OsArchitecture: x86_64)"
xx.xx.xx.xx - - [30/Jan/2025:00:25:27 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 347 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:27 +0100] "GET /ocs/v2.php/apps/serverinfo/api/v1//basicdata?format=json HTTP/2.0" 200 220 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:29 +0100] "GET /apps/logreader/api/poll?lastReqId=7xfU3SmR2iKFF4ezBXUm HTTP/2.0" 200 1528 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
xx.xx.xx.xx - - [30/Jan/2025:00:25:29 +0100] "GET /apps/serverinfo/update HTTP/2.0" 200 324 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"
Configuration
Nextcloud
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'upgrade.disable-web' => false,
'instanceid' => 'xxxxx',
'passwordsalt' => 'xxxxx',
'secret' => 'xxxxx',
'trusted_domains' =>
array (
0 => 'cloud.example.com',
),
'datadirectory' => '/var/www/html/data',
'overwrite.cli.url' => 'https://cloud.example.com',
'overwriteprotocol' => 'https',
'forwarded_for_headers' =>
array (
0 => 'X-Forwarded-For',
1 => 'HTTP_X_FORWARDED_FOR',
),
'trusted_proxies' =>
array (
0 => '127.0.0.1'
),
'dbtype' => 'mysql',
'version' => '30.0.5.1',
'dbname' => 'cloud_db',
'dbhost' => 'cloud-db',
'dbtableprefix' => '',
'dbport' => '',
'mysql.utf8mb4' => true,
'dbuser' => 'cloud_user',
'dbpassword' => 'xxxxx',
'installed' => true,
'maintenance' => false,
'updater.secret' => 'xxxx',
'loglevel' => 0,
'mail_from_address' => 'julien',
'mail_smtpmode' => 'smtp',
'mail_domain' => 'email.com',
'mail_smtphost' => 'ssl0.ovh.net',
'mail_smtpport' => '465',
'mail_smtpsecure' => 'ssl',
'mail_smtpauthtype' => 'LOGIN',
'mail_smtpauth' => 1,
'mail_smtpname' => 'user@email.com',
'mail_smtppassword' => 'xxxx',
'theme' => '',
'default_phone_region' => 'ISO 3166-2:FR',
'filelocking.enabled' => true,
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '/var/run/redis/redis-server.sock',
'port' => 0,
],
'log_rotate_size' => 10000000,
'app_install_overwrite' =>
array (
0 => 'maps',
),
'maintenance_window_start' => 1,
);
Virtual Host
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin xxxx
ServerName cloud.example.com
ProxyPreserveHost On
SSLEngine On
# SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass / http://127.0.0.1:8083/
ProxyPassReverse / http://127.0.0.1:8083/
ProxyPassReverseCookieDomain 127.0.0.1 cloud.example.com
ErrorLog /srv/logs/error/cloud.example.com.log
CustomLog /srv/logs/access/cloud.example.com.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
RewriteEngine On
RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>
SSLCertificateFile /etc/letsencrypt/live/cloud.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cloud.example.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerAdmin xxxx
ServerName cloud.example.com
# ProxyPreserveHost On
# ProxyPass / http://127.0.0.1:8083/
# ProxyPassReverse / http://127.0.0.1:8083/
# ProxyPassReverseCookieDomain 127.0.0.1 cloud.example.com
ErrorLog /srv/logs/error/cloud.example.com.log
CustomLog /srv/logs/access/cloud.example.com.log combined
RewriteEngine on
# Some rewrite rules in this file were disabled on your HTTPS site,
# because they have the potential to create redirection loops.
RewriteCond %{SERVER_NAME} =cloud.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
# Doublon?
# Redirect permanent / https://cloud.example.com/
RewriteRule ^/\.well-known/carddav http://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav http://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
</VirtualHost>
</IfModule>
Docker-compose.yml
services:
cloud-db:
container_name: ${DB_CONTAINER_NAME}
image: mariadb:latest
restart: unless-stopped
volumes:
- ${LOCAL_DB_DIR}:/var/lib/mysql
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
cloud-app:
depends_on:
- cloud-db
container_name: ${APP_CONTAINER_NAME}
image: nextcloud:30
ports:
- "8083:80"
restart: unless-stopped
volumes:
- ${LOCAL_DATA_DIR}:/var/www/html
- ${LOCAL_CONF_DIR}:/var/www/html/config
- ${LOCAL_APPS_DIR}:/var/www/html/apps
- ./config/vhost.conf:/etc/apache2/sites-enabled/vhost-ssl.conf
- /etc/letsencrypt:/etc/letsencrypt:ro
- /var/run/redis/redis-server.sock:/var/run/redis/redis-server.sock
environment:
NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER}
NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD}
NEXTCLOUD_DATA_DIR: ${NEXTCLOUD_DATA_DIR}
NEXTCLOUD_TABLE_PREFIX: ${NEXTCLOUD_TABLE_PREFIX}
VIRTUAL_HOST: ${VIRTUAL_HOST}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_HOST: ${MYSQL_HOST}
Apps
Enabled:
- admin_audit: 1.20.0
- calendar: 5.0.9
- cloud_federation_api: 1.13.0
- contacts: 6.1.3
- contactsinteraction: 1.11.0
- dashboard: 7.10.0
- dav: 1.31.1
- federatedfilesharing: 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
- gpoddersync: 3.11.0
- logreader: 3.0.0
- lookup_server_connector: 1.18.0
- notifications: 3.0.0
- oauth2: 1.18.1
- provisioning_api: 1.20.0
- related_resources: 1.5.0
- serverinfo: 2.0.0
- settings: 1.13.0
- theming: 2.5.0
- twofactor_backupcodes: 1.19.0
- updatenotification: 1.20.0
- viewer: 3.0.0
- weather_status: 1.10.0
- welcome: 1.2.1
- workflowengine: 2.12.0
Disabled:
- activity: 3.0.0 (installed 2.11.0)
- app_api: 4.0.5 (installed 4.0.5)
- bruteforcesettings: 3.0.0 (installed 2.4.0)
- circles: 30.0.0 (installed 27.0.0)
- comments: 1.20.1 (installed 1.8.0)
- encryption: 2.18.0
- federation: 1.20.0 (installed 1.8.0)
- files_external: 1.22.0
- files_rightclick: 0.15.1 (installed 1.6.0)
- files_versions: 1.23.0 (installed 1.11.0)
- firstrunwizard: 3.0.0 (installed 2.7.0)
- maps: 1.5.0 (installed 1.5.0)
- news: 25.2.0 (installed 25.2.0)
- nextcloud_announcements: 2.0.0 (installed 1.7.0)
- nextpod: 0.7.6 (installed 0.7.6)
- notes: 4.11.0 (installed 4.11.0)
- password_policy: 2.0.0 (installed 1.8.0)
- photos: 3.0.2 (installed 3.0.2)
- privacy: 2.0.0 (installed 1.2.0)
- recommendations: 3.0.0 (installed 0.6.0)
- sharebymail: 1.20.0 (installed 1.8.0)
- support: 2.0.0 (installed 1.1.0)
- survey_client: 2.0.0 (installed 1.6.0)
- suspicious_login: 8.0.0
- systemtags: 1.20.0 (installed 1.8.0)
- text: 4.1.0 (installed 4.1.0)
- twofactor_nextcloud_notification: 4.0.0
- twofactor_totp: 12.0.0-dev
- user_ldap: 1.21.0
- user_status: 1.10.0 (installed 1.0.1)
- webhook_listeners: 1.1.0-dev (installed 1.1.0-dev)