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:
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user