Show HN: I pipe free sports streams into Jellyfin – no ads, just HLS

Fans cheer, ethicists fume, and blackouts get roasted

TLDR: A DIY tool funnels free sports streams into home media apps without ads, sparking cheers from frustrated fans and side‑eye from ethics hawks. Commenters split between “finally watchable” and “this is wrong,” with blackouts and pricey subscriptions fueling the fire.

Hacker News lit up after a homelab tinkerer dropped a tiny tool that pipes those free, pop‑up‑infested sports streams straight into Jellyfin, skipping the ads entirely. The creator says the video is usually a normal web stream (HLS), and this script simply “translates” it so your media app can play nice. Translation: fewer sketchy tabs, more couch time.

The crowd split fast. Team Practical loved it for finally making sports watchable without a browser battle. One fan deadpanned that they “totally needed this,” while another asked if it’ll run in Docker and compared it to reliable paid IPTV services. Team Ethics fired the first flare: if the streams are “free” because of ads, cutting them out feels wrong. Cue the hottest take: it might be “more ethical” to pay for a pirated IPTV feed than to starve free sites of ad money. Internet, meet paradox.

Then came Team Fed Up, led by fans who say they tried paying but hit a wall of blackout rules and bundle madness. One baseball watcher ranted that services are “freaking insane” and still block home games unless you pay even more. The thread morphed into a group therapy session for sports subscribers.

Meanwhile, the techy bits got simplified: the tool tells sites “I’m a normal browser” and refreshes expiring links, keeping your playlist stable. No more token whack‑a‑mole. Love it or loathe it, the vibes were spicy. Repo’s here: hls-restream-proxy.

Key Points

  • hls-restream-proxy is a toolkit to restream HLS content to Jellyfin, Emby, and Plex by injecting required HTTP headers and rewriting playlists.
  • It includes hls-proxy.py (reverse proxy), refresh-m3u.sh (generates M3U), detect-headers.sh (finds necessary headers), and channels.conf for channel definitions.
  • The proxy auto-learns Referer per upstream host, caches fresh m3u8 URLs for one hour, and ensures segments route through the proxy, handling token refresh transparently.
  • Requirements are Python 3.8+ (stdlib only), bash, curl, and grep with PCRE; quick start covers cloning, configuring channels, starting the proxy, and generating an M3U.
  • Systemd units and a timer enable automated operation; Docker guidance specifies using the bridge gateway IP for the proxy URL, and a detector tool automates header discovery.

Hottest takes

"more ethical to sign up for a paid pirated IPTV service" — dewey
"all of them are freaking insane" — kstrauser
"The actual video underneath is just a standard HLS stream" — pruz
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.