Lineup

Lineup

Docker app from am385's Repository

Overview

Lineup is an application that fetches Electronic Program Guide (EPG) data from a HDHomeRun network TV tuner and converts it into XMLTV format — the standard format used by media servers like Jellyfin and Plex for TV guide display. It includes a web-based dashboard, a terminal UI, live TV streaming with transcoding, and automatic scheduled EPG fetching with smart incremental updates.

Lineup

Lineup is a .NET application that fetches Electronic Program Guide (EPG) data from a network TV tuner device and converts it into XMLTV format — the standard format used by media servers like Jellyfin and Plex for TV guide display.

It includes a web-based dashboard, a terminal UI, live TV streaming with transcoding, and automatic scheduled EPG fetching with smart incremental updates.

Currently this is only supporting the HDHomeRun Tuners like the HDHomeRun FLEX 4K. Hopefully more can be added in the future.

Features

  • Automatic EPG fetching — background service with configurable interval and target days; reacts to settings changes in real time
  • Incremental fetching — determines a safe start time based on cached data, avoiding redundant API calls
  • XMLTV conversion — full-featured output including episode numbering, categories, artwork, original airdates, and new-episode markers
  • Live TV streaming — proxy with ffmpeg transcoding to HLS/fMP4 (profiles: mobile, heavy, internet 720/480/360)
  • Device diagnostics — connectivity checks across DNS, ping, HTTP API, TCP, and UDP discovery
  • Native HDHomeRun protocol — binary protocol implementation for UDP discovery, TCP control, and channel scanning
  • XMLTV endpoint/api/xmltv for external media servers to pull the guide file directly
  • SQLite caching — EPG data stored locally with automatic cleanup of expired entries

Architecture

Project Description
Lineup.HDHomeRun.Device Local device communication — discovery, channel lineup, native binary protocol
Lineup.HDHomeRun.Api Remote API client — fetches EPG data from api.hdhomerun.com
Lineup.Core Core business logic — orchestration, XMLTV conversion, caching (EF Core + SQLite)
Lineup.Web Blazor Server web app — dashboard, EPG guide viewer, settings, live TV
Lineup.Tui Terminal UI — interactive menu using Spectre.Console

Getting Started

Prerequisites

  • .NET 10 SDK
  • An HDHomeRun device on your local network
  • ffmpeg (required for live TV transcoding; included in the Docker image)

Running the Web App

cd src/Lineup.Web
dotnet run

The app starts on http://localhost:8080 by default. Configure the HDHomeRun device address through the settings UI or via the Lineup__DeviceAddress environment variable.

Running the TUI

cd src/Lineup.Tui
dotnet run

Configure via environment variables:

  • Lineup__DeviceAddress — HDHomeRun device IP or hostname
  • Lineup__DatabasePath — path to the SQLite cache database

Docker

docker compose up -d

Or using the production image:

docker compose -f docker-compose.prod.yml up -d

The Docker image includes ffmpeg for live TV transcoding. Data is persisted via a named volume at /config. Use network_mode: host if your HDHomeRun device requires local network discovery.

Configuration

All settings are configurable through the web UI's settings page and persisted to settings.json:

Setting Description
Device Address HDHomeRun device IP or hostname
XMLTV Output Path Where to write the generated XMLTV file
Fetch Interval Minutes between automatic EPG fetches
Target Days Number of days of EPG data to fetch

Tech Stack

  • .NET 10 — target framework for all projects
  • Blazor Server — interactive web UI
  • Entity Framework Core + SQLite — EPG data caching
  • Spectre.Console — terminal UI rendering
  • Serilog — structured logging
  • ffmpeg — live TV stream transcoding

License

This project is licensed under the GNU General Public License v3.0.

Install Lineup on Unraid in a few clicks.

Find Lineup in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Lineup Review the template variables and paths Click Install

Download Statistics

2,414
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
am385/lineup
Last Updated2026-02-26
First Seen2026-03-04

Runtime arguments

Web UI
http://[IP]:[PORT:8080]
Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart=unless-stopped

Template configuration

Web Interface (HTTP)Porttcp

This is the Web UI port for the application.

Target
8080
Default
8080
Web Interface (HTTPS)Porttcp

Optional - Https webUI (you need to set up your own certificate).

Target
8443
Default
8443
AppdataPathrw

This is the container path to your configuration files, e.g. databases, configuration files, logs etc.

Target
/config
Default
/mnt/user/appdata/lineup
Path: /xmltvPathrw

This is the container path to where the XMLTV file will be stored.

Target
/xmltv
Variable: PUIDVariable

User ID for the running container

Target
PUID
Default
99
Variable: PGIDVariable

Group ID for the running container

Target
PGID
Default
100
Variable: UMASKVariable

UMASK for the running container

Target
UMASK
Default
000