+ We'll look into adding the channel and let you know once it's available.
+
+
+ Most channels are added within a few days.
+
+
+
+
+
+
+ )
+ }
+
+ return (
+
+ {/* Header */}
+
+
+
+
+
+
+
+
+ {/* Main Content */}
+
+
+
+
+
+
+
Request a Channel
+
+ Can't find a channel you're looking for? Let us know and we'll try to add it
+ to the Live TV lineup.
+
+
+ 3,468 Channels & Growing
+
+
+
+
+
+
+
Where do channels come from?
+
+ Jefflix Live TV pulls from the iptv-org community
+ lists—a massive open-source collection of publicly available IPTV streams from around the world.
+ We can also add custom M3U sources for channels not in the main list.
+
+
+ Not all channels can be added—availability depends on public stream sources. We'll do our best!
+
+
+
+
+
+ )
+}
diff --git a/backlog/tasks/task-2 - Integrate-Eleza-TV-for-live-sports-broadcasts.md b/backlog/tasks/task-2 - Integrate-Eleza-TV-for-live-sports-broadcasts.md
deleted file mode 100644
index 84e723d..0000000
--- a/backlog/tasks/task-2 - Integrate-Eleza-TV-for-live-sports-broadcasts.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-id: task-2
-title: Integrate Eleza TV for live sports broadcasts
-status: To Do
-assignee: []
-created_date: '2026-02-04 20:56'
-labels: []
-dependencies: []
-priority: high
-due_date: '2026-02-06'
-start_by: '2026-02-05'
----
-
-## Description
-
-
-Integrate Eleza TV (https://elezatv.com) as an IPTV source for live sports in Jellyfin. Eleza offers 40,000+ channels with EPG, SD/HD/FHD/4K quality, and 54,000+ VOD titles. Pricing: $69/yr for 1 connection, $96/yr for 2 connections. Need to: subscribe to a plan, get M3U/Xtream Codes credentials, configure Jellyfin Live TV & DVR with the IPTV source, set up EPG guide data, and replace the current Sportsnet-dependent sports button on jefflix.lol.
-
-
-## Acceptance Criteria
-
-- [ ] #1 Subscribe to Eleza TV plan (1 or 2 connections)
-- [ ] #2 Obtain M3U playlist URL or Xtream Codes API credentials
-- [ ] #3 Configure Jellyfin Live TV with Eleza TV IPTV source
-- [ ] #4 Set up EPG/TV guide data in Jellyfin
-- [ ] #5 Test live sports playback (e.g. NBA, NFL, Premier League)
-- [ ] #6 Update jefflix.lol Live Sports button to use new channels
-
diff --git a/backlog/tasks/task-2 - Integrate-IPTV-for-live-TV-Threadfin-iptv-org-Eleza-TV.md b/backlog/tasks/task-2 - Integrate-IPTV-for-live-TV-Threadfin-iptv-org-Eleza-TV.md
new file mode 100644
index 0000000..337b33e
--- /dev/null
+++ b/backlog/tasks/task-2 - Integrate-IPTV-for-live-TV-Threadfin-iptv-org-Eleza-TV.md
@@ -0,0 +1,61 @@
+---
+id: TASK-2
+title: Integrate IPTV for live TV (Threadfin + iptv-org + Eleza TV)
+status: In Progress
+assignee: []
+created_date: '2026-02-04 20:56'
+updated_date: '2026-03-22 22:08'
+labels: []
+dependencies: []
+priority: high
+---
+
+## Description
+
+
+Integrate Eleza TV (https://elezatv.com) as an IPTV source for live sports in Jellyfin. Eleza offers 40,000+ channels with EPG, SD/HD/FHD/4K quality, and 54,000+ VOD titles. Pricing: $69/yr for 1 connection, $96/yr for 2 connections. Need to: subscribe to a plan, get M3U/Xtream Codes credentials, configure Jellyfin Live TV & DVR with the IPTV source, set up EPG guide data, and replace the current Sportsnet-dependent sports button on jefflix.lol.
+
+
+## Acceptance Criteria
+
+- [ ] #1 Subscribe to Eleza TV plan (1 or 2 connections)
+- [ ] #2 Obtain M3U playlist URL or Xtream Codes API credentials
+- [ ] #3 Configure Jellyfin Live TV with Eleza TV IPTV source
+- [ ] #4 Set up EPG/TV guide data in Jellyfin
+- [ ] #5 Test live sports playback (e.g. NBA, NFL, Premier League)
+- [ ] #6 Update jefflix.lol Live Sports button to use new channels
+
+
+## Implementation Notes
+
+
+### 2026-03-22: IPTV Infrastructure Deployed
+- **Threadfin** container running on Netcup (`/opt/media-server/`)
+- Admin UI at `threadfin.jeffemmett.com` via Traefik
+- `tv.jefflix.lol` redirect → Jellyfin Live TV section configured
+- "Watch Live TV" + "Listen to Music" buttons added to jefflix.lol website
+- Using **iptv-org/iptv** (90k+ stars) for community-curated free channel lists
+
+**Still TODO:**
+- Configure Threadfin with M3U playlists (English, sports, news channels)
+- Add XMLTV EPG source for program guide
+- Configure Jellyfin Live TV tuner (M3U → `http://threadfin:34400/auto/v1/m3u`)
+- Add Cloudflare DNS CNAME for `tv.jefflix.lol`
+- Enable Threadfin web auth
+- Test playback end-to-end
+
+### 2026-03-22: IPTV Fully Deployed
+**All infrastructure live:**
+- Threadfin running at `threadfin.jeffemmett.com` (3,468 streams from iptv-org)
+- `tv.jefflix.lol` redirects to Jellyfin Live TV section
+- Jellyfin has 3 M3U tuners: English (2,269ch), News, Sports
+- 3,468 total Live TV channels available in Jellyfin
+- "Watch Live TV" + "Listen to Music" buttons on jefflix.lol website
+- Cloudflare DNS + tunnel configured for both subdomains
+
+**Remaining manual tasks:**
+- Set up Threadfin web auth (visit threadfin.jeffemmett.com → Settings)
+- Map XEPG channels in Threadfin for curated filtered playlist
+- EPG guide requires self-hosted iptv-org/epg generator (no pre-built guides available)
+- Eleza TV subscription still optional for premium sports content
+
diff --git a/docker-compose.yml b/docker-compose.yml
index 71f31f7..299a1b3 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -17,8 +17,8 @@ services:
- ADMIN_EMAIL=${ADMIN_EMAIL:-jeff@jeffemmett.com}
labels:
- "traefik.enable=true"
- - "traefik.http.routers.jefflix.rule=Host(`jefflix.lol`) || Host(`www.jefflix.lol`)"
- - "traefik.http.services.jefflix.loadbalancer.server.port=3000"
+ - "traefik.http.routers.jefflix-website.rule=Host(`jefflix.lol`) || Host(`www.jefflix.lol`)"
+ - "traefik.http.services.jefflix-website.loadbalancer.server.port=3000"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000/"]
interval: 30s