FROM debian:trixie LABEL maintainer="Wizardry and Steamworks " RUN apt update && apt install -y \ ca-certificates \ apt-transport-https \ curl RUN curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh && \ chmod +x ./dotnet-install.sh && \ ./dotnet-install.sh --install-dir /opt/dotnet --version 8.0.22 --runtime aspnetcore && \ rm ./dotnet-install.sh && \ /opt/dotnet/dotnet --info # Install requirements RUN apt install --no-install-recommends --no-install-suggests -y \ mediainfo \ libmediainfo-dev \ libc6 \ libgdiplus \ dvb-tools \ libdvbv5-0 \ dtv-scan-tables \ libc6-dev \ hdhomerun-config \ unzip \ libicu-dev \ git \ build-essential \ make \ cmake \ ninja-build \ meson \ libdrm-dev \ libx264-dev \ autoconf \ libtool \ libargtable2-dev \ libavformat-dev \ libsdl1.2-dev \ automake # install ffmpeg for Rockchip RUN mkdir /tmp/kitchen WORKDIR /tmp/kitchen RUN git clone https://gitee.com/hermanchen82/mpp.git rkmpp && \ cd rkmpp && \ mkdir rkmpp_build && \ cd rkmpp_build && \ cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TEST=OFF \ .. && \ make && make install WORKDIR /tmp/kitchen RUN git clone -b jellyfin-rga --depth=1 https://github.com/nyanmisaka/rk-mirrors.git rkrga && \ meson setup rkrga rkrga_build \ --prefix=/usr \ --libdir=lib \ --buildtype=release \ --default-library=shared \ -Dcpp_args=-fpermissive \ -Dlibdrm=false \ -Dlibrga_demo=false && \ meson configure rkrga_build && \ ninja -C rkrga_build install WORKDIR /tmp/kitchen RUN git clone --depth=1 https://github.com/nyanmisaka/ffmpeg-rockchip.git ffmpeg && \ cd ffmpeg && \ ./configure \ --prefix=/usr \ --disable-debug \ --enable-optimizations \ --enable-gpl \ --enable-version3 \ --enable-libdrm \ --enable-rkmpp \ --enable-rkrga \ --enable-hardcoded-tables \ --enable-libx264 \ && \ CFLAGS='-march=native' make && \ ./ffmpeg -decoders | grep rkmpp && \ ./ffmpeg -encoders | grep rkmpp && \ ./ffmpeg -filters | grep rkrga && \ make install # install NextPVR WORKDIR /tmp/kitchen RUN curl -sL http://nextpvr.com/stable/linux/NPVR.zip -o NPVR.zip && \ unzip NPVR.zip -d /opt/nextpvr && \ perl -p -i'' -e 's#vcodec libx264#vcodec h264_rkmpp#g' \ /opt/nextpvr/data/Config-master-dont-edit.xml && \ cat /opt/nextpvr/data/Config-master-dont-edit.xml | grep h264_rkmpp && \ perl -p -i'' -e 's#default#-y [SEEK] -i [SOURCE] -map_metadata -1 -threads [THREADS] -ignore_unknown -map 0:v:0? -map 0:a:0? -map 0:s:0? -c:v h264_rkmpp -preset ultrafast -pix_fmt yuv420p -b:v [BITRATE] -maxrate [BITRATE] -bufsize [BITRATE]*2 -s [RESOLUTION] -aspect [ASPECT] -c:a aac -ab 128k -ar 44100 -ac 2 -f hls -hls_time 2 -hls_list_size 0 -hls_flags delete_segments [TARGET]#s' \ /opt/nextpvr/data/Config-master-dont-edit.xml WORKDIR /tmp/comskip RUN git clone https://github.com/erikkaashoek/Comskip.git && \ cd Comskip && \ ./autogen.sh && \ ./configure && \ make && \ make install && \ which comskip # cleanup WORKDIR /tmp RUN rm -rf /tmp/kitchen # remove unused packages RUN apt-get purge -y \ git \ build-essential \ make \ cmake \ ninja-build \ meson && \ apt-get autoremove -y # Set Environment Variables for where config data should be stored ENV ASPNETCORE_URLS=http://+:80 DOTNET_RUNNING_IN_CONTAINER=true ENV NEXTPVR_DATADIR=/opt/nextpvr/data/ ENV NEXTPVR_DATADIR_USERDATA=/config/ VOLUME /config/ # include root filesystem ADD rootfs / # Exposing HTTP and HTTPS Ports EXPOSE 80 EXPOSE 443 # Former NextPVR Historical Port EXPOSE 8866 # Change working directory to /media/nextpvr WORKDIR /opt/nextpvr # ...and run the program RUN chmod +x /usr/local/bin/run ENTRYPOINT [ "/usr/local/bin/run" ]