Nextcloud 33.0.3 dont play video files in shared albums

The Basics

  • Nextcloud Server version (e.g., 29.x.x):

    • 33.0.3
  • Operating system and version (e.g., Ubuntu 24.04):

    • Ubuntu Server 24.04
  • Web server and version (e.g, Apache 2.4.25):

    • Apache 2.4.66

    Reverse proxy and version _(e.g. nginx 1.27.2)

    • Nginx 1.30.0
  • PHP version (e.g, 8.3):

    • PHP 8.4.20
  • Is this the first time you’ve seen this error? (Yes / No):

    • Yes
  • When did this problem seem to first start?

    • don't know
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)

    • docker image nextcloud:latest
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)

    • No

Summary of the issue you are facing:

I create an album in Photos App and add photos and videos to it. In the album properties, I create a public link and share it with friends who don’t have an account on my Nextcloud. When the user opens the public link, the photos open in their browser, but the videos don’t open or play.

Steps to replicate it (hint: details matter!):

  1. create an album in Photos App and add photos and videos to it

  2. create a public link of album and share it

  3. try to open link in browser and play videos

Log entries

Nextcloud

{"reqId":"ZgVCzBQ5nmCgYINzClbA","level":3,"time":"2026-05-09T10:56:34+00:00","remoteAddr":"192.168.50.1","user":"--","app":"no app in context","method":"GET","url":"/public.php/dav/files/null/XQQ2118WC54XdU9etjtIxsEVBLPKzPT9/272820-20260421_135732.mp4","scriptName":"/public.php","message":"Exception thrown: Sabre\\DAV\\Exception\\NotFound","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0","version":"33.0.3.2","exception":{"Exception":"Sabre\\DAV\\Exception\\NotFound","Message":"","Code":0,"Trace":[{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/PublicAuth.php","line":82,"function":"checkToken","class":"OCA\\DAV\\Connector\\Sabre\\PublicAuth","type":"->","args":[]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php","line":179,"function":"check","class":"OCA\\DAV\\Connector\\Sabre\\PublicAuth","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:GET",[{"__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/appinfo/v2/publicremote.php","line":164,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/public.php","line":90,"args":["/var/www/html/apps/dav/appinfo/v2/publicremote.php"],"function":"require_once"}],"File":"/var/www/html/apps/dav/lib/Connector/Sabre/PublicAuth.php","Line":133,"message":"","exception":"{\"class\":\"Sabre\\DAV\\Exception\\NotFound\",\"message\":\"\",\"code\":0,\"file\":\"/var/www/html/apps/dav/lib/Connector/Sabre/PublicAuth.php:133\",\"trace\":\"#0 /var/www/html/apps/dav/lib/Connector/Sabre/PublicAuth.php(82): OCA\\DAV\\Connector\\Sabre\\PublicAuth->checkToken()\\n#1 /var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php(179): OCA\\DAV\\Connector\\Sabre\\PublicAuth->check(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#2 /var/www/html/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php(135): Sabre\\DAV\\Auth\\Plugin->check(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#3 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\Auth\\Plugin->beforeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#4 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(456): Sabre\\DAV\\Server->emit('beforeMethod:GE...', Array)\\n#5 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#6 /var/www/html/apps/dav/appinfo/v2/publicremote.php(164): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#7 /var/www/html/public.php(90): require_once('/var/www/html/a...')\\n#8 {main}\"}","CustomMessage":"Exception thrown: Sabre\\DAV\\Exception\\NotFound"},"id":"69ff17e4b144e"}

Web Browser

Viewer.vue:518 [INFO] viewer: No OCP.Files app found, viewer is now in standalone mode {app: 'viewer', level: 0}
Viewer.vue:542 [INFO] viewer: 5 viewer handlers registered {app: 'viewer', level: 0, handlers: Array(5)}
session-heartbeat.ts:80 [INFO] core: session heartbeat polling started {app: 'core', level: 0}
A bad HTTP response code (401) was received when fetching the script.
PhotosAppPublic.vue:64 [ERROR] photos: SW registration failed:  {app: 'photos', level: 0, error: TypeError: Failed to register a ServiceWorker for scope ('https://cloud.sapligin.ru/apps/photos') w…}app: "photos"error: TypeError: Failed to register a ServiceWorker for scope ('https://cloud.sapligin.ru/apps/photos') with script ('https://cloud.sapligin.ru/index.php/apps/photos/service-worker.js'): A bad HTTP response code (401) was received when fetching the script.message: "Failed to register a ServiceWorker for scope ('https://cloud.sapligin.ru/apps/photos') with script ('https://cloud.sapligin.ru/index.php/apps/photos/service-worker.js'): A bad HTTP response code (401) was received when fetching the script."stack: "TypeError: Failed to register a ServiceWorker for scope ('https://cloud.sapligin.ru/apps/photos') with script ('https://cloud.sapligin.ru/index.php/apps/photos/service-worker.js'): A bad HTTP response code (401) was received when fetching the script."[[Prototype]]: Errorconstructor: ƒ TypeError()length: 1name: "TypeError"prototype: Errorconstructor: ƒ TypeError()message: ""name: "TypeError"[[Prototype]]: Objectconstructor: ƒ Error()stackTraceLimit: 10captureStackTrace: ƒ captureStackTrace()isError: ƒ isError()length: 1name: "Error"prototype: {name: 'Error', message: '', toString: ƒ}arguments: (...)caller: (...)[[Prototype]]: ƒ ()[[Scopes]]: Scopes[0]message: ""name: "Error"toString: ƒ toString()[[Prototype]]: Objectarguments: (...)caller: (...)[[Prototype]]: ƒ Error()[[Scopes]]: Scopes[0]message: ""name: "TypeError"[[Prototype]]: Objectlevel: 0[[Prototype]]: Object
log @ index.mjs:54
error @ index.mjs:72
(anonymous) @ PhotosAppPublic.vue:64
nqA3rrLna9BIDkHS6ALRnzWFLgComLRe:1 [Intervention] Images loaded lazily and replaced with placeholders. Load events are deferred. See https://go.microsoft.com/fwlink/?linkid=2048113

Web server / Reverse Proxy

192.168.50.1 - - [09/May/2026:14:24:37 +0300] "GET /apps/photos/api/v1/publicPreview/272215?etag=35f9c76e428b16b506d285d1b649be3a&x=256&y=256&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 3161 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:37 +0300] "GET /apps/photos/api/v1/publicPreview/272220?etag=49670c05bd2b9315ddb6762d9ee9fee9&x=256&y=256&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 5379 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:37 +0300] "GET /apps/photos/api/v1/publicPreview/272223?etag=0b04b2a25271854fae4b0a6655a452ae&x=256&y=256&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 7821 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:38 +0300] "GET /apps/photos/api/v1/publicPreview/272222?etag=c9523d289938b0bb3f7d06db398eedf1&x=64&y=64&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 1493 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:38 +0300] "GET /apps/photos/api/v1/publicPreview/272224?etag=9a19883e920860b6fe31b966daec3b86&x=64&y=64&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 1535 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:38 +0300] "GET /apps/photos/api/v1/publicPreview/272222?etag=c9523d289938b0bb3f7d06db398eedf1&x=256&y=256&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 9215 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:38 +0300] "GET /apps/photos/api/v1/publicPreview/272224?etag=9a19883e920860b6fe31b966daec3b86&x=256&y=256&token=nqA3rrLna9BIDkHS6ALRnzWFLgComLRe HTTP/2.0" 200 10547 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:40 +0300] "GET /public.php/dav/photospublic/nqA3rrLna9BIDkHS6ALRnzWFLgComLRe/272242-20260417_192842.mp4 HTTP/2.0" 503 37152 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"
192.168.50.1 - - [09/May/2026:14:24:40 +0300] "GET /public.php/dav/photospublic/nqA3rrLna9BIDkHS6ALRnzWFLgComLRe/272242-20260417_192842.mp4 HTTP/2.0" 503 37152 "-" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 Edg/147.0.0.0"

Configuration

Nextcloud

{
    "system": {
        "htaccess.RewriteBase": "\/",
        "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
            }
        ],
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "cloud.sapligin.ru",
            "192.168.50.7",
            "172.30.1.4"
        ],
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "33.0.3.2",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "overwrite.cli.url": "https:\/\/cloud.sapligin.ru",
        "forwarded_for_headers": [
            "HTTP_X_FORWARDED",
            "HTTP_X_FORWARDED_FOR"
        ],
        "overwriteprotocol": "https",
        "filelocking.enabled": true,
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": 6379,
            "timeout": 0,
            "password": "***REMOVED SENSITIVE VALUE***"
        },
        "default_phone_region": "RU",
        "mail_smtpmode": "smtp",
        "mail_smtpsecure": "ssl",
        "mail_sendmailmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauth": 1,
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "twofactor_enforced": "true",
        "twofactor_enforced_groups": [],
        "twofactor_enforced_excluded_groups": [],
        "loglevel": 0,
        "maintenance": false,
        "maintenance_window_start": 1,
        "theme": "",
        "enable_previews": true,
        "enabledPreviewProviders": {
            "1": "OC\\Preview\\PDF",
            "2": "OC\\Preview\\Image",
            "3": "OC\\Preview\\Photoshop",
            "4": "OC\\Preview\\TIFF",
            "5": "OC\\Preview\\SVG",
            "6": "OC\\Preview\\Movie",
            "7": "OC\\Preview\\MKV",
            "8": "OC\\Preview\\MP4",
            "9": "OC\\Preview\\AVI",
            "10": "OC\\Preview\\HEIC"
        },
        "upgrade.disable-web": true
    }
}

