About

This is an unmanic build create from the default unmanic repository but with the changes from the kapsikkum fork that removes all limitations.

Filesystem Layout

.
├── Dockerfile
└── root
    ├── .grc.conf.unmanic.logs
    ├── etc
    │   ├── cont-init.d
    │   │   ├── 20-config
    │   │   ├── 30-patch-nvidia
    │   │   └── 60-custom-setup-script
    │   └── services.d
    │       └── unmanic
    │           └── run
    └── usr
        └── bin
            ├── unmanic
            └── unmanic-tail-logs

7 directories, 8 files

Dockerfile

The kapsikkum changes were merged with the default unmanic repository and made to work with the up-to-date version. Furthermore, the default unmanic Dockerfile needed fixing to adjust some packages in order to build unmanic.

FROM lsiobase/ubuntu:jammy
LABEL maintainer="Wizardry and Steamworks <wizardry.steamworks@outlook.com>"
 
# Env variables
ENV \
    LIBVA_DRIVERS_PATH="/usr/lib/x86_64-linux-gnu/dri" \
    NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \
    NVIDIA_VISIBLE_DEVICES="all"
 
# Install the runtime dependencies
# TODO: Remove intel-opencl-icd and replace with suggested build by Jellyfin
#   https://jellyfin.org/docs/general/administration/hardware-acceleration.html
#   https://github.com/jellyfin/jellyfin/blob/master/Dockerfile
RUN \
    echo "**** Install build dependencies requirements ****" \
        && apt-get update \
        && apt-get install -y \
            ca-certificates \
            curl \
            gnupg \
            wget \
            git \
            subversion \
            coreutils \
            sqlite3 \
    && \
    echo "**** Install runtime packages ****" \
        && apt-get install -y \
            libexpat1=2.4.7-1ubuntu0.3 \
            libglib2.0-0=2.72.4-0ubuntu2.2 \
            libgomp1=12.3.0-1ubuntu1~22.04 \
            libharfbuzz0b=2.7.4-1ubuntu3.1 \
            libmediainfo0v5=21.09+dfsg-4 \
            libv4l-0=1.22.1-2build1 \
            libx11-6=2:1.7.5-1ubuntu0.3 \
            libxcb1=1.14-3ubuntu3 \
            libxext6=2:1.3.4-1build1 \
            libxml2=2.9.13+dfsg-1ubuntu0.4 \
    && \
    echo "**** Install all available media acceleration packages ****" \
        # va-driver-all: 
        #   A meta-package for installing all available Video Acceleration API (VAAPI) drivers. Includes packages like:
        #       - i965-va-driver
        #       - intel-media-va-driver
        #       - mesa-va-drivers
        #       - libdrm2
        #       - etc
        && apt-get install -y \
            va-driver-all \
    && \
    echo "**** Install arch specific packages for $(uname -m) ****" \
        && sleep 2 \
        && \
        if uname -m | grep -q x86; then \
            echo "**** Add Intel Graphics repository  ****" \
                && wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg \
                && echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | tee /etc/apt/sources.list.d/intel-gpu-jammy.list \
            && \
            echo "**** Install Intel Media Drivers  ****" \
                && apt-get update \
                # intel-media-va-driver-non-free:
                #   This is the primary driver for Intel's Video Acceleration API on Linux, which provides support for video encoding and decoding on Intel graphics hardware.
                # libigdgmm12:
                #   A part of the Intel Graphics Memory Management Library, which is used for managing graphics memory in an efficient and optimized way on Intel GPUs.
                # libmfx1:
                #   This is a library for Intel Media SDK runtime. It is necessary for applications that use Intel Quick Sync Video technology.
                # libmfxgen1:
                #   Similar to libmfx1, it's a part of the Intel Media SDK.
                # libva-drm2 and libva2:
                #   These are additional libraries needed for VAAPI to interface with the Direct Rendering Manager (DRM) and to provide the main API for VAAPI.
                # libvpl2:
                #   This is the successor to the Media SDK and provides a library for video processing.
                && apt-get install -y \
                    intel-media-va-driver-non-free \
                    libigdgmm12 \
                    libmfx1 \
                    libmfxgen1 \
                    libva-drm2 \
                    libva2 \
                    libvpl2 \
            && \
            echo ; \
        fi \
    && \
    echo "**** Install hardware info tools packages ****" \
        # hwinfo:
        #   A hardware identification system that provides detailed information about all the hardware components of a computer.
        # vainfo:
        #   This utility displays information about the VAAPI capabilities of your hardware.
        && apt-get install -y \
            hwinfo \
            vainfo \
    && \
    echo "**** Section cleanup ****" \
        && apt-get clean autoclean -y \
        && apt-get autoremove -y \
        && rm -rf \
            /var/lib/apt/lists/* \
            /var/tmp/* \
            /tmp/*
 
# Install commonly used command line tools
ARG JELLYFIN_FFMPEG_VERSION="6"
ARG NODE_MAJOR="20"
RUN \
    echo "**** Install FFmpeg for $(uname -m) ****" \
        && sleep 2 \
        && apt-get update \
        && \
        if uname -m | grep -q x86; then \
            echo "**** Add Jellyfin repository ****" \
                && wget -qO - https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --output /usr/share/keyrings/jellyfin_team.gpg \
                && echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin_team.gpg] https://repo.jellyfin.org/ubuntu jammy main" | tee /etc/apt/sources.list.d/jellyfin.list \
            && \
            echo "**** Install jellyfin-ffmpeg and linked 3rd party libs ****" \
                && apt-get update \
                && apt-get install --no-install-recommends --no-install-suggests -y \
                    openssl \
                    locales \
                && apt-get install -y \
                    jellyfin-ffmpeg${JELLYFIN_FFMPEG_VERSION} \
                && ln -s /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/local/bin/ffmpeg \
                && ln -s /usr/lib/jellyfin-ffmpeg/ffprobe /usr/local/bin/ffprobe \
            && \
            echo ; \
        fi \
        && \
        if uname -m | grep -q aarch64; then \
            echo "**** Add Jellyfin repository ****" \
                && wget -qO - https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --output /usr/share/keyrings/jellyfin_team.gpg \
                && echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin_team.gpg] https://repo.jellyfin.org/ubuntu jammy main" | tee /etc/apt/sources.list.d/jellyfin.list \
            && \
            echo "**** Install jellyfin-ffmpeg and linked 3rd party libs ****" \
                && apt-get update \
                && apt-get install --no-install-recommends --no-install-suggests -y \
                    locales \
                    libssl-dev \
                    libfontconfig1 \
                    libfreetype6 \
                    libomxil-bellagio0 \
                    libomxil-bellagio-bin \
                && apt-get install -y \
                    jellyfin-ffmpeg${JELLYFIN_FFMPEG_VERSION} \
                && ln -s /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/local/bin/ffmpeg \
                && ln -s /usr/lib/jellyfin-ffmpeg/ffprobe /usr/local/bin/ffprobe \
            && \
            echo ; \
        fi \
    && \
    echo "**** Install startup script requirements ****" \
        && apt-get install -y \
            jq \
            nano \
            sqlite3 \
    && \
    echo "**** Add NodeJS repository ****" \
        && wget -qO - https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor --output /usr/share/keyrings/nodesource.gpg \
        && echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
    && \
    echo "**** Install NodeJS for $(uname -m) ****" \
        && apt-get update \
        && apt-get install -y \
            nodejs \
    && \
    echo "**** Install exiftool for $(uname -m) ****" \
        && apt-get install -y \
            libimage-exiftool-perl \
    && \
    echo "**** Section cleanup ****" \
        && apt-get clean autoclean -y \
        && apt-get autoremove -y \
        && rm -rf \
            /var/lib/apt/lists/* \
            /var/tmp/* \
            /tmp/*
 
# Add pip requirements
#COPY /requirements.txt /tmp/requirements.txt
 
# Install Unmanic python dependencies.
RUN \
    echo "**** Install Unmanic application dependencies ****" \
        && sleep 2 \
        && \
        echo "**** Update sources ****" \
            && apt-get update \
        && \
        echo "**** Install python ****" \
            && apt-get install -y --no-install-recommends \
                grc \
                gcc \
                python3 \
                python3-dev \
                python3-pip \
                python3-setuptools \
                unzip \
        && \
#        echo "**** Install pip packages ****" \
#            && python3 -m pip install --no-cache-dir -r /tmp/requirements.txt \
#    && \
    echo "**** Section cleanup ****" \
        && apt-get clean autoclean -y \
        && apt-get autoremove -y \
        && rm -rf \
            /var/lib/apt/lists/* \
            /var/tmp/* \
            /tmp/*
 
# Install pre-built Unmanic wheel
# Must first run `python3 ./setup.py bdist_wheel` on host to build package
#COPY /dist/ /src/
#RUN \
#    echo "**** Install Unmanic ****" \
#        && sleep 2 \
#        && \
#        echo "**** Install unmanic from pre-built wheel ****" \
#            && ls -l /src/ \
#            && python3 -m pip install --no-cache-dir /src/*.whl \
#        && \
#        echo "**** Move unmanic executable so we can wrap a bash script around it for developers ****" \
#            && mv -f /usr/local/bin/unmanic /usr/local/bin/unmanic-service \
#        && \
#        echo "**** Make default paths for unmanic library ****" \
#            && mkdir -p /library
 
RUN echo "**** Checking out Kapsikkum Unmanic sources ****" && \
    svn co https://svn.grimore.org/kapsikkum-unmanic && \
    cd kapsikkum-unmanic && \
    echo "**** Install Kapsikkum Unmanic requirements ****" && \
    python3 -m pip install -r requirements.txt && \
    echo "**** Install Kapsikkum Unmanic ****" && \
    python3 ./setup.py install && \
    echo "**** Move unmanic executable so we can wrap a bash script around for developers ****" && \
    mv -f /usr/local/bin/unmanic /usr/local/bin/unmanic-service && \
    echo "**** Make default paths for unmanic library ****" && \
    mkdir -p /library
 
# Add local files
COPY root /
 
# Unmanic runs on port 8888
EXPOSE 8888/tcp

Files

The housekeeping files have not changed and are the default as per the unmanic repository. They are however now mirrored locally and can be obtained at:

Building

In order to retrieve the whole build bundle, issue:

svn co https://svn.grimore.org/docker/build/kapsikkum-unmanic

and then within the 'kapsikkum-unmanic directory, issue: <code bash> docker build -t TAG . </code> where: * TAG is a custom tag (in the provided docker compose file, docker.internal:5000/kapsikkum-unmanic:latest'').

Compose File

A compose file is available in the compose section.


assets/docker/build/kapsikkum-unmanic.txt · Last modified: 2024/04/29 14:45 by office

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.