-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Description
Steps to reproduce
- Install Talk from Google Play (23.0.0)
- Make a photo with camera, should be about 3..7 MB
- Upload it in chat
Expected behaviour
Image is uploaded successfully and is sent in chat
Actual behaviour
Image uploads and then fails. Notification: "Failed to upload %filename". Image itself is saved into Talk directory but not sent in the chat. Also there is a response with status 403 from backend: Sabre\DAV\Exception\Forbidden due to dirty table reads in the database transaction
Device brand and model
Infinix GT10 Pro
Android version
14
Nextcloud Talk app version
23.0.0
Nextcloud server version
33.0.0
Talk version
23.0.1
Custom Signaling server configured
Yes (specify version in Additional Information)
Custom TURN server configured
Yes
Custom STUN server configured
Yes
Android logs
(Don't know how to find them)
Server log
Enabled more logging in config.php:
'db_logging' => true,
'loglevel' => 0,
'log.condition' => [
'apps' => ['dav'],
],
docker compose logs app:
Details
app-1 | 87.71.51.23 - adefe [16/Mar/2026:00:14:49 +0300] "HEAD /remote.php/dav/files/adefe/Talk/1000051686.jpg HTTP/1.1" 404 379 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:50 +0300] "MKCOL /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8 HTTP/1.1" 201 481 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:50 +0300] "PROPFIND /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8 HTTP/1.1" 207 1087 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:51 +0300] "PUT /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8/0000000000000000-0000000001023999 HTTP/1.1" 201 481 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:51 +0300] "PUT /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8/0000000001024000-0000000002047999 HTTP/1.1" 201 481 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:52 +0300] "PUT /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8/0000000002048000-0000000003071999 HTTP/1.1" 201 481 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:52 +0300] "PUT /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8/0000000003072000-0000000003440137 HTTP/1.1" 201 481 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - - [16/Mar/2026:00:14:52 +0300] "MOVE /remote.php/dav/uploads/adefe/aa73a07c11b1832ce061cbf2839b10a8/.file HTTP/1.1" 403 582 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1 | 87.71.51.23 - adefe [16/Mar/2026:00:14:59 +0300] "DELETE /ocs/v2.php/apps/spreed/api/v4/room/a33jvhn8/participants/active HTTP/1.1" 200 880 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
/var/www/html/data/nextcloud.log:
Details
{
"reqId": "2fbDM1S2fQYv131DBW98",
"level": 0,
"time": "2026-03-15T20:55:27+00:00",
"remoteAddr": "87.71.51.23",
"user": "adefe",
"app": "no app in context",
"method": "MOVE",
"url": "/remote.php/dav/uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"scriptName": "/remote.php",
"message": "dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",
"userAgent": "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0",
"version": "33.0.0.16",
"exception": {
"Exception": "Exception",
"Message": "dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",
"Code": 0,
"Trace": [
{
"file": "/var/www/html/lib/private/DB/ConnectionAdapter.php",
"line": 50,
"function": "executeQuery",
"class": "OC\\DB\\Connection",
"type": "->",
"args": [
"SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",
{
"dcValue1": "d41d8cd98f00b204e9800998ecf8427e",
"dcValue2": 14
},
{
"dcValue1": 2,
"dcValue2": 1
}
]
},
{
"file": "/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php",
"line": 268,
"function": "executeQuery",
"class": "OC\\DB\\ConnectionAdapter",
"type": "->",
"args": [
"SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",
{
"dcValue1": "d41d8cd98f00b204e9800998ecf8427e",
"dcValue2": 14
},
{
"dcValue1": 2,
"dcValue2": 1
}
]
},
{
"file": "/var/www/html/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php",
"line": 270,
"function": "executeQuery",
"class": "OC\\DB\\QueryBuilder\\QueryBuilder",
"type": "->",
"args": [
{
"__class__": "OC\\DB\\ConnectionAdapter"
}
]
},
{
"file": "/var/www/html/lib/private/Files/Cache/Cache.php",
"line": 132,
"function": "executeQuery",
"class": "OC\\DB\\QueryBuilder\\ExtendedQueryBuilder",
"type": "->",
"args": []
},
{
"file": "/var/www/html/lib/private/Files/Cache/Cache.php",
"line": 993,
"function": "get",
"class": "OC\\Files\\Cache\\Cache",
"type": "->",
"args": [
""
]
},
{
"file": "/var/www/html/lib/private/Files/Cache/Cache.php",
"line": 978,
"function": "calculateFolderSizeInner",
"class": "OC\\Files\\Cache\\Cache",
"type": "->",
"args": [
"",
null
]
},
{
"file": "/var/www/html/lib/private/Files/Cache/Cache.php",
"line": 924,
"function": "calculateFolderSize",
"class": "OC\\Files\\Cache\\Cache",
"type": "->",
"args": [
"",
null
]
},
{
"file": "/var/www/html/lib/private/Files/Cache/Updater.php",
"line": 156,
"function": "correctFolderSize",
"class": "OC\\Files\\Cache\\Cache",
"type": "->",
"args": [
""
]
},
{
"file": "/var/www/html/lib/private/Files/View.php",
"line": 304,
"function": "remove",
"class": "OC\\Files\\Cache\\Updater",
"type": "->",
"args": [
"d76b28227345f1bcd1c99a9b1c7284cd"
]
},
{
"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php",
"line": 305,
"function": "rmdir",
"class": "OC\\Files\\View",
"type": "->",
"args": [
"/d76b28227345f1bcd1c99a9b1c7284cd"
]
},
{
"file": "/var/www/html/apps/dav/lib/Upload/FutureFile.php",
"line": 83,
"function": "delete",
"class": "OCA\\DAV\\Connector\\Sabre\\Directory",
"type": "->",
"args": []
},
{
"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php",
"line": 182,
"function": "delete",
"class": "OCA\\DAV\\Upload\\FutureFile",
"type": "->",
"args": []
},
{
"file": "/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php",
"line": 77,
"function": "move",
"class": "Sabre\\DAV\\Tree",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php",
"line": 59,
"function": "performMove",
"class": "OCA\\DAV\\Upload\\ChunkingPlugin",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
"line": 89,
"function": "beforeMove",
"class": "OCA\\DAV\\Upload\\ChunkingPlugin",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
"line": 603,
"function": "emit",
"class": "Sabre\\DAV\\Server",
"type": "->",
"args": [
"beforeMove",
[
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
]
},
{
"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
"line": 89,
"function": "httpMove",
"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:MOVE",
[
{
"__class__": "Sabre\\HTTP\\Request"
},
{
"__class__": "Sabre\\HTTP\\Response"
}
]
]
},
{
"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
"line": 212,
"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": 427,
"function": "start",
"class": "OCA\\DAV\\Connector\\Sabre\\Server",
"type": "->",
"args": []
},
{
"file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
"line": 25,
"function": "exec",
"class": "OCA\\DAV\\Server",
"type": "->",
"args": []
},
{
"file": "/var/www/html/remote.php",
"line": 151,
"args": [
"/var/www/html/apps/dav/appinfo/v2/remote.php"
],
"function": "require_once"
}
],
"File": "/var/www/html/lib/private/DB/Connection.php",
"Line": 407,
"message": "dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",
"tables": "[\"oc_filecache\",\"oc_filecache_extended\",\"oc_files_versions\",\"oc_activity\",\"oc_files_metadata\",\"oc_files_metadata_index\",\"oc_jobs\",\"oc_preview_generation\"]",
"reads": "[\"oc_filecache\",\"oc_filecache_extended\",\"oc_files_metadata\"]",
"exception": "{\"class\":\"Exception\",\"message\":\"dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)\",\"code\":0,\"file\":\"/var/www/html/lib/private/DB/Connection.php:407\",\"trace\":\"#0 /var/www/html/lib/private/DB/ConnectionAdapter.php(50): OC\\DB\\Connection->executeQuery('SELECT `filecac...', Array, Array)\\n#1 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(268): OC\\DB\\ConnectionAdapter->executeQuery('SELECT `filecac...', Array, Array)\\n#2 /var/www/html/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php(270): OC\\DB\\QueryBuilder\\QueryBuilder->executeQuery(Object(OC\\DB\\ConnectionAdapter))\\n#3 /var/www/html/lib/private/Files/Cache/Cache.php(132): OC\\DB\\QueryBuilder\\ExtendedQueryBuilder->executeQuery()\\n#4 /var/www/html/lib/private/Files/Cache/Cache.php(993): OC\\Files\\Cache\\Cache->get('')\\n#5 /var/www/html/lib/private/Files/Cache/Cache.php(978): OC\\Files\\Cache\\Cache->calculateFolderSizeInner('', NULL)\\n#6 /var/www/html/lib/private/Files/Cache/Cache.php(924): OC\\Files\\Cache\\Cache->calculateFolderSize('', NULL)\\n#7 /var/www/html/lib/private/Files/Cache/Updater.php(156): OC\\Files\\Cache\\Cache->correctFolderSize('')\\n#8 /var/www/html/lib/private/Files/View.php(304): OC\\Files\\Cache\\Updater->remove('d76b28227345f1b...')\\n#9 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(305): OC\\Files\\View->rmdir('/d76b28227345f1...')\\n#10 /var/www/html/apps/dav/lib/Upload/FutureFile.php(83): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#11 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#12 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(77): Sabre\\DAV\\Tree->move('uploads/adefe/d...', 'files/adefe/Tal...')\\n#13 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(59): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/adefe/d...', 'files/adefe/Tal...')\\n#14 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/adefe/d...', 'files/adefe/Tal...')\\n#15 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#16 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#17 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#18 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#19 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#20 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#21 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#22 {main}\"}",
"CustomMessage": "dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)"
}
}
{
"reqId": "2fbDM1S2fQYv131DBW98",
"level": 0,
"time": "2026-03-15T20:55:27+00:00",
"remoteAddr": "87.71.51.23",
"user": "adefe",
"app": "webdav",
"method": "MOVE",
"url": "/remote.php/dav/uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"scriptName": "/remote.php",
"message": "Exception thrown: Sabre\\DAV\\Exception\\Forbidden",
"userAgent": "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0",
"version": "33.0.0.16",
"exception": {
"Exception": "Sabre\\DAV\\Exception\\Forbidden",
"Message": "",
"Code": 0,
"Trace": [
{
"file": "/var/www/html/apps/dav/lib/Upload/FutureFile.php",
"line": 83,
"function": "delete",
"class": "OCA\\DAV\\Connector\\Sabre\\Directory",
"type": "->",
"args": []
},
{
"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php",
"line": 182,
"function": "delete",
"class": "OCA\\DAV\\Upload\\FutureFile",
"type": "->",
"args": []
},
{
"file": "/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php",
"line": 77,
"function": "move",
"class": "Sabre\\DAV\\Tree",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php",
"line": 59,
"function": "performMove",
"class": "OCA\\DAV\\Upload\\ChunkingPlugin",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
"line": 89,
"function": "beforeMove",
"class": "OCA\\DAV\\Upload\\ChunkingPlugin",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
"line": 603,
"function": "emit",
"class": "Sabre\\DAV\\Server",
"type": "->",
"args": [
"beforeMove",
[
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
]
},
{
"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
"line": 89,
"function": "httpMove",
"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:MOVE",
[
{
"__class__": "Sabre\\HTTP\\Request"
},
{
"__class__": "Sabre\\HTTP\\Response"
}
]
]
},
{
"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
"line": 212,
"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": 427,
"function": "start",
"class": "OCA\\DAV\\Connector\\Sabre\\Server",
"type": "->",
"args": []
},
{
"file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
"line": 25,
"function": "exec",
"class": "OCA\\DAV\\Server",
"type": "->",
"args": []
},
{
"file": "/var/www/html/remote.php",
"line": 151,
"args": [
"/var/www/html/apps/dav/appinfo/v2/remote.php"
],
"function": "require_once"
}
],
"File": "/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php",
"Line": 307,
"message": "",
"exception": "{\"class\":\"Sabre\\DAV\\Exception\\Forbidden\",\"message\":\"\",\"code\":0,\"file\":\"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php:307\",\"trace\":\"#0 /var/www/html/apps/dav/lib/Upload/FutureFile.php(83): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#1 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#2 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(77): Sabre\\DAV\\Tree->move('uploads/adefe/d...', 'files/adefe/Tal...')\\n#3 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(59): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/adefe/d...', 'files/adefe/Tal...')\\n#4 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/adefe/d...', 'files/adefe/Tal...')\\n#5 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#6 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#7 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#8 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#9 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#10 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#11 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#12 {main}\"}",
"CustomMessage": "Exception thrown: Sabre\\DAV\\Exception\\Forbidden"
}
}
{
"reqId": "2fbDM1S2fQYv131DBW98",
"level": 1,
"time": "2026-03-15T20:55:27+00:00",
"remoteAddr": "87.71.51.23",
"user": "adefe",
"app": "no app in context",
"method": "MOVE",
"url": "/remote.php/dav/uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"scriptName": "/remote.php",
"message": "Uncaught exception",
"userAgent": "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0",
"version": "33.0.0.16",
"exception": {
"Exception": "Sabre\\DAV\\Exception\\Forbidden",
"Message": "",
"Code": 0,
"Trace": [
{
"file": "/var/www/html/apps/dav/lib/Upload/FutureFile.php",
"line": 83,
"function": "delete",
"class": "OCA\\DAV\\Connector\\Sabre\\Directory",
"type": "->",
"args": []
},
{
"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php",
"line": 182,
"function": "delete",
"class": "OCA\\DAV\\Upload\\FutureFile",
"type": "->",
"args": []
},
{
"file": "/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php",
"line": 77,
"function": "move",
"class": "Sabre\\DAV\\Tree",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php",
"line": 59,
"function": "performMove",
"class": "OCA\\DAV\\Upload\\ChunkingPlugin",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
"line": 89,
"function": "beforeMove",
"class": "OCA\\DAV\\Upload\\ChunkingPlugin",
"type": "->",
"args": [
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
},
{
"file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
"line": 603,
"function": "emit",
"class": "Sabre\\DAV\\Server",
"type": "->",
"args": [
"beforeMove",
[
"uploads/adefe/d76b28227345f1bcd1c99a9b1c7284cd/.file",
"files/adefe/Talk/1000051683.jpg"
]
]
},
{
"file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
"line": 89,
"function": "httpMove",
"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:MOVE",
[
{
"__class__": "Sabre\\HTTP\\Request"
},
{
"__class__": "Sabre\\HTTP\\Response"
}
]
]
},
{
"file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
"line": 212,
"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": 427,
"function": "start",
"class": "OCA\\DAV\\Connector\\Sabre\\Server",
"type": "->",
"args": []
},
{
"file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
"line": 25,
"function": "exec",
"class": "OCA\\DAV\\Server",
"type": "->",
"args": []
},
{
"file": "/var/www/html/remote.php",
"line": 151,
"args": [
"/var/www/html/apps/dav/appinfo/v2/remote.php"
],
"function": "require_once"
}
],
"File": "/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php",
"Line": 307,
"message": "Uncaught exception",
"exception": "{\"class\":\"Sabre\\DAV\\Exception\\Forbidden\",\"message\":\"\",\"code\":0,\"file\":\"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php:307\",\"trace\":\"#0 /var/www/html/apps/dav/lib/Upload/FutureFile.php(83): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#1 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#2 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(77): Sabre\\DAV\\Tree->move('uploads/adefe/d...', 'files/adefe/Tal...')\\n#3 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(59): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/adefe/d...', 'files/adefe/Tal...')\\n#4 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/adefe/d...', 'files/adefe/Tal...')\\n#5 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#6 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#7 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#8 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#9 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#10 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#11 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#12 {main}\"}",
"CustomMessage": "Uncaught exception"
}
}
Additional information
Signalling:
https://signal.nextcloud.adefe.xyz 2.1.0~docker
STUN:
stun.nextcloud.com:443
TURN:
turn only; nextcloud.adefe.xyz:3478; TCP and UDP
docker compose:
services:
db:
image: mariadb:latest
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- ./db:/var/lib/mysql:z
env_file: config.txt
app:
user: "1000:1000"
image: nextcloud:latest
restart: always
depends_on:
- db
volumes:
- ./nextcloud_data:/var/www/html:z
env_file: config.txt
environment:
- PHP_MEMORY_LIMIT=1000M
ports:
- 19980:80
deploy:
resources:
limits:
memory: 10G
redis:
image: redis:alpine
restart: always
env_file:
- config.txt
command: sh -c 'exec redis-server --requirepass "$$REDIS_PASSWORD"'
volumes:
- ./redis_data:/data
cron:
user: "1000:1000"
image: nextcloud:latest
restart: always
volumes:
- ./nextcloud_data:/var/www/html:z
- ./cron.sh:/cron.sh
environment:
- PHP_MEMORY_LIMIT=5000M
entrypoint: /cron.sh
nextcloud-talk:
image: ghcr.io/nextcloud-releases/aio-talk:latest
init: true
ports:
- 3478:3478/tcp
- 3478:3478/udp
- 8181:8081/tcp
env_file: config.txt
restart: unless-stopped
volumes:
nextcloud:
nginx config for nextcloud.adefe.xyz:
server {
if ($host = nextcloud.adefe.xyz) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name nextcloud.adefe.xyz;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name nextcloud.adefe.xyz;
keepalive_timeout 70;
client_max_body_size 4G;
client_body_timeout 7200s;
fastcgi_buffers 64 4k;
proxy_buffering off;
ssl_certificate /etc/letsencrypt/live/nextcloud.adefe.xyz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/nextcloud.adefe.xyz/privkey.pem; # managed by Certbot
location / {
proxy_pass http://127.0.0.1:19980;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache off;
client_max_body_size 4G;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location ^~ /.well-known {
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
location /.well-known/acme-challenge/ { try_files $uri =404; }
proxy_pass http://127.0.0.1:19980;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
nginx config for signal.nextcloud.adefe.xyz:
server {
if ($host = signal.nextcloud.adefe.xyz) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name signal.nextcloud.adefe.xyz;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name signal.nextcloud.adefe.xyz;
keepalive_timeout 90;
client_body_timeout 720s;
fastcgi_buffers 64 4k;
proxy_buffering off;
ssl_certificate /etc/letsencrypt/live/signal.nextcloud.adefe.xyz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/signal.nextcloud.adefe.xyz/privkey.pem; # managed by Certbot
location / {
proxy_pass http://127.0.0.1:8181;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 1G;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
Nextcloud config.php:
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'default_phone_region' => 'RU',
'memcache.local' => '\\OC\\Memcache\\APCu',
'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,
),
),
'passwordsalt' => '...',
'secret' => '...',
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'nextcloud.adefe.xyz',
),
'trusted_proxies' =>
array (
0 => '172.25.0.1',
1 => '172.25.0.2',
2 => '172.25.0.3',
3 => '172.25.0.4',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '33.0.0.16',
'overwrite.cli.url' => 'https://nextcloud.adefe.xyz',
'overwriteprotocol' => 'https',
'dbname' => 'nextcloud',
'dbhost' => 'db',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',
'dbpassword' => '...',
'installed' => true,
'instanceid' => '...',
'mail_smtpmode' => 'smtp',
'mail_sendmailmode' => 'smtp',
'mail_smtphost' => 'smtp.mail.ru',
'mail_from_address' => 'adefe',
'mail_domain' => 'internet.ru',
'mail_smtpport' => '465',
'mail_smtpsecure' => 'ssl',
'mail_smtpauth' => 1,
'mail_smtpname' => '..',
'mail_smtppassword' => '...',
'loglevel' => 1,
'maintenance' => false,
'theme' => '',
'maintenance_window_start' => 1,
'filelocking.enabled' => true,
'logfile' => '/var/www/html/data/nextcloud.log',
'cache_path' => '/var/www/html/data/cache',
'app_install_overwrite' =>
array (
),
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'redis',
'port' => 6379,
'timeout' => 0.0,
'password' => '...',
),
'backgroundjobs_mode' => 'cron',
);
Metadata
Metadata
Assignees
Labels
Type
Projects
Status