Apps

Enabled:

  • activity: 6.0.0
  • admin_audit: 1.23.0
  • app_api: 33.0.0
  • assistant: 3.4.1
  • bruteforcesettings: 6.0.0
  • calendar: 6.2.4
  • circles: 33.0.0
  • cloud_federation_api: 1.17.0
  • comments: 1.23.0
  • contacts: 8.4.5
  • contactsinteraction: 1.14.1
  • context_chat: 5.3.1
  • dashboard: 7.13.0
  • dav: 1.36.0
  • federatedfilesharing: 1.23.0
  • federation: 1.23.0
  • files: 2.5.0
  • files_downloadlimit: 5.1.0
  • files_pdfviewer: 6.0.0
  • files_reminders: 1.6.0
  • files_sharing: 1.25.2
  • files_trashbin: 1.23.0
  • files_versions: 1.26.0
  • firstrunwizard: 6.0.0
  • logreader: 6.0.0
  • lookup_server_connector: 1.21.0
  • mail: 5.7.14
  • music: 3.0.0
  • nextcloud_announcements: 5.0.0
  • notes: 5.0.0
  • notifications: 6.0.0
  • notify_push: 1.3.2
  • oauth2: 1.21.0
  • password_policy: 5.0.0
  • passwords: 2026.5.20
  • photos: 6.0.0
  • privacy: 5.0.0
  • profile: 1.2.0
  • provisioning_api: 1.23.0
  • recommendations: 6.0.0
  • related_resources: 4.0.0
  • richdocuments: 10.1.3
  • richdocumentscode: 25.4.904
  • serverinfo: 5.0.0
  • settings: 1.16.0
  • sharebymail: 1.23.0
  • spreed: 23.0.4
  • support: 5.0.0
  • survey_client: 5.0.0
  • suspicious_login: 11.0.0
  • systemtags: 1.23.0
  • text: 7.0.1
  • theming: 2.8.0
  • twofactor_backupcodes: 1.22.0
  • twofactor_totp: 15.0.0
  • updatenotification: 1.23.0
  • user_status: 1.13.0
  • viewer: 6.0.0
  • weather_status: 1.13.0
  • webhook_listeners: 1.5.0
  • workflowengine: 2.15.0
    Disabled:
  • encryption: 2.21.0
  • files_external: 1.25.1
  • files_rightclick: 0.15.1 (installed 1.6.0)
  • testing: 1.23.0
  • twofactor_nextcloud_notification: 7.0.0
  • user_ldap: 1.24.0

Hi @Sergej_Pligin,

Looking at your web server log, the smoking gun is this line:

The server responds with 503 (Service Unavailable) before a single byte of video data is sent. The browser never gets the file.

Likely cause: nginx proxy timeout during large file transfers

To give you a precise answer I would need to see your nginx reverse proxy config. If you prefer not to post it, make sure at minimum that proxy_buffering is off:

proxy_buffering off;

and that proxy_read_timeout is set high enough for large files (the default is 60 seconds, which may not be sufficient for streaming a video through the proxy chain):

proxy_read_timeout 3600;

Both settings go into the server or location block in your nginx reverse proxy config that handles requests to Nextcloud.

h.t.h.


ernolf

Thank you for your response! I followed your advice, but it didn’t work. I also found out that direct MP4 file share playback works, but album/public share doesn’t. I think the issue lies in the Photos/Albums layer.