Benutzer-Werkzeuge

Webseiten-Werkzeuge


content:serverbasics:docker-tvheadend
This version is outdated by a newer approved version.DiffThis version (2026/01/28 21:03) is a draft.
Approvals: 0/1
The Previously approved version (2026/01/28 19:46) is available.Diff

Dies ist eine alte Version des Dokuments!


Docker: TVHeadend

Very good community- Project to watch tv over network. Supports IPTV and DVB-S, like my Astra 19.2 Satellite Dash.

Forum/Docs: https://tvheadend.org/

IPTV- Channels Worldwide: https://github.com/iptv-org/iptv

or Kodinerds: https://github.com/jnk22/kodinerds-iptv

Satellite Dash Astra 19.2

Server- Web GUI TvHeadend (HTTP-Port 8891 and Stream 9982)

Clients can connect with E.g. Kodi and HTS- Addon on Port 9982 using the User, which can be created at first setup.

Hardware

I bought the PCIe/Twin-/ DVB-S- Card „Cine V7“ of Digital Devices, which i consider best choice for Linux.

Check with lspci „03:00.0 Multimedia controller: Digital Devices GmbH Cine V7“, it should be autoloaded with Kernel-Module STV0910.

Access to DVB- Inputs

Install linux- drivers video4linux:

  • sudo zypper in v4l-utils

If you have your DVB- Card in /dev/dvb, check if the settings allow user access like this:

pcserver2023:~ # sudo ls -l /dev/dvb/adapter*
/dev/dvb/adapter0:
total 0
crwxrwxrwx 1 root video 212, 0 Aug 27 18:22 demux0
crwxrwxrwx 1 root video 212, 1 Aug 27 18:22 dvr0
crwxrwxrwx 1 root video 212, 3 Aug 27 18:22 frontend0
crwxrwxrwx 1 root video 212, 2 Aug 27 18:22 net0

/dev/dvb/adapter1:
total 0
crwxrwxrwx 1 root video 212, 4 Aug 27 18:22 demux0
crwxrwxrwx 1 root video 212, 5 Aug 27 18:22 dvr0
crwxrwxrwx 1 root video 212, 7 Aug 27 18:22 frontend0
crwxrwxrwx 1 root video 212, 6 Aug 27 18:22 net0

If not, you need a new udev-rule. Create a file to look like this:

pcserver2023:~ # cat /etc/udev/rules.d/75-dvb.rules
SUBSYSTEM=="dvb", MODE:="0777"

Mind the : after Mode, otherwise this will not work!

After a restart, your DVB- Devices should look like above and TVHeadend will work.

Installing w_scan_cpp

Meanwhile, the old w_scan has become obsolete. It was replaced by w_scan_cpp. Unfortunatelly w_scan_cpp is not delivered by opensuse any more.

I got a working binary at https://github.com/wirbel-at-vdr-portal/w_scan_cpp-binaries like

The Docs can be found here: https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html

Where i needed to install librepfunc from here: https://build.opensuse.org/repositories/home:seife:vdrdevel/librepfunc

To check, if this works, try this command (while this example is for Astra 19.2E Sattelite):

./w_scan_cpp -fs -sS19E2 --femon "SAT.1 Gold HD;ProSiebenSat.1:11111:HC23M5O35P0S1:S19.2E:22000:255=27:0;259=deu@106:32:1830,1860,1843,98C,9C4,186A,98D,186D,1842,4B64,4AF4:12500:1:1043:0"
*******************************************************************************
* w_scan_cpp Version 20231015
******************************************************************************
Device0 dvb:a0f0: ST STV0910
Device1 dvb:a1f0: ST STV0910
monitoring device 'ST STV0910'
lock 0 | signal 0% |
lock 1 | signal 72.58dBuV  | quality 81% | snr 12.90dB |
lock 1 | signal 72.57dBuV  | quality 81% | snr 12.90dB |

This command can be used to adjust your sattelite: look for the best snr at the right (other Values are not really important for best values). The Value should be somewhere from 11-13. Values under 10 are not good.

Now you have the best alignment to your sattelite.

Optional: Create a channel-file

If you want to, you can create a channel- file for later use:

./w_scan_cpp -fs -sS19E2 -x>channel_list_dvbv5.conf

Docker Compose

This is WIP (but works!)

