Benutzer-Werkzeuge

Webseiten-Werkzeuge


content:serverbasics:docker-tvheadend
This version is outdated by a newer approved version.DiffThis version (2026/01/27 23:37) is a draft.
Approvals: 0/1
The Previously approved version (2025/10/24 11:21) 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:

  • v4l-conf
  • v4l-tools
  • 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 |</font>

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).

content/serverbasics/docker-tvheadend.1769553459.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