Dockerfile:
FROM ubuntu:focal as builder
COPY dist/setupvdr.sh /setupvdr.sh
COPY dist/Make.config /Make.config
#setup env
RUN \
apt-get -y update && \
export DEBIAN_FRONTEND=noninteractive && \
ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime && \
apt-get -y install tzdata && \
dpkg-reconfigure --frontend noninteractive tzdata && \
apt-get -y install build-essential wget git libfreetype-dev fontconfig gettext \
libcap-dev libjpeg-dev libfribidi-dev libfontconfig-dev libtntnet-dev \
libcurl4-openssl-dev libpugixml-dev libssl-dev libsystemd-dev
# setup vdr env
RUN /setupvdr.sh
# do the actual build
RUN cd /work/vdr && \
make && \
make install && \
strip /opt/vdr/bin/vdr && \
strip /opt/vdr/lib/vdr/*.so.*
RUN mkdir -p /opt/vdr/etc/plugins/live && \
cd /work/vdr/PLUGINS/src/live/live && \
cp -r * /opt/vdr/etc/plugins/live
RUN mv /opt/vdr/etc /opt/vdr/etc.deploy
######## Start a new stage from scratch #######
FROM ubuntu:focal
LABEL maintainer="Michael Class <docker@michaelclass.de>"
# set language
ENV LANG de_DE.UTF-8
ENV LC_ALL de_DE.UTF-8
ENV VDR_LANG de_DE.UTF-8
ENV TZ Europe/Berlin
# generate locates
RUN apt clean && apt update && apt install -y locales gnupg
RUN apt-get install -y tzdata
RUN locale-gen de_DE.UTF-8 en_US.UTF-8
# install necessary libraries
RUN apt-get -y update && \
export DEBIAN_FRONTEND=noninteractive && \
ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime && \
apt-get -y install tzdata && \
dpkg-reconfigure --frontend noninteractive tzdata && \
apt-get -y install nfs-client rsyslog \
libfreetype-dev fontconfig gettext \
libcap-dev libjpeg-dev libfribidi-dev libfontconfig-dev libtntnet-dev \
libcurl4-openssl-dev libpugixml-dev libssl-dev libsystemd-dev
# Copy the Pre-built binary file from the previous stage
COPY --from=builder /opt/vdr /opt/vdr
COPY dist/startvdr.sh /
COPY dist/rsyslog.conf /etc/
RUN echo "10.0.0.0/8\n172.16.0.0/12\n192.168.0.0/16\n" >> /opt/vdr/etc.deploy/svdrphosts.conf
COPY dist/vdr.vdrmanager /opt/vdr/etc.deploy/plugins/
COPY dist/channels.conf /opt/vdr/etc.deploy/
COPY dist/setup.conf /opt/vdr/etc.deploy/
COPY dist/conf.d/* /opt/vdr/etc.deploy/conf.d/
COPY dist/streamdevhosts.conf /opt/vdr/etc.deploy/plugins/streamdev-server/
COPY dist/allowed_hosts.conf /opt/vdr/etc.deploy/plugins/vnsiserver/
CMD ["/startvdr.sh"]
und setupvdr.sh
#!/bin/bash
# setup all sources needed to build the vdr with the necessary plugins
# under /work/vdr
WORKDIR=/work
mkdir $WORKDIR
cd $WORKDIR
git clone git://git.tvdr.de/vdr.git
cd vdr
# patch for container usage
#patch -p0 < /vdr-container.patch
# remove unneeded plugins:
rm -rf PLUGINS/src/skincurses
rm -rf PLUGINS/src/pictures
rm -rf PLUGINS/src/hello
rm -rf PLUGINS/src/epgtableid0
rm -rf PLUGINS/src/*demo
# get the actually needed plugins:
cd $WORKDIR/vdr/PLUGINS/src
# dummydevices
pushd $WORKDIR
wget http://phivdr.dyndns.org/vdr/v…vdr-dummydevice-2.0.0.tgz
popd
tar zxvf ../../../vdr-dummydevice-2.0.0.tgz
ln -s dummydevice-2.0.0 dummydevice
# satip
git clone https://github.com/rofafor/vdr-plugin-satip.git
ln -s vdr-plugin-satip satip
# streamdev-server
git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git
ln -s vdr-plugin-streamdev streamdev
# epgsearch
git clone https://github.com/vdr-projects/vdr-plugin-epgsearch.git
ln -s vdr-plugin-epgsearch epgsearch
# vdrmanager
git clone http://projects.vdr-developer.org/git/vdr-manager.git
ln -s vdr-manager/vdr-vdrmanager vdrmanager
# live
git clone git://projects.vdr-developer.org/vdr-plugin-live.git
ln -s vdr-plugin-live live
# vnsiserver
git clone https://github.com/FernetMenta/vdr-plugin-vnsiserver.git
ln -s vdr-plugin-vnsiserver vnsiserver
# svdrposd
pushd $WORKDIR
wget http://vdr.schmirler.de/svdrposd/vdr-svdrposd-1.0.0.tgz
popd
tar zxvf ../../../vdr-svdrposd-1.0.0.tgz
ln -s svdrposd-1.0.0 svdrposd
# copy Make.config
cp /Make.config $WORKDIR/vdr
startvdr.sh
#!/bin/sh
echo "running: $0 $*"
echo "active uid: $EUID"
echo "start rsyslog"
/usr/sbin/rsyslogd
echo "create vdr user"
addgroup -gid 1228 vdr
PASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9!"#%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 24 ; echo)
adduser -uid 1228 -gid 1228 vdr << EOF
${PASS}
${PASS}
vdr vdr
Y
EOF
echo
echo "setup cache dir"
mkdir /var/cache/vdr
chown vdr.vdr /var/cache/vdr
echo "setup file access rights"
chown -R vdr.vdr /opt/vdr
#chown -R vdr.vdr /opt/vdradmin
echo
echo "prepare config directory"
cd /opt/vdr/etc.deploy
su -c "tar -cf- . | tar -C /opt/vdr/etc -xv --skip-old-files -f-" vdr
echo "fix for live plugin"
mkdir -p /opt/vdr/share/vdr/plugins
cd /opt/vdr/share/vdr/plugins
rm -rf ./live
ln -s /opt/vdr/etc/plugins/live .
#sleep 100000
echo "starting vdr"
su -c /opt/vdr/bin/vdr vdr
#/opt/vdr/bin/vdr