No description
- Python 97.3%
- Dockerfile 2.7%
|
All checks were successful
Build and Push / build-and-push (push) Successful in 2m24s
|
||
|---|---|---|
| .forgejo/workflows | ||
| yt2plex-poller | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
📄 [README.md]
YT2Plex + xTeVe + Plex — Docker Stack
Automatically monitor YouTube channels for live streams and expose them inside **Plex Live TV / DVR** so you can watch and record them like any other TV channel. Built for long events like **24H endurance races** (FIA WEC, Le Mans) and **WRX / rally** streams on YouTube.
How it works
YouTube channels
│
▼
[yt2plex-poller] ← polls every N seconds via YouTube Data API + yt-dlp
│ writes playlist.m3u + guide.xml to /shared
▼
[xTeVe] ← reads files, exposes a virtual HDHomeRun tuner on :34400
│
▼
[Plex] → Live TV → DVR recording of race streams
└── optional: auto guide-reload via REST API
Prerequisites
| Requirement | Notes |
|---|---|
| Docker + Docker Compose v2 | docker compose (not docker-compose) |
| Plex Pass | Required for Plex DVR / Live TV recording |
| YouTube Data API v3 key | Free quota: 10,000 units/day |
| YouTube Channel IDs | See lookup tool in References |
Quick Start
1. Prepare the stack folder
mkdir yt2plex-xteve-stack && cd yt2plex-xteve-stack
# place docker-compose.yml, .env.example, and yt2plex-poller/ inside
cp .env.example .env && nano .env
2. Fill in .env
Minimum required:
YOUTUBE_API_KEYYOUTUBE_CHANNELSXTEVE_URL
3. Start
docker compose up -d
:::info First start builds the poller image (~1–2 min).
:::
4. Connect xTeVe → Plex
- Open xTeVe:
http://<server-ip>:34400 - Setup Wizard → M3U → path:
/shared/playlist.m3u - Setup Wizard → XMLTV → path:
/shared/guide.xml - In Plex: Settings → Live TV & DVR → Set Up Plex DVR
- Plex will auto-discover xTeVe via host networking
5. Enable FFmpeg buffering in xTeVe (required)
xTeVe → Settings → Streaming → Stream Buffer: FFmpeg
6. Enable API in xTeVe
xTeVe → Settings → General → API Interface: On