Skip to content

Latest commit

 

History

129 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SignalHaven logo

SignalHaven - BETA

Your channels. Your recordings. Your server.

A self-hosted live TV and DVR server for HDHomeRun, IPTV, and HLS sources. Browse a unified guide, watch from any modern browser, and keep recordings on storage you control.

Get started · Configuration · Contributing

CI status Container image on GitHub Container Registry

SignalHaven program guide in dark mode

Why SignalHaven?

SignalHaven brings live television, guide data, scheduling, and playback together in one responsive web app—without sending your viewing history or recordings to a hosted service.

  • Watch live TV with an in-player mini guide and channel switching.
  • Pause and rewind live streams with a configurable rolling time-shift buffer.
  • Record once or automatically with one-off schedules, series rules, retention controls, and conflict visibility.
  • Browse one unified guide backed by HDHomeRun guide data or XMLTV sources.
  • Manage your lineup by searching, sorting, favoriting, hiding, reordering, and merging duplicate channels across tuners with automatic source fallback.
  • Play recordings in the browser with resume progress, captions, and optional Comskip commercial markers.
  • Adapt playback to your hardware with direct streaming, quality profiles, and optional VideoToolbox, VA-API, Quick Sync, or NVENC acceleration.
  • Use it anywhere on your network through a responsive light- and dark-mode interface.
More screenshots

Desktop

Light Dark
SignalHaven guide on desktop in light mode SignalHaven guide on desktop in dark mode

Mobile

Light Dark
SignalHaven guide on mobile in light mode SignalHaven guide on mobile in dark mode

Get started

The recommended installation uses Docker Compose and includes PostgreSQL, FFmpeg, automatic database migrations, health checks, and persistent volumes.

What you need

  • Docker Engine with Docker Compose
  • A supported TV source: HDHomeRun, an M3U/M3U8 playlist, or a direct HLS stream
  • Guide data from a supported HDHomeRun subscription or an XMLTV URL/file if you want program listings
  • Enough local storage for your recordings and live TV buffer

Install

git clone https://github.com/rrainn/SignalHaven.git
cd SignalHaven
cp .env.example .env

Open .env and replace the default PGPASSWORD with a strong, unique password. Then start SignalHaven:

docker compose up -d

Open http://localhost:3000. Your first step is to create the local administrator account; SignalHaven stores only its username and password hash. The first-run wizard then helps you add a tuner, connect guide data, choose a recordings folder, and review channel mapping.

The administrator can create password-only standard accounts from Settings. Each account has an independent recording library, series rules, guide annotations, channel preferences, appearance, and playback preferences. Standard accounts cannot open global Settings or manage tuners, guide sources, channel topology, diagnostics, or other accounts. See Local accounts and sessions for the complete security and upgrade behavior.

On a Linux Docker host, enable automatic iOS and macOS discovery with the optional Bonjour sidecar:

docker compose --profile bonjour up -d

The sidecar is published separately, uses host networking for link-local multicast, and advertises the required canonical PUBLIC_URL. Configure its HTTPS reverse proxy and local DNS before enabling the profile. See HTTPS service discovery with Bonjour for the deployment and migration contract.

Your database and recordings persist in Docker volumes. To use an existing PostgreSQL server or change storage and playback behavior, see the configuration reference.

Important

SignalHaven is designed for a trusted home network. Local accounts protect libraries and administrative APIs, and Bonjour clients still require an HTTPS reverse proxy. Built-in authentication and HTTPS do not by themselves make an internet-facing DVR safe; use a carefully maintained reverse proxy, rate limits, firewall or VPN controls, and an appropriate threat model before exposing it outside the trusted network.

Update

Review the release notes, then pull and restart the stack:

docker compose pull
docker compose up -d

For reproducible deployments, set SIGNALHAVEN_IMAGE in .env to a numbered release instead of latest.

The main and Bonjour images are published under matching release tags. Prerelease images are published under both their exact version and a moving channel tag. For example, v0.2.0-beta.2 publishes ghcr.io/rrainn/signalhaven:0.2.0-beta.2 and ghcr.io/rrainn/signalhaven:beta, with the same tags under ghcr.io/rrainn/signalhaven-bonjour; alpha versions similarly update :alpha. These images do not update :latest or stable major/minor tags. Mark the GitHub Release as a prerelease when publishing it, then set SIGNALHAVEN_IMAGE to the exact version or channel tag to test it.

Supported TV sources

Source What SignalHaven supports Guide data
HDHomeRun Network discovery, channel import, live TV, and tuner-aware recording Configured automatically; SiliconDust's guide feed requires an HDHomeRun DVR guide subscription
IPTV / M3U Remote M3U or M3U8 playlists, channel metadata, and live TV Optional XMLTV URL; channels are matched using playlist metadata such as tvg-id
Generic HLS A direct M3U8 stream represented as one virtual channel Add a separate XMLTV source if guide data is available

SignalHaven can also use additional remote or local XMLTV sources when your tuner does not provide guide data.

Documentation

Resource Use it for
Configuration Environment variables, storage, transcoding, time shifting, lineup sync, UI preferences, and observability
Accounts Account bootstrap, roles, sessions, private libraries, upgrades, and security boundaries
Architecture Services, runtime flow, recording lifecycle, and repository design
Design and brand guide Product voice, visual system, and brand assets
Contributing guide Local development, validation commands, and pull request expectations
OpenAPI specification API reference from a running SignalHaven server

Contributing

Contributions are welcome. SignalHaven is a pnpm monorepo with a Next.js frontend, an Express API, PostgreSQL through Drizzle ORM, and shared Zod schemas.

To start a development environment:

pnpm install --frozen-lockfile
cp .env.example .env
docker compose up -d postgres
pnpm run dev

Before opening a pull request, run the project validation suite:

pnpm run format:check
pnpm run lint
pnpm run typecheck
pnpm test
pnpm run build

Read CONTRIBUTING.md for prerequisites, repository layout, resource-bounded preview commands, and contribution expectations. If you have found a bug or want to propose a feature, open an issue.

AI Disclaimer

I used AI extensively to build this application. While I understand that some people may have concerns about AI-generated code, I believe it is a tool that when used effectively can help developers create better software than they could on their own. This application would still be sitting on my todo list if it wasn't for AI. I have personally reviewed all of the code, and I am confident it meets my standards. However, like humans, AI can make mistakes, so please report any issues you find.

Piracy Statement

SignalHaven and rrainn LLC do not endorse piracy or any other illegal use of the software. SignalHaven is free, open-source software, and we do not monitor or control how users choose to operate it; users are solely responsible for complying with applicable laws and respecting copyright.

License

MIT License

Copyright 2026 rrainn LLC

SignalHaven is not affiliated with SiliconDust, the makers of HDHomeRun.

About

A self-hosted live TV and DVR server for HDHomeRun, IPTV, and HLS sources.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages