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"]