fMP4-HLS errors with HTTP 401 #7332

Closed
opened 2026-02-07 04:50:30 +03:00 by OVERLORD · 1 comment
Owner

Originally created by @Martmists-GH on GitHub (Sep 21, 2025).

Description of the bug

On all devices, enabling fMP4-HLS errors with HTTP 401

Reproduction steps

  1. Sign in
  2. Enable fMP4-HLS (enabled by default)
  3. Try to play any video media

What is the current bug behavior?

The content fails to play

What is the expected correct behavior?

The content plays

Jellyfin Server version

10.10.0+

Specify commit id

No response

Specify unstable release number

No response

Specify version number

No response

Specify the build version

10.10.7

Environment

- OS: Arch Linux/Windows/Android client, Linux host
- Linux Kernel: linux-zen/linux client, linux-lts server
- Virtualization: N/A
- Clients: Browser, Android
- Browser: Chrome 140.0.7339.128
- FFmpeg Version: latest from arch repos (unknown which that is)
- Playback Method: Not sure which fMP4-HLS uses
- Hardware Acceleration: NVENC
- GPU Model: RTX 3060
- Plugins: None
- Reverse Proxy: Nginx+Cloudflare
- Base URL: yes (private domain)
- Networking: Host
- Jellyfin Data Storage: Local SSD
- Media Storage: Local HDD
- External Integrations: None

Jellyfin logs

[2025-09-21 01:15:08.044 +02:00] [INF] WS "172.70.47.193" request
[2025-09-21 01:19:32.244 +02:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets.
[2025-09-21 01:23:20.244 +02:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets.
[2025-09-21 01:27:08.245 +02:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets.
[2025-09-21 01:29:51.502 +02:00] [INF] User policy for "Mart". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2025-09-21 01:29:52.129 +02:00] [INF] AuthenticationScheme: "CustomAuthentication" was challenged.
[2025-09-21 01:29:52.258 +02:00] [INF] User policy for "Mart". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2025-09-21 01:29:52.360 +02:00] [INF] AuthenticationScheme: "CustomAuthentication" was challenged.
[2025-09-21 01:29:52.387 +02:00] [INF] User policy for "Mart". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2025-09-21 01:29:52.479 +02:00] [INF] AuthenticationScheme: "CustomAuthentication" was challenged.
[2025-09-21 01:29:52.517 +02:00] [INF] Playback stopped reported by app "Jellyfin Web" "10.10.7" playing "<...>". Stopped at "0" ms
[2025-09-21 01:29:55.306 +02:00] [INF] WS "172.70.47.193" closed

FFmpeg logs


Client / Browser logs

Requesting url without automatic networking: https://<domain>/Videos/ActiveEncodings?...
node_modules.hls.js.77523d1926bb7c38f494.chunk.js:1  GET https://<domain>/videos/9b7784fe-c2c7-0c8f-1e28-ce3d8a90b3b3/hls1/main/-1.mp4?... 401 (Unauthorized)
main.jellyfin.bundle.js?0005d2ebdf5bc8501eec:2 HLS Error: Type: networkError Details: fragLoadError Fatal: false

Relevant screenshots or videos

No response

Additional information

Nginx config:

server {
    listen 80;
    server_name <domain>;
    client_max_body_size 20M;
    location / {
        proxy_pass http://localhost:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;  # automatically switches to `upgrade` if requested
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_buffering off;
    }
}

Cloudflare configured as plain proxy for SSL and remote access.

Originally created by @Martmists-GH on GitHub (Sep 21, 2025). ### Description of the bug On all devices, enabling fMP4-HLS errors with HTTP 401 ### Reproduction steps 1. Sign in 2. Enable fMP4-HLS (enabled by default) 3. Try to play any video media ### What is the current _bug_ behavior? The content fails to play ### What is the expected _correct_ behavior? The content plays ### Jellyfin Server version 10.10.0+ ### Specify commit id _No response_ ### Specify unstable release number _No response_ ### Specify version number _No response_ ### Specify the build version 10.10.7 ### Environment ```markdown - OS: Arch Linux/Windows/Android client, Linux host - Linux Kernel: linux-zen/linux client, linux-lts server - Virtualization: N/A - Clients: Browser, Android - Browser: Chrome 140.0.7339.128 - FFmpeg Version: latest from arch repos (unknown which that is) - Playback Method: Not sure which fMP4-HLS uses - Hardware Acceleration: NVENC - GPU Model: RTX 3060 - Plugins: None - Reverse Proxy: Nginx+Cloudflare - Base URL: yes (private domain) - Networking: Host - Jellyfin Data Storage: Local SSD - Media Storage: Local HDD - External Integrations: None ``` ### Jellyfin logs ```shell [2025-09-21 01:15:08.044 +02:00] [INF] WS "172.70.47.193" request [2025-09-21 01:19:32.244 +02:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets. [2025-09-21 01:23:20.244 +02:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets. [2025-09-21 01:27:08.245 +02:00] [INF] Sending ForceKeepAlive message to 1 inactive WebSockets. [2025-09-21 01:29:51.502 +02:00] [INF] User policy for "Mart". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2025-09-21 01:29:52.129 +02:00] [INF] AuthenticationScheme: "CustomAuthentication" was challenged. [2025-09-21 01:29:52.258 +02:00] [INF] User policy for "Mart". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2025-09-21 01:29:52.360 +02:00] [INF] AuthenticationScheme: "CustomAuthentication" was challenged. [2025-09-21 01:29:52.387 +02:00] [INF] User policy for "Mart". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2025-09-21 01:29:52.479 +02:00] [INF] AuthenticationScheme: "CustomAuthentication" was challenged. [2025-09-21 01:29:52.517 +02:00] [INF] Playback stopped reported by app "Jellyfin Web" "10.10.7" playing "<...>". Stopped at "0" ms [2025-09-21 01:29:55.306 +02:00] [INF] WS "172.70.47.193" closed ``` ### FFmpeg logs ```shell ``` ### Client / Browser logs ``` Requesting url without automatic networking: https://<domain>/Videos/ActiveEncodings?... node_modules.hls.js.77523d1926bb7c38f494.chunk.js:1 GET https://<domain>/videos/9b7784fe-c2c7-0c8f-1e28-ce3d8a90b3b3/hls1/main/-1.mp4?... 401 (Unauthorized) main.jellyfin.bundle.js?0005d2ebdf5bc8501eec:2 HLS Error: Type: networkError Details: fragLoadError Fatal: false ``` ### Relevant screenshots or videos _No response_ ### Additional information Nginx config: ```nginx server { listen 80; server_name <domain>; client_max_body_size 20M; location / { proxy_pass http://localhost:8096; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # automatically switches to `upgrade` if requested proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_buffering off; } } ``` Cloudflare configured as plain proxy for SSL and remote access.
OVERLORD added the support label 2026-02-07 04:50:30 +03:00
Author
Owner

@felix920506 commented on GitHub (Sep 21, 2025):

Putting Jellyfin behind Cloudflare is not supported and violates their terms of service.

Please head to our forum or chat rooms for troubleshooting. https://jellyfin.org/contact

@felix920506 commented on GitHub (Sep 21, 2025): Putting Jellyfin behind Cloudflare is not supported and violates their terms of service. Please head to our forum or chat rooms for troubleshooting. https://jellyfin.org/contact
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#7332