livetv/README.md
Заид Омар Медхат bcdb211253
Some checks failed
Deploy / deploy (push) Failing after 58s
readme
2026-07-25 22:07:04 +05:00

63 lines
2.4 KiB
Markdown

# livetv
Self-hosted live-TV stack: an Xtream IPTV source is mirrored through this VPS and
served to **Jellyfin** so it can be watched ad-free in Jellyfin's apps.
```
Xtream provider (API only)
│ player_api.php (URL + username + password)
Dispatcharr ← ingests via the Xtream API, regenerates a clean
│ HDHomeRun tuner + M3U + EPG
Jellyfin ← Live TV: adds Dispatcharr as a tuner + guide
Jellyfin apps (HTTPS via Nginx Proxy Manager)
```
Both services run on the shared external Docker network **`proxy`**, where
Nginx Proxy Manager (NPM) reaches them by name — no raw host ports are opened.
## Services
| Service | Internal address | Public (via NPM) |
|--------------|-------------------------|--------------------------------------|
| `jellyfin` | `jellyfin:8096` | `https://jellyfin.altricade.com` |
| `dispatcharr`| `dispatcharr:9191` | `https://dispatcharr.altricade.com` (admin, behind an Access List) |
## Deploy
Pushing to `master` triggers `.forgejo/workflows/deploy.yaml`, which runs
`docker compose up -d` on the VPS runner. The compose project name is pinned to
`livetv` so the named volumes persist across deploys.
```bash
git add -A
git commit -m "..."
git push origin master
```
## NPM proxy hosts
Create two hosts (both forward over the `proxy` network, scheme `http`, Websockets on, SSL via Let's Encrypt):
- `jellyfin.altricade.com``jellyfin` : `8096`
- `dispatcharr.altricade.com``dispatcharr` : `9191` (add an **Access List** — this is the admin UI)
## First-time configuration
1. **Dispatcharr** (`https://dispatcharr.altricade.com`): create admin login →
add an **Xtream Codes** account (server URL + username + password) → let it
scan channels via the API → add the EPG source.
2. **Jellyfin** (`https://jellyfin.altricade.com`): Dashboard → Live TV →
- Tuner Devices → add **HDHomeRun** `http://dispatcharr:9191` (or an M3U Tuner).
- TV Guide Data → add **XMLTV** using Dispatcharr's EPG URL.
- Refresh guide and map channels.
## Notes
- No credentials are stored in this repo. The Xtream login is entered in the
Dispatcharr UI and lives in the `dispatcharr_data` volume on the VPS.
- Confirm the shared network is named `proxy` (`docker network ls`); adjust
`docker-compose.yaml` if NPM is on a different network.