mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-16 05:43:54 +03:00
[PR #15575] [CLOSED] Fix unreachable local API URLs in NAT/Docker by respecting Published Server URIs #14352
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/jellyfin/jellyfin/pull/15575
Author: @martenumberto
Created: 11/19/2025
Status: ❌ Closed
Base:
master← Head:master📝 Commits (1)
6faf23eRespect Published Server URIs for local access URLs📊 Changes
2 files changed (+44 additions, -1 deletions)
View changed files
📝
CONTRIBUTORS.md(+1 -0)📝
Emby.Server.Implementations/ApplicationHost.cs(+43 -1)📄 Description
Description
This PR fixes an issue where Jellyfin returns unreachable internal IP addresses (e.g., Docker container IPs like
172.17.0.x) to clients whenGetApiUrlForLocalAccessis called. This behavior breaks functionality such as Live TV Direct Stream on Android TV clients running in a LAN environment different from the container's internal network.The Problem:
Previously,
GetApiUrlForLocalAccesschecked for CLI startup overrides but ignored the "Published Server URIs" configured in the Web Dashboard (NetworkConfiguration). Consequently, even if a user configured a correct LAN URL (e.g., viaall=orinternal=), the server would still broadcast its internal container IP for local access requests.The Solution:
The method has been updated to respect the
NetworkConfiguration. The logic priority is now:--published-server-url)internal=override (Best for LAN access in NAT)all=overrideRelated Issues
Fixes #15411
How to test
all=http://192.168.1.50:8096).GetApiUrlForLocalAccesslogic (often Direct Stream).http://172.x.x.x:8096...and fails/timeouts.http://192.168.1.50:8096...orhttps://mydomain.com...and plays successfully.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.