FROM "debian:buster"
LABEL maintainer="Julien Cabillot <dockerimages@cabillot.eu>"

RUN groupadd -r -g 666 sabnzbd && \
    useradd -l -r -u 666 -g 666 -d /sabnzbd sabnzbd

#
# Add SABnzbd init script.
#

COPY "sabnzbd.sh" "/sabnzbd.sh"
RUN chmod 755 "/sabnzbd.sh"

#
# Fix locales to handle UTF-8 characters.
#

ENV LANG C.UTF-8

#
# Install SABnzbd and all required dependencies.
#

RUN export SABNZBD_VERSION=3.7.2 PAR2CMDLINE_VERSION=v0.6.14-mt1 && \
    export DEBIAN_FRONTEND=noninteractive && \
    export BUILD_PACKAGES="automake build-essential python3-dev libffi-dev" && \
    export RUNTIME_PACKAGES="ca-certificates p7zip-full python3-yenc unrar unzip libgomp1 openssl python3-openssl curl python3-pip" && \
    export PIP_PACKAGES="sabyenc" && \
    sed -i "s/ main$/ main contrib non-free/" /etc/apt/sources.list && \
    apt-get -qq update && \
    apt-get -qq --yes install $BUILD_PACKAGES $RUNTIME_PACKAGES && \
    #pip3 install $PIP_PACKAGES && \
    curl -SL -o /tmp/sabnzbd.tar.gz https://github.com/sabnzbd/sabnzbd/releases/download/${SABNZBD_VERSION}/SABnzbd-${SABNZBD_VERSION}-src.tar.gz && \
    tar xzf /tmp/sabnzbd.tar.gz && \
    mv SABnzbd-* sabnzbd && \
    pip3 install --upgrade pip && \
    pip3 install -r /sabnzbd/requirements.txt && \
    chown -R sabnzbd: sabnzbd && \
    curl -o /tmp/par2cmdline-mt.tar.gz https://codeload.github.com/jkansanen/par2cmdline-mt/tar.gz/${PAR2CMDLINE_VERSION} && \
    tar xzf /tmp/par2cmdline-mt.tar.gz -C /tmp && \
    cd /tmp/par2cmdline-* && \
    aclocal && \
    automake --add-missing && \
    autoconf && \
    ./configure && \
    make && \
    make install && \
    apt-get -qq --yes remove --purge $BUILD_PACKAGES && \
    apt-get -qq --yes autoremove --purge && \
    apt-get -qq --yes clean all && \
    rm -rf "/usr/share/doc/"* \
           "/var/cache/"* \
           "/var/lib/apt/lists/"* \
           "/usr/src/"* \
           "/var/cache/"* \
           "/var/log/"{apt/*,dpkg.log} \
           "/var/www/html" \
           "/tmp/"*

#
# Define container settings.
#

VOLUME ["/datadir", "/media"]

EXPOSE 8080

#
# Start SABnzbd.
#

WORKDIR "/sabnzbd"

# Add Tini
ENV "TINI_VERSION" "v0.19.0"
ADD "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini" "/tini"
RUN chmod +x "/tini"
#ENTRYPOINT ["/tini", "--"]

CMD ["/sabnzbd.sh"]

HEALTHCHECK --interval="10s" \
    CMD curl --fail "http://localhost:8080" || exit 1
