SurfArr

free · open source · self-hosted

Classic TV, on a schedule again.

SurfArr turns YouTube playlists into real channels. Fox Kids, Cartoon Cartoons, Kids WB, Disney Afternoon, Nick at Nite, MST3K, G4 and classic game shows, running 24/7 on a shared clock. Tune in from Plex, Jellyfin, Emby or any IPTV app. No recordings, no queue, no algorithm. Just TV.

Channels
50+
On the air
24/7
Price
$0
How it works

Playlists in. Broadcast out.

  1. CH 01

    Curated playlists

    Full episodes from YouTube and the Internet Archive, vetted so every channel sticks to the show. No reactions, reviews, clips or Shorts.

  2. CH 02

    A shared clock

    A seeded daily schedule means everyone who tunes in sees the same episode at the same moment. Miss it and it's gone, like real TV.

  3. CH 03

    Your TV, your apps

    SurfArr shows up as an HDHomeRun tuner in Plex, Jellyfin and Emby, and serves M3U + XMLTV for everything else.

The listings

Just like real TV. Better remote.

Everything that ships in the box, scribbled in the back of a notebook.

8:00

Networks of yesteryear

Fox Kids, Cartoon Cartoons, Kids WB, Disney Afternoon, Nick at Nite, Classic Nickelodeon, Saturday Morning, MST3K, G4, Classic Game Shows, Sci-Fi Originals and more, plus a decade-by-genre dial.

8:30

HDHomeRun emulation

Auto-discovered by Plex, Jellyfin and Emby using the real HDHomeRun discovery protocol. Add it like an antenna.

9:00

Live 24/7 channels Live

Always-on live streams sit right next to the retro lineup. Tune in and it's simply on the air.

9:30

M3U + XMLTV guide

A standard playlist and a 24-hour program guide that any IPTV player understands, from TiviMate to VLC.

10:00

Virtual clock

A seeded shuffle keeps every viewer in sync. The same show is on for everyone, everywhere.

10:30

Clean channels

Full episodes only, in English, no compilations. A nightly check drops anything that went private or got removed.

11:00

Plugins

Add your own channels with a few lines of YAML, or install community channels from the built-in Plugin Store.

11:30

TV Mode

A full-screen CRT set in the browser. Surf with the arrow keys or punch in a channel number like a real remote.

12:00

One container

FFmpeg and yt-dlp included, amd64 and arm64. Synology, Unraid, a Raspberry Pi or your desktop.

12:30

Web dashboard

See what's on, flip channels on and off, browse the guide and report broken videos from any browser.

Works with your stack

Plug into what you already watch on.

  • Plex
    Live TV & DVR
  • Jellyfin
    HDHomeRun tuner
  • Emby
    HDHomeRun tuner
  • Any IPTV app
    M3U + XMLTV
Install

On the air in one command.

Docker is the quickest way in. On Linux, host networking lets your media server discover the tuner by itself.

  1. Save the compose file and run docker compose up -d
  2. Open the dashboard at http://<your-ip>:8888
  3. Add the tuner in Plex / Jellyfin / Emby, guide at /epg.xml
# Linux (Synology, Unraid, Proxmox, Pi): host networking for auto-discovery
services:
  surfarr:
    image: f00d4tehg0dz/surfarr:latest
    container_name: surfarr
    restart: unless-stopped
    network_mode: host
    volumes:
      - retroarr-db:/app/server/db
    environment:
      - REMOTE_API_URL=https://retroarr-api.f00d.me
      - TZ=America/New_York

volumes:
  retroarr-db:
SURFARR 486DX