Here’s a ready-to-post forum message (English), with everything trimmed to the essentials and no secrets:
iOS app can’t play videos (Nextcloud 32, Docker + Nginx reverse proxy) while web UI plays fine
Environment
-
Nextcloud 32.0.0 in Docker
-
App container: custom image based on
nextcloud:32-apachewith ffmpeg installed (/usr/bin/ffmpeg) -
Other containers: MariaDB 10.11, Redis 7.2, Nginx 1.27 reverse proxy
-
-
External storage: Local mounts (
/SSD2TB,/SSD128) via “External storages” -
iOS app: Nextcloud iOS 7.1.7 (on latest iOS)
-
Domain: reverse proxy on HTTPS (valid cert), HSTS enabled
Symptoms
-
In the iOS app, tapping any
.mp4or.movstarts to load but never plays. Sometimes the app suggests opening with an external player (e.g. VLC). -
The web interface (desktop browser) plays the same files smoothly.
-
Thumbnails/previews are generated (we use
previewgeneratorand ffmpeg movie previews).
What works / doesn’t
-
Desktop browsers via the same domain: video playback OK. -
Direct file access via Web UI (player based on Video.js): OK. -
Nextcloud iOS app streaming the same file: fails to start. -
The app does call
POST /ocs/v2.php/apps/dav/api/v1/directand receives a direct link like/remote.php/direct/..., but playback still fails.
Reverse proxy (Nginx) details
-
Passing Range and disabling buffering for streaming:
-
proxy_http_version 1.1; -
proxy_request_buffering off; -
proxy_buffering off; -
add_header Accept-Ranges bytes; -
proxy_set_header Range $http_range;
-
-
HTTP/2 is currently off for testing (HTTP/1.1 only).
-
HSTS on.
-
No auth/cookie stripping; headers forwarded normally.
Server logs (excerpt / patterns)
-
iOS app shows lots of
PROPFINDon/remote.php/dav/files/<user>/...andPOST /ocs/v2.php/apps/dav/api/v1/direct(200). -
When attempting playback from the iOS app there is no obvious 206/Range activity in access logs (or it’s not getting through?).
-
No PHP errors during video access. Redis/MariaDB healthy.
What we already tried
-
Reinstalled the iOS app and logged in again.
-
Tested with app password as well as normal login.
-
Disabled HTTP/2 at the proxy, ensured Range support (
Accept-Ranges: bytes,Rangeforwarded). -
Confirmed ffmpeg present in the app container and previews generate for videos.
-
Verified that
files_videoplayerapp is not required on NC 32 (the legacy app isn’t in the app store anymore).
Questions
-
Are there any known issues with Nextcloud iOS 7.1.7 streaming videos from
/remote.php/direct/...behind an Nginx reverse proxy? -
Is there a recommended Nginx snippet for video streaming specifically for the iOS app (beyond forwarding
Rangeand disabling buffering)? -
Should we expect 206 Partial Content from the app’s requests, and if so, is there anything else we must set so the app actually requests/receives 206?
-
Any debug steps on iOS (client logs, toggles) to see why the app refuses to start playback while browsers work?
-
Could this be related to WebDAV vs. direct endpoint behavior in the iOS app, and is there a config switch to force one path?
Happy to provide a sanitized Nginx location block and full request/response headers from a test file if needed. Thanks!