Source for Docs: https://github.com/tvheadend/tvheadend/blob/master/README.Docker.md

You need

As docker-user:

Create a Folder in docker_compose named tvheadend and a Folder for Records:

docker@pcserver2023:~/docker_compose> mkdir -p /home/docker/docker_compose/tvheadend
docker@pcserver2023:~/docker_compose> mkdir -p /home/docker/videorecords

Mind, that the Folder for recordings MUST have the same uid and gid than the HTS- User in the container, which may not be known users to the host.

So after docker- service is started, double check the permissions. As reference, you can check the File on your volume (after docker is running):

docker@pcserver2023:~/docker_compose> sudo ls -l /home/docker/.local/share/docker/volumes/pcserver2023_tvheadend/_data
[ ... ]
drwxrwxr-x 2 166530 166530       6 22. Aug 22:36 recordings
[ ... ]

These permissions must be the same on /home/docker/docker_compose/tvheadend !

Create the file docker-compose.yml in docker_compose/tvheadend folder.

Currently the content looks like that:

services:
  tvheadend:
# Bug in current image (20250823): https://github.com/tvheadend/tvheadend/issues/1901
# After resolve, the latest Tag should be used!
#    image: ghcr.io/tvheadend/tvheadend:latest
    image: ghcr.io/tvheadend/tvheadend:master-debian
    cap_drop:
      - all
    ulimits:
      nproc: 256
      nofile:
        soft: 8192
        hard: 65535
    devices:
      - /dev/dvb/
# See Volumes/localtime
#    environment:
#      TZ: Europe/Berlin
    volumes:
      - tvheadend:/var/lib/tvheadend:rw
      - /home/docker/videorecords:/var/lib/tvheadend/recordings:rw
      - /etc/localtime:/etc/localtime:ro
    networks:
      - default
    ports:
      - "9981-9982:9981-9982/tcp"
    command: --config '/var/lib/tvheadend' --nosatip --firstrun
    restart: unless-stopped
#Not working on master-debian:
#    healthcheck:
#      test: wget -O - -q 'http://dockerstack-tvheadend-1:9981/ping' | grep -q 'PONG'

# Still needs to be defined while without it won't enable ipv6
networks:
  default:
    driver: bridge
    enable_ipv6: true

volumes:
  tvheadend:

You can now statup that container with docker compose up -d and navigate to http://localhost:9981 to set up TVheadend for the first start.

Caddy Service

After getting an Domainname and setting up DyDNS, add the Service to you Caddyfile ( https://obel1x.de/dokuwiki/doku.php?id=content:serverbasics:docker-caddy#caddy_configuration )

Add to Caddyfile:

# TVHeadend
https://tvheadend.domain.tld:443 {
        header Strict-Transport-Security max-age=31536000;
        reverse_proxy pcserver2023-tvheadend-1:9981
}

Mind, that this will only open the administration web-gui for TVH.

Watching TV with e.g. Kodi needs port 9982 opened at your firewall. You may *not* want that port to be reached from the Internet (or will you??? - well its up to you).

===== Client: Kodi

On Fedora: Do NOT use Discover to install kodi , because the Flathub Version does NOT support binary addons. You need binary addons.

First, install RPM- Fusion and then

sudo dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install kodi kodi-inputstream-adaptive kodi-pvr-hts

You should also create a new user in tvheadend, who is only able to watch tv - no webgui, nothing else.

Now you start kodi , enable the pvr- addon and enter the credentials. It should work and you should see channels in TV popping up.

===== Client: Kodi

On Fedora: Do NOT use Discover to install kodi , because the Flathub Version does NOT support binary addons. You need binary addons.

First, install RPM- Fusion and then

sudo dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install kodi kodi-inputstream-adaptive kodi-pvr-hts

You should also create a new user in tvheadend, who is only able to watch tv - no webgui, nothing else.

Now you start kodi , enable the pvr- addon and enter the credentials. It should work and you should see channels in TV popping up.

Problems

TVH can be tricky when something is not working.

First check, if your tuner is found in DVB-Inputs / TV-Adapters. Those entries should show up automatically, otherwise something with the drivers has not worked.

Second, check if your Network is set up AND is connect to at least one LNB (for example) - that means the Network must be show in the LNB / general Settings

content/serverbasics/docker-tvheadend.1769630604.txt.gz · Zuletzt geändert: von obel1x

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki