Orginaly just made for ARM architecture but now also supporting x86/x64 platform, see Dockerfile.x86_64 and/or get the x86_64-image!
Turn your Raspberry PI (or x86_64 machine) within 15 minutes into a TV streaming and recording server for your local network! This project uses the well known Tvheadend software, is based on alpine Linux, which is with ~5 MB much smaller than most other distribution base, and thus leads to a slimmer Tvheadend target image.
Find the full source code at GitHub or the ready-to-run images in the DockerHub for the ARM or x86_64 platform and do not forget to star the repository ;-)
- Raspberry PI
- Linux compatible DVB-C/S/T USB-Tuner
- Docker Engine
- Install a debian Docker package, which you download here and install with
dpkg -i package_name.deb
. Alternatively install HypriotOS, which is based on Raspbian a debian derivate and results to a fully working docker host, see Getting Started! - Get the right DVB-C/S/T Linux firmware, e.g.
/lib/firmware $ wget https://www.linuxtv.org/downloads/firmware/dvb-usb-vp7045-01.fw
- Change your network interface to a static IP
$ cat /etc/network/interfaces
...
allow-hotplug eth0
iface eth0 inet static
address 192.168.PI.IP
netmask 255.255.255.0
gateway 192.168.XXX.XXX
...
- Integrate your NAS permanently
$ cat /etc/fstab
...
192.168.NAS.IP:/nfs/Public /mnt nfs auto 0 0
...
Alternatively ... if you are lazy, use a docker volume plugin, which enables the volume type NFS to be mounted directly within the container, see Netshare docker plugin. After install you can use it like this
$ docker run -it --volume-driver=nfs --volume NFShost/path:/data alpine /bin/ash
$ cd /data
$ touch testfile
- Pull the respective docker image
$ docker pull netzfisch/rpi-tvheadend
To build the image and/or compile by yourself from git source, use Dockerfile.build
$ cat Dockerfile.build
$ docker build -f Dockerfile.build -t netzfisch/tvheadend:git-build .
$ docker tag netzfisch/tvheadend:git-build netzfisch/tvheadend:4.1_git20161008
Find the automated build for that at DockerHub.
Get ready to roll and run the container:
$ docker run --detach \
--name tvheadend \
--restart unless-stopped \
--volume /mnt/Configs/tvh-config:/config \
--volume /mnt/Movies:/recordings \
-p 9981-9982:9981-9982 \
--privileged netzfisch/rpi-tvheadend
Finally configure Tvheadend via the web interface at http://192.168.PI.IP:9981. An initial user is created, so you will be logged in flawless, and setup wizard should start immediately!
HEADS UP If you are running into problems like
2016-10-02 18:32:25.705 dvr: Unsupported charset ASCII using ASCII
2016-10-02 18:32:25.705 dvr: Recording error: Unable to create file
check the Web-GUI [ Recording > DVR-Profile > Advanced View > Filename Charset ] if set to a supported charset format, e.g. UTF-8! At my installation it was set to ASCII which failed to write to the NAS, and cost me too much time to debug ;-( ... encoding in 2016 still sucks!
If you run into trouble, try to get a clean setup at docker host level
$ docker stop tvheadend && docker rm tvheadend # stop and remove container
$ rmmod dvb_usb_vp7045 dvb_usb dvb_core # remove DVB-T linux modules
$ modprobe dvb_usb_vp7045 # reload DVB-T linux modules
$ docker run --detach \ # create new containter
--name tvheadend \
...
and than go into the container for further debugging:
$ docker exec -it tvheadend /bin/ash
If you find a problem, please create a GitHub Issue.
Have a fix, want to add or request a feature? Pull Requests are welcome!
The MIT License (MIT), see LICENSE file.