2020-12-08 22:07:37 +01:00

174 lines
5.0 KiB
Docker

FROM debian:10-slim
WORKDIR /opt
RUN usermod -u 99 nobody
# Make directories
RUN mkdir -p /downloads /config/qBittorrent /etc/openvpn /etc/qbittorrent
# Install Ninja
RUN apt update \
&& apt upgrade -y \
&& apt install -y --no-install-recommends \
ca-certificates \
curl \
jq \
unzip \
&& NINJA_ASSETS=$(curl -sX GET "https://api.github.com/repos/ninja-build/ninja/releases" | jq '.[] | select(.prerelease==false) | .assets_url' | head -n 1 | tr -d '"') \
&& NINJA_DOWNLOAD_URL=$(curl -sX GET ${NINJA_ASSETS} | jq '.[] | select(.name | contains("ninja-linux")) .browser_download_url' | tr -d '"') \
&& curl -o /opt/ninja-linux.zip -L ${NINJA_DOWNLOAD_URL} \
&& unzip /opt/ninja-linux.zip \
&& mv ninja /usr/local/bin/ninja \
&& chmod +x /usr/local/bin/ninja \
&& rm -rf /opt/* \
&& apt purge -y \
ca-certificates \
curl \
jq \
unzip \
&& apt-get clean \
&& apt autoremove -y \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
# Install cmake
RUN apt update \
&& apt upgrade -y \
&& apt install -y --no-install-recommends \
ca-certificates \
curl \
jq \
&& CMAKE_ASSETS=$(curl -sX GET "https://api.github.com/repos/Kitware/CMake/releases" | jq '.[] | select(.prerelease==false) | .assets_url' | head -n 1 | tr -d '"') \
&& CMAKE_DOWNLOAD_URL=$(curl -sX GET ${CMAKE_ASSETS} | jq '.[] | select(.name | contains("Linux-x86_64.sh")) .browser_download_url' | tr -d '"') \
&& curl -o /opt/cmake.sh -L ${CMAKE_DOWNLOAD_URL} \
&& chmod +x /opt/cmake.sh \
&& /bin/bash /opt/cmake.sh --skip-license --prefix=/usr \
&& rm -rf /opt/* \
&& apt purge -y \
ca-certificates \
curl \
jq \
&& apt-get clean \
&& apt autoremove -y \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
# Compile libtorrent
RUN apt update \
&& apt upgrade -y \
&& apt install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
jq \
libboost-system-dev \
libssl-dev \
&& LIBTORRENT_ASSETS=$(curl -sX GET "https://api.github.com/repos/arvidn/libtorrent/releases" | jq '.[] | select(.prerelease==false) | select(.target_commitish=="RC_1_2") | .assets_url' | head -n 1 | tr -d '"') \
&& LIBTORRENT_DOWNLOAD_URL=$(curl -sX GET ${LIBTORRENT_ASSETS} | jq '.[0] .browser_download_url' | tr -d '"') \
&& LIBTORRENT_NAME=$(curl -sX GET ${LIBTORRENT_ASSETS} | jq '.[0] .name' | tr -d '"') \
&& curl -o /opt/${LIBTORRENT_NAME} -L ${LIBTORRENT_DOWNLOAD_URL} \
&& tar -xzf /opt/${LIBTORRENT_NAME} \
&& rm /opt/${LIBTORRENT_NAME} \
&& cd /opt/libtorrent-rasterbar* \
&& cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_CXX_STANDARD=17 \
&& cmake --build build --parallel $(nproc) \
&& cmake --install build \
&& cd /opt \
&& rm -rf /opt/* \
&& apt purge -y \
build-essential \
ca-certificates \
curl \
jq \
libboost-system-dev \
libssl-dev \
&& apt-get clean \
&& apt autoremove -y \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
# Compile qBittorrent
RUN apt update \
&& apt upgrade -y \
&& apt install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
git \
libboost-system-dev \
libssl-dev \
pkg-config \
qtbase5-dev \
qttools5-dev \
zlib1g-dev \
&& git clone https://github.com/qbittorrent/qBittorrent.git /opt/qBittorrent \
&& cd /opt/qBittorrent \
&& cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DGUI=OFF -DCMAKE_CXX_STANDARD=17 \
&& cmake --build build --parallel $(nproc) \
&& cmake --install build \
&& cd /opt \
&& rm -rf /opt/* \
&& apt purge -y \
build-essential \
ca-certificates \
curl \
git \
libboost-system-dev \
libssl-dev \
pkg-config \
qtbase5-dev \
qttools5-dev \
zlib1g-dev \
&& apt-get clean \
&& apt autoremove -y \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
RUN echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable-wireguard.list \
&& printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' > /etc/apt/preferences.d/limit-unstable \
&& apt update \
&& apt install -y --no-install-recommends \
ca-certificates \
dos2unix \
inetutils-ping \
ipcalc \
iptables \
kmod \
libboost-system1.67.0 \
libqt5network5 \
libqt5xml5 \
libssl1.1 \
moreutils \
net-tools \
openresolv \
openvpn \
procps \
wireguard-tools \
&& apt-get clean \
&& apt autoremove -y \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
VOLUME /config /downloads
ADD openvpn/ /etc/openvpn/
ADD qbittorrent/ /etc/qbittorrent/
RUN chmod +x /etc/qbittorrent/*.sh /etc/qbittorrent/*.init /etc/openvpn/*.sh
EXPOSE 8080
EXPOSE 8999
EXPOSE 8999/udp
CMD ["/bin/bash", "/etc/openvpn/start.sh"]