commit 9d3781519b091851f6e0407c310bc6d8c444a9da Author: sparklyballs Date: Fri May 19 10:28:58 2017 +0100 first save up diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cdb1a82 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.git +.gitignore +.github +.gitattributes +READMETEMPLATE.md +README.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bdb0cab --- /dev/null +++ b/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..c73c33b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,21 @@ + + +[linuxserverurl]: https://linuxserver.io +[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] + + + + + + + + + + + + + + + +## Thanks, team linuxserver.io + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..f6a6381 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,15 @@ + + +[linuxserverurl]: https://linuxserver.io +[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] + + + + + + + + + +## Thanks, team linuxserver.io + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96374c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d09a57f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,86 @@ +FROM lsiobase/alpine:3.5 +MAINTAINER sparklyballs + +# set version label +ARG BUILD_DATE +ARG VERSION +LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" + +# package versions +ARG QBITTORRENT_VER="3.3.12" +ARG RASTERBAR_VER="1.0.11" + +# environment settings +ENV HOME="/config" \ +XDG_CONFIG_HOME="/config" \ +XDG_DATA_HOME="/config" + +# copy patches +COPY patches/ /tmp/patches + +# install build packages +RUN \ + apk add --no-cache --virtual=build-dependencies \ + boost-dev \ + cmake \ + curl \ + g++ \ + make \ + qt5-qttools-dev && \ + +# install runtime packages + apk add --no-cache \ + boost-system \ + boost-thread \ + ca-certificates \ + qt5-qtbase && \ + +# compile libtorrent rasterbar + RASTERBAR_VER2=${RASTERBAR_VER//./_} && \ + mkdir -p \ + /tmp/rasterbar-src && \ + curl -o \ + /tmp/rasterbar.tar.gz -L \ + "https://github.com/arvidn/libtorrent/releases/download/libtorrent-${RASTERBAR_VER2}/libtorrent-rasterbar-${RASTERBAR_VER}.tar.gz" && \ + tar xf \ + /tmp/rasterbar.tar.gz -C \ + /tmp/rasterbar-src --strip-components=1 && \ + cd /tmp/rasterbar-src && \ + ./configure \ + --prefix=/usr && \ + make && \ + make install && \ + strip --strip-unneeded \ + /usr/lib/libtorrent-rasterbar.so* \ + /usr/lib/libtorrent-rasterbar.a* && \ + +# compile qbittorrent + mkdir -p \ + /tmp/qbittorrent-src && \ + curl -o \ + /tmp/bittorrent.tar.gz -L \ + "https://github.com/qbittorrent/qBittorrent/archive/release-${QBITTORRENT_VER}.tar.gz" && \ + tar xf \ + /tmp/bittorrent.tar.gz -C \ + /tmp/qbittorrent-src --strip-components=1 && \ + cd /tmp/qbittorrent-src/src/app && \ + patch -i /tmp/patches/main.patch && \ + cd /tmp/qbittorrent-src && \ + ./configure \ + --disable-gui \ + --prefix=/usr && \ + make && \ + make install && \ + +# cleanup + apk del --purge \ + build-dependencies && \ + rm -rf \ + /tmp/* + +# add local files +COPY root/ / + +# ports and volumes +EXPOSE 6881 6881/udp 8080 +VOLUME /config /downloads diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a8b3d2 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +[linuxserverurl]: https://linuxserver.io +[forumurl]: https://forum.linuxserver.io +[ircurl]: https://www.linuxserver.io/irc/ +[podcasturl]: https://www.linuxserver.io/podcast/ + +[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] + +## This is a Container in active development by the [LinuxServer.io][linuxserverurl] team and is not recommended for use by the general public. + +If you want to comment\contribute on this container , are looking for support on any of our other work , or are curious about us in general, check out the following. + +* [forum.linuxserver.io][forumurl] +* [IRC][ircurl] on freenode at `#linuxserver.io` +* [Podcast][podcasturl] covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! + diff --git a/READMETEMPLATE.md b/READMETEMPLATE.md new file mode 100644 index 0000000..05f8cf6 --- /dev/null +++ b/READMETEMPLATE.md @@ -0,0 +1,90 @@ +[linuxserverurl]: https://linuxserver.io +[forumurl]: https://forum.linuxserver.io +[ircurl]: https://www.linuxserver.io/irc/ +[podcasturl]: https://www.linuxserver.io/podcast/ +[appurl]: https://www.qbittorrent.org +[hub]: https://hub.docker.com/r/linuxserver/qbittorrent/ + +[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] + +The [LinuxServer.io][linuxserverurl] team brings you another container release featuring easy user mapping and community support. Find us for support at: +* [forum.linuxserver.io][forumurl] +* [IRC][ircurl] on freenode at `#linuxserver.io` +* [Podcast][podcasturl] covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! + +# linuxserver/qbittorrent +[![](https://images.microbadger.com/badges/version/linuxserver/qbittorrent.svg)](https://microbadger.com/images/linuxserver/qbittorrent "Get your own version badge on microbadger.com")[![](https://images.microbadger.com/badges/image/linuxserver/qbittorrent.svg)](http://microbadger.com/images/linuxserver/qbittorrent "Get your own image badge on microbadger.com")[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/qbittorrent.svg)][hub][![Docker Stars](https://img.shields.io/docker/stars/linuxserver/qbittorrent.svg)][hub][![Build Status](http://jenkins.linuxserver.io:8080/buildStatus/icon?job=Dockers/LinuxServer.io/linuxserver-qbittorrent)](http://jenkins.linuxserver.io:8080/job/Dockers/job/LinuxServer.io/job/linuxserver-qbittorrent/) + +The [qBittorrent][appurl] project aims to provide an open-source software alternative to µTorrent. +qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. + +[![qbittorrent]()][appurl] + +## Usage + +``` +docker create \ + --name=qbittorrent \ + -v :/config \ + -v :/downloads \ + -e PGID= -e PUID= \ + -e TZ= \ + -e UMASK_SET=<022> \ + -p 6881:6881 \ + -p 6881:6881/udp \ + -p 8080:8080 \ + linuxserver/qbittorrent +``` + +## Parameters + +`The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. +For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. +So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 +http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.` + + + +* `-p 6881` - the port(s) +* `-p 6881/udp` - the port(s) +* `-p 8080` - the port(s) +* `-v /config` - Where qbittorrent should store its config files +* `-v /downloads` - Path to downloads +* `-e PGID` for GroupID - see below for explanation +* `-e PUID` for UserID - see below for explanation + +It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it qbittorrent /bin/bash`. + +### User / Group Identifiers + +Sometimes when using data volumes (`-v` flags) permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user `PUID` and group `PGID`. Ensure the data volume directory on the host is owned by the same user you specify and it will "just work" ™. + +In this instance `PUID=1001` and `PGID=1001`. To find yours use `id user` as below: + +``` + $ id + uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup) +``` + +## Setting up the application + +The webui is at `:8080` and the default username/password is admin/adminadmin. +Change username/password via the webui in the webui section of settings. + + +## Info + +* Shell access whilst the container is running: `docker exec -it qbittorrent /bin/bash` +* To monitor the logs of the container in realtime: `docker logs -f qbittorrent` + +* container version number + +`docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent` + +* image version number + +`docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/qbittorrent` + +## Versions + ++ **dd.MM.yy:** Initial Release. diff --git a/patches/main.patch b/patches/main.patch new file mode 100644 index 0000000..93c2e3e --- /dev/null +++ b/patches/main.patch @@ -0,0 +1,14 @@ +--- src/app/main.cpp ++++ src/app/main.cpp +@@ -59,8 +59,9 @@ + + #ifdef Q_OS_UNIX + #include +-#include +-#include "stacktrace.h" ++static inline void print_stacktrace(FILE *out = stderr, unsigned int max_frames = 63) { ++ fprintf(out, "stack trace:\n N/A (%d)", max_frames); ++} + #endif // Q_OS_UNIX + + #ifdef STACKTRACE_WIN diff --git a/root/defaults/qBittorrent.conf b/root/defaults/qBittorrent.conf new file mode 100644 index 0000000..742b4b4 --- /dev/null +++ b/root/defaults/qBittorrent.conf @@ -0,0 +1,12 @@ +[AutoRun] +enabled=false +program= + +[LegalNotice] +Accepted=true + +[Preferences] +Connection\PortRangeMin=6881 +Downloads\SavePath=/downloads/ +Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) +Downloads\TempPath=/downloads/incomplete/ diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config new file mode 100644 index 0000000..1aba377 --- /dev/null +++ b/root/etc/cont-init.d/30-config @@ -0,0 +1,14 @@ +#!/usr/bin/with-contenv bash + +# make our folders +mkdir -p \ + /config/qBittorrent \ + /config/data + +# copy config +[[ ! -e /config/qBittorrent/qBittorrent.conf ]] && \ + cp /defaults/qBittorrent.conf /config/qBittorrent/qBittorrent.conf + +# permissions +chown -R abc:abc \ + /config diff --git a/root/etc/services.d/qbittorrent/run b/root/etc/services.d/qbittorrent/run new file mode 100644 index 0000000..8162d80 --- /dev/null +++ b/root/etc/services.d/qbittorrent/run @@ -0,0 +1,8 @@ +#!/usr/bin/with-contenv bash + +UMASK_SET=${UMASK_SET:-022} + +umask "$UMASK_SET" + +exec \ + s6-setuidgid abc /usr/bin/qbittorrent-nox