All apps · 0 apps
Headendarr
Docker app from Josh.5's Repository
Overview
Headendarr is a powerful management layer for TVHeadend,
designed to simplify the orchestration of IPTV sources.
It provides a modern, intuitive interface for channel
mapping, EPG aggregation, and playlist filtering, acting
as a centralised hub for your personal streaming
environment.
Headendarr acts as a high-performance proxy for M3U and
HDHomeRun clients, supporting Plex, Emby, Jellyfin, and
Kodi.
- Scalable Channel Management: Effortlessly manage and
curate IPTV playlists with tens of thousands of channels. - EPG Automation: Aggregate multiple XMLTV sources with
automatic metadata enrichment for programme icons and
descriptions. - Integrated HLS Proxy: Features segment caching and
intelligent pre-caching for superior stream stability and
smoothness. - Connection Sharing: Serves multiple local clients from
a single upstream connection to maximise your provider's
limits. - Automated TVH Orchestration: Headendarr actively
maintains your TVHeadend backend, automatically configuring
networks, muxes, and services based on your curated lineup. - Multi-User Sandboxing: Create independent users with
their own streaming keys and private DVR sandboxes.
IPTV sources and your end clients.
It removes the steep learning curve of setting up TVHeadend
for IPTV by automating the complex configuration of
networks, muxes, and EPG mapping. Advanced Configuration: LIMIT CPU USE:
- Toggle this Docker Container template editor to
"Advanced View". - In the "Extra Parameters" field, add "--cpus='1'".
This value depends on the number of cores available to the
container. To limit to 50%, set this value to 0.5 * n
cores. If you have 2 cores available to this container,
"--cpus='.5'" will equal 25% of that available CPU
resources. To limit the CPU cores available to the
container, use "CPU Pinning"
- Toggle this Docker Container template editor to
"Advanced View". - In the "Extra Parameters" field, add "--memory='1g'".
Tvheadend and Headendarr can use on average around 100MiB -
500 MiB of RAM for various tasks.
Even though limiting RAM is unnecessary as this container
should not ever need more than 1GB RAM it is good practice
to do so.
If you use DVB tuners and/or hardware acceleration, map the
device paths using "Extra Parameters" in Advanced View.
Example (both DVB + DRI):
"--device=/dev/dvb:/dev/dvb --device=/dev/dri:/dev/dri"
Example (DVB only):
"--device=/dev/dvb:/dev/dvb"
Example (DRI only):
"--device=/dev/dri:/dev/dri"
After applying device mappings, restart the container.
Readme
View on GitHubHeadendarr

Read the Documentation
The documentation site is the source of truth for setup and usage:
Start here:
Headendarr is a simple wrapper around TVHeadend with the singular goal of making it simple to configure TVHeadend for IPTV playlist.
TVHeadend is an extremely powerful TV streaming server and recorder with excellent support for IPTV sources. However, for most people, setting this up can be difficult and time-consuming. The goal of this project is to wrap around TVHeadend and, using its API, configure most of the server for you.
Project Status
This project is actively maintained and open to issues, feature requests, and pull requests.
Please use the issue template or PR template when contributing so reports and changes are easier to review and action.
You can also join the community on Discord.
Table Of Contents
Development
If you want to develop this project or contribute in any way, that would be much appreciated. Follow this document to set up a development environment and run the project locally:
Project stats
Star History
License
This projected is licensed under the Apache 2.0 Licence.
Copyright (C) Josh Sunnex - All Rights Reserved.
Install Headendarr on Unraid in a few clicks.
Find Headendarr 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.
Categories
Download Statistics
Related apps
Explore more like this
Explore allLinks
Details
josh5/headendarr:latestRuntime arguments
- Web UI
http://[IP]:[PORT:9985]/- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Main webUI Port. This is the port that will be used to access and configure everything.
- Target
- 9985
- Default
- 9985
- Value
- 9985
Tvheadend WebUI Port. This is used for streaming clients to connect to TVH via HTTP.
- Target
- 9981
- Default
- 9981
- Value
- 9981
Tvheadend HTSP Port. This is used for streaming clients to connect to TVH via HTSP.
- Target
- 9982
- Default
- 9982
- Value
- 9982
Where Headendarr stores its configuration files.
- Target
- /config
- Default
- /mnt/user/appdata/headendarr
- Value
- /mnt/user/appdata/headendarr
A temporary storage area used by the Channel Stream Orchestrator (CSO) for local segmented ingest and output handoff. It is highly recommended to map this to a RAM-based location (e.g., /dev/shm/headendarr) to improve performance and avoid disk wear. This path requires approximately 50MB of space per concurrent VOD stream. On Unraid, /dev/shm defaults to 50% of host RAM, which is typically sufficient.
- Target
- /tmp/cache
- Default
- /dev/shm/headendarr
- Value
- /dev/shm/headendarr
Where TVHeadend will save its recordings.
- Target
- /recordings
- Default
- /mnt/user/appdata/headendarr/recordings
- Value
- /mnt/user/appdata/headendarr/recordings
Where TVHeadend will store temporary timeshift buffer data. It is highly recommended to map this to a RAM-based location (e.g., /tmp or /dev/shm) or a dedicated tmpfs mount to avoid excessive disk wear, especially on spinning drives.
- Target
- /timeshift
- Default
- /mnt/user/appdata/headendarr/timeshift
- Value
- /mnt/user/appdata/headendarr/timeshift
Where Headendarr will write VOD library export files under /library for downstream apps such as Jellyfin. This is used for generated `.strm` files and the HTTP library metadata cache.
- Target
- /library
- Default
- /mnt/user/appdata/headendarr/library
- Value
- /mnt/user/appdata/headendarr/library
Process User ID
- Default
- 99
- Value
- 99
Process Group ID
- Default
- 100
- Value
- 100
System Timezone
- Default
- Etc/UTC
- Value
- Etc/UTC
See https://headendarr.github.io/Headendarr/configuration/connectivity/plex for more details. Defines one or more Plex Media Servers that Headendarr should manage for Live TV and DVR integration. When set, Headendarr uses it to enable the Plex settings page and automatically create, update, and keep Plex HDHomeRun/XMLTV tuner configuration in sync.
See https://headendarr.github.io/Headendarr/configuration/epgs for more details. Used for optional TMDB EPG metadata enrichment. Set this to either your TMDB API Read Access Token or your TMDB API Key from https://www.themoviedb.org/settings/api.
How long inactive cached VOD movies and episodes are kept in /timeshift/vod before automatic cleanup. Value is in minutes. Example: 10080 keeps cached VOD files for up to one week.
- Target
- TIC_VOD_CACHE_RETENTION_MINUTES
- Default
- 10
- Value
- 10