Clean up Xbox proxy: Remove obsolete Caddyfile and improve docs

- 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
This commit is contained in:
mani
2026-01-09 00:17:47 +01:00
parent c9ffefed70
commit 9e6b9fc1db
3 changed files with 22 additions and 28 deletions

View File

@@ -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
}
}

View File

@@ -1,6 +1,6 @@
# Jellyfin Xbox Codec Filter Proxy # 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 ## Problem
@@ -33,20 +33,35 @@ docker-compose up -d
## Funktionsweise ## 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 ## Logs
```bash ```bash
docker logs jellyfin-xbox-filter docker logs -f jellyfin-xbox-filter
``` ```
Zeigt wenn Xbox-Clients gefiltert werden: 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 ## Vorteile

View File

@@ -13,6 +13,7 @@ services:
restart: unless-stopped restart: unless-stopped
networks: networks:
- jellyfin - jellyfin
# IMPORTANT: No ports exposed! Only accessible via xbox-filter proxy
xbox-filter: xbox-filter:
build: . build: .
@@ -20,7 +21,7 @@ services:
depends_on: depends_on:
- jellyfin - jellyfin
ports: ports:
- "8096:8096" - "8096:8096" # This is the public-facing port
environment: environment:
- JELLYFIN_URL=http://jellyfin:8096 - JELLYFIN_URL=http://jellyfin:8096
restart: unless-stopped restart: unless-stopped