From 9e6b9fc1dbea7acebe3ab6e5560a9cc0e3964554 Mon Sep 17 00:00:00 2001 From: mani Date: Fri, 9 Jan 2026 00:17:47 +0100 Subject: [PATCH] Clean up Xbox proxy: Remove obsolete Caddyfile and improve docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove Caddyfile (Python proxy handles everything) - Clarify that REQUEST body is filtered, not response - Add better log examples showing actual output - Add docker-compose comments about port exposure - Explain filtering flow: User-Agent detection → JSON parsing → Codec filtering --- docker/jellyfin-xbox-proxy/Caddyfile | 22 ---------------- docker/jellyfin-xbox-proxy/README.md | 25 +++++++++++++++---- docker/jellyfin-xbox-proxy/docker-compose.yml | 3 ++- 3 files changed, 22 insertions(+), 28 deletions(-) delete mode 100644 docker/jellyfin-xbox-proxy/Caddyfile diff --git a/docker/jellyfin-xbox-proxy/Caddyfile b/docker/jellyfin-xbox-proxy/Caddyfile deleted file mode 100644 index 47309e8..0000000 --- a/docker/jellyfin-xbox-proxy/Caddyfile +++ /dev/null @@ -1,22 +0,0 @@ -:8096 { - # Forward all requests to Jellyfin - reverse_proxy jellyfin:8096 { - # Pass through headers - header_up Host {host} - header_up X-Real-IP {remote_host} - header_up X-Forwarded-For {remote_host} - header_up X-Forwarded-Proto {scheme} - } - - # Handle Xbox codec filtering via external handler - @xbox_playback { - path /Users/*/Items/*/PlaybackInfo - method POST - header User-Agent *Xbox* - } - - handle @xbox_playback { - # Forward to Python filter service - reverse_proxy http://xbox-filter:5000 - } -} diff --git a/docker/jellyfin-xbox-proxy/README.md b/docker/jellyfin-xbox-proxy/README.md index a3aae8f..a027f3d 100644 --- a/docker/jellyfin-xbox-proxy/README.md +++ b/docker/jellyfin-xbox-proxy/README.md @@ -1,6 +1,6 @@ # Jellyfin Xbox Codec Filter Proxy -Transparenter Reverse Proxy der AV1 und Opus aus DeviceProfiles für Xbox-Clients filtert. +Transparenter Python-basierter Reverse Proxy der AV1 und Opus aus DeviceProfiles für Xbox-Clients filtert. ## Problem @@ -33,20 +33,35 @@ docker-compose up -d ## Funktionsweise ``` -Xbox Client → Port 8096 (Proxy) → Filtert Response → Jellyfin (intern) +Xbox Client → Port 8096 (Python Proxy) → Filtert REQUEST → Jellyfin (intern) ↓ - Entfernt AV1/Opus aus DeviceProfile + Entfernt AV1/Opus aus DeviceProfile im Request-Body ``` +Der Proxy interceptiert `POST /Users/*/Items/*/PlaybackInfo` Requests: +1. Erkennt Xbox via `User-Agent: ... WebView2 Xbox` +2. Parsed den JSON Request-Body +3. Filtert AV1 aus VideoCodec und Opus aus AudioCodec +4. Sendet modifizierten Request an Jellyfin + ## Logs ```bash -docker logs jellyfin-xbox-filter +docker logs -f jellyfin-xbox-filter ``` Zeigt wenn Xbox-Clients gefiltert werden: ``` -INFO - Filtering Xbox DeviceProfile for User-Agent: Mozilla/5.0 ... WebView2 Xbox +INFO - Xbox PlaybackInfo request detected: Users/.../Items/.../PlaybackInfo, User-Agent: Mozilla/5.0 ... WebView2 Xbox +INFO - Filtering Xbox DeviceProfile in REQUEST +INFO - DeviceProfile filtered successfully in REQUEST +``` + +Bei Problemen: +``` +WARNING - No DeviceProfile found in REQUEST body +WARNING - No request body found for PlaybackInfo +ERROR - Error filtering request: ... ``` ## Vorteile diff --git a/docker/jellyfin-xbox-proxy/docker-compose.yml b/docker/jellyfin-xbox-proxy/docker-compose.yml index 0925e6d..21bffa5 100644 --- a/docker/jellyfin-xbox-proxy/docker-compose.yml +++ b/docker/jellyfin-xbox-proxy/docker-compose.yml @@ -13,6 +13,7 @@ services: restart: unless-stopped networks: - jellyfin + # IMPORTANT: No ports exposed! Only accessible via xbox-filter proxy xbox-filter: build: . @@ -20,7 +21,7 @@ services: depends_on: - jellyfin ports: - - "8096:8096" + - "8096:8096" # This is the public-facing port environment: - JELLYFIN_URL=http://jellyfin:8096 restart: unless-stopped