From a69ece17fe8efefd361639257003866c7488acd3 Mon Sep 17 00:00:00 2001 From: Bruno Perel Date: Thu, 26 Oct 2017 19:46:34 +0200 Subject: [PATCH 1/4] Support transmission-rss plugin --- DockerEnv | 1 + Dockerfile | 4 ++++ README.md | 6 ++++++ transmission/environment-variables.tmpl | 2 ++ transmission/start.sh | 8 ++++++++ transmission/transmission-rss.conf | 7 +++++++ 6 files changed, 28 insertions(+) create mode 100644 transmission/transmission-rss.conf diff --git a/DockerEnv b/DockerEnv index 9f5c2336c..c598c7e5a 100644 --- a/DockerEnv +++ b/DockerEnv @@ -3,6 +3,7 @@ #OPENVPN_CONFIG= #OPENVPN_USERNAME= #OPENVPN_PASSWORD= +#RSS_URL= #LOCAL_NETWORK= #ENABLE_UFW=false #TRANSMISSION_ALT_SPEED_DOWN=50 diff --git a/Dockerfile b/Dockerfile index 2c6160ce2..7962f41ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,8 @@ RUN apt-get update \ && add-apt-repository ppa:transmissionbt/ppa \ && wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | apt-key add - \ && echo "deb http://build.openvpn.net/debian/openvpn/stable xenial main" > /etc/apt/sources.list.d/openvpn-aptrepo.list \ + && apt-get install -y sudo transmission-cli transmission-common transmission-daemon curl rar unrar zip unzip wget gcc make ruby2.3-dev \ + && gem install transmission-rss \ && apt-get update \ && apt-get install -y sudo transmission-cli transmission-common transmission-daemon curl rar unrar zip unzip ufw iputils-ping openvpn \ && wget https://github.com/Secretmapper/combustion/archive/release.zip \ @@ -28,10 +30,12 @@ RUN apt-get update \ ADD openvpn/ /etc/openvpn/ ADD transmission/ /etc/transmission/ +ADD transmission/transmission-rss.conf /etc/transmission-rss.conf ENV OPENVPN_USERNAME=**None** \ OPENVPN_PASSWORD=**None** \ OPENVPN_PROVIDER=**None** \ + RSS_URL=**None** \ TRANSMISSION_ALT_SPEED_DOWN=50 \ TRANSMISSION_ALT_SPEED_ENABLED=false \ TRANSMISSION_ALT_SPEED_TIME_BEGIN=540 \ diff --git a/README.md b/README.md index 9514f4484..04e39f99b 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,11 @@ If TRANSMISSION_PEER_PORT_RANDOM_ON_START is enabled then it allows traffic to t |----------|----------|-------| |`ENABLE_UFW` | Enables the firewall | `ENABLE_UFW=true`| +### RSS feed configuration options +| Variable | Function | Example | +|----------|----------|-------| +|`RSS_URL`|The RSS feed's URL |`RSS_URL=http://.../xxxxx.rss`| + ### Alternative web UIs You can override the default web UI by setting the ```TRANSMISSION_WEB_HOME``` environment variable. If set, Transmission will look there for the Web Interface files, such as the javascript, html, and graphics files. @@ -331,6 +336,7 @@ ExecStart=/usr/bin/docker run \ -e "OPENVPN_PASSWORD=hunter2" \ -e "OPENVPN_CONFIG=Netherlands" \ -e "OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60" \ + -e "RSS_URL=http://.../xxxxx.rss" \ -e "TRANSMISSION_UMASK=0" \ -p 9091:9091 \ --dns 8.8.8.8 \ diff --git a/transmission/environment-variables.tmpl b/transmission/environment-variables.tmpl index 5ae9d6538..1c13cfa4e 100644 --- a/transmission/environment-variables.tmpl +++ b/transmission/environment-variables.tmpl @@ -73,6 +73,8 @@ export TRANSMISSION_WATCH_DIR_ENABLED={{ .Env.TRANSMISSION_WATCH_DIR_ENABLED }} # Transmission needs to know which VPN provider is used export OPENVPN_PROVIDER={{ .Env.OPENVPN_PROVIDER }} +export RSS_URL="{{ .Env.RSS_URL }}" + export ENABLE_UFW={{ .Env.ENABLE_UFW }} export TRANSMISSION_WEB_UI={{ .Env.TRANSMISSION_WEB_UI }} diff --git a/transmission/start.sh b/transmission/start.sh index e6e53134b..a32be491a 100755 --- a/transmission/start.sh +++ b/transmission/start.sh @@ -42,4 +42,12 @@ else echo "NO PORT UPDATER FOR THIS PROVIDER" fi +if [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then + echo "NO RSS URL CONFIGURED, IGNORING" +else + echo "STARTING RSS PLUGIN" + sed -i "s#RSS_URL#$RSS_URL#" /etc/transmission-rss.conf + transmission-rss +fi + echo "Transmission startup script complete." diff --git a/transmission/transmission-rss.conf b/transmission/transmission-rss.conf new file mode 100644 index 000000000..5cb5265a4 --- /dev/null +++ b/transmission/transmission-rss.conf @@ -0,0 +1,7 @@ +feeds: + - url: RSS_URL + download_path: /var/lib/transmission-daemon/downloads +server: + host: 127.0.0.1 + port: 9091 + rpc_path: /transmission/rpc \ No newline at end of file From 486d9bfd2b034a409348c86a1634555860484031 Mon Sep 17 00:00:00 2001 From: Bruno Perel Date: Sun, 3 Dec 2017 00:50:30 +0100 Subject: [PATCH 2/4] Use Dockerize to generate the transmission-rss config --- Dockerfile | 1 - transmission/start.sh | 5 ++++- transmission/transmission-rss.conf | 7 ------- transmission/transmission-rss.tmpl | 7 +++++++ 4 files changed, 11 insertions(+), 9 deletions(-) delete mode 100644 transmission/transmission-rss.conf create mode 100644 transmission/transmission-rss.tmpl diff --git a/Dockerfile b/Dockerfile index 7962f41ee..993735729 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,6 @@ RUN apt-get update \ ADD openvpn/ /etc/openvpn/ ADD transmission/ /etc/transmission/ -ADD transmission/transmission-rss.conf /etc/transmission-rss.conf ENV OPENVPN_USERNAME=**None** \ OPENVPN_PASSWORD=**None** \ diff --git a/transmission/start.sh b/transmission/start.sh index a32be491a..573a06f0b 100755 --- a/transmission/start.sh +++ b/transmission/start.sh @@ -18,6 +18,10 @@ if [ "kettu" = "$TRANSMISSION_WEB_UI" ]; then export TRANSMISSION_WEB_HOME=/opt/transmission-ui/kettu fi +if [ ! -z "${RSS_URL}" ] && [ "${RSS_URL}" != "**None**" ] ; then + dockerize -template /etc/transmission/transmission-rss.tmpl:/etc/transmission-rss.conf +fi + echo "Generating transmission settings.json from env variables" # Ensure TRANSMISSION_HOME is created mkdir -p ${TRANSMISSION_HOME} @@ -46,7 +50,6 @@ if [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then echo "NO RSS URL CONFIGURED, IGNORING" else echo "STARTING RSS PLUGIN" - sed -i "s#RSS_URL#$RSS_URL#" /etc/transmission-rss.conf transmission-rss fi diff --git a/transmission/transmission-rss.conf b/transmission/transmission-rss.conf deleted file mode 100644 index 5cb5265a4..000000000 --- a/transmission/transmission-rss.conf +++ /dev/null @@ -1,7 +0,0 @@ -feeds: - - url: RSS_URL - download_path: /var/lib/transmission-daemon/downloads -server: - host: 127.0.0.1 - port: 9091 - rpc_path: /transmission/rpc \ No newline at end of file diff --git a/transmission/transmission-rss.tmpl b/transmission/transmission-rss.tmpl new file mode 100644 index 000000000..499e88e94 --- /dev/null +++ b/transmission/transmission-rss.tmpl @@ -0,0 +1,7 @@ +feeds: + - url: {{ .Env.RSS_URL }} + download_path: {{ .Env.TRANSMISSION_DOWNLOAD_DIR }} +server: + host: 127.0.0.1 + port: 9091 + rpc_path: /transmission/rpc \ No newline at end of file From 4e6e8511b8c674f9bc5df6839882d609d6525630 Mon Sep 17 00:00:00 2001 From: Bruno Perel Date: Sun, 3 Dec 2017 01:47:47 +0100 Subject: [PATCH 3/4] Use separate container for the RSS plugin --- Dockerfile | 3 --- docker-compose-armhf.yml | 10 ++++++++++ docker-compose.yml | 7 +++++++ plugins/rss/Dockerfile | 16 ++++++++++++++++ plugins/rss/Dockerfile.armhf | 16 ++++++++++++++++ plugins/rss/environment-variables.tmpl | 4 ++++ plugins/rss/start.sh | 13 +++++++++++++ .../rss}/transmission-rss.tmpl | 2 +- transmission/environment-variables.tmpl | 2 -- transmission/start.sh | 11 ----------- 10 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 plugins/rss/Dockerfile create mode 100644 plugins/rss/Dockerfile.armhf create mode 100644 plugins/rss/environment-variables.tmpl create mode 100755 plugins/rss/start.sh rename {transmission => plugins/rss}/transmission-rss.tmpl (87%) diff --git a/Dockerfile b/Dockerfile index 993735729..2c6160ce2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,8 +11,6 @@ RUN apt-get update \ && add-apt-repository ppa:transmissionbt/ppa \ && wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | apt-key add - \ && echo "deb http://build.openvpn.net/debian/openvpn/stable xenial main" > /etc/apt/sources.list.d/openvpn-aptrepo.list \ - && apt-get install -y sudo transmission-cli transmission-common transmission-daemon curl rar unrar zip unzip wget gcc make ruby2.3-dev \ - && gem install transmission-rss \ && apt-get update \ && apt-get install -y sudo transmission-cli transmission-common transmission-daemon curl rar unrar zip unzip ufw iputils-ping openvpn \ && wget https://github.com/Secretmapper/combustion/archive/release.zip \ @@ -34,7 +32,6 @@ ADD transmission/ /etc/transmission/ ENV OPENVPN_USERNAME=**None** \ OPENVPN_PASSWORD=**None** \ OPENVPN_PROVIDER=**None** \ - RSS_URL=**None** \ TRANSMISSION_ALT_SPEED_DOWN=50 \ TRANSMISSION_ALT_SPEED_ENABLED=false \ TRANSMISSION_ALT_SPEED_TIME_BEGIN=540 \ diff --git a/docker-compose-armhf.yml b/docker-compose-armhf.yml index e21eaf1e8..7369517b1 100644 --- a/docker-compose-armhf.yml +++ b/docker-compose-armhf.yml @@ -37,3 +37,13 @@ services: - "8080:8080" volumes: - /etc/localtime:/etc/localtime:ro + + rss: + build: + context: ./plugins/rss + dockerfile: Dockerfile.armhf + image: haugene/rpi-transmission-plugin-rss + links: + - transmission + environment: + - RSS_URL=http://.../xxxxx.rss diff --git a/docker-compose.yml b/docker-compose.yml index 1cc6ee80d..6f0115e5c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,3 +30,10 @@ services: - 8080:8080 volumes: - /etc/localtime:/etc/localtime:ro + + rss: + image: haugene/transmission-rss + links: + - transmission + environment: + - RSS_URL=http://.../xxxxx.rss diff --git a/plugins/rss/Dockerfile b/plugins/rss/Dockerfile new file mode 100644 index 000000000..5e312dab3 --- /dev/null +++ b/plugins/rss/Dockerfile @@ -0,0 +1,16 @@ +FROM ubuntu:16.04 +MAINTAINER Kristian Haugene + +# Update packages and install software +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install curl gcc make ruby2.3-dev \ + && gem install transmission-rss \ + && curl -L https://github.com/jwilder/dockerize/releases/download/v0.5.0/dockerize-linux-amd64-v0.5.0.tar.gz | tar -C /usr/local/bin -xzv + +ADD . /etc/transmission-rss + +ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \ + RSS_URL=**None** + +CMD ["/etc/transmission-rss/start.sh"] diff --git a/plugins/rss/Dockerfile.armhf b/plugins/rss/Dockerfile.armhf new file mode 100644 index 000000000..e16932dc4 --- /dev/null +++ b/plugins/rss/Dockerfile.armhf @@ -0,0 +1,16 @@ +FROM resin/rpi-raspbian:jessie +MAINTAINER Kristian Haugene + +# Update packages and install software +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install curl gcc make ruby2.3-dev \ + && gem install transmission-rss \ + && curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv \ + +ADD . /etc/transmission-rss + +ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \ + RSS_URL=**None** + +CMD ["/etc/transmission-rss/start.sh"] diff --git a/plugins/rss/environment-variables.tmpl b/plugins/rss/environment-variables.tmpl new file mode 100644 index 000000000..1a2f90ce6 --- /dev/null +++ b/plugins/rss/environment-variables.tmpl @@ -0,0 +1,4 @@ +#! /bin/sh + +export TRANSMISSION_DOWNLOAD_DIR={{ .Env.TRANSMISSION_DOWNLOAD_DIR }} +export RSS_URL="{{ .Env.RSS_URL }}" \ No newline at end of file diff --git a/plugins/rss/start.sh b/plugins/rss/start.sh new file mode 100755 index 000000000..348794f49 --- /dev/null +++ b/plugins/rss/start.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Source our persisted env variables from container startup +dockerize -template /etc/transmission-rss/environment-variables.tmpl:/etc/transmission-rss/environment-variables.sh +. /etc/transmission-rss/environment-variables.sh + +if [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then + echo "NO RSS URL CONFIGURED, IGNORING" +else + dockerize -template /etc/transmission-rss/transmission-rss.tmpl:/etc/transmission-rss.conf + echo "STARTING RSS PLUGIN" + transmission-rss +fi diff --git a/transmission/transmission-rss.tmpl b/plugins/rss/transmission-rss.tmpl similarity index 87% rename from transmission/transmission-rss.tmpl rename to plugins/rss/transmission-rss.tmpl index 499e88e94..d5dca3185 100644 --- a/transmission/transmission-rss.tmpl +++ b/plugins/rss/transmission-rss.tmpl @@ -2,6 +2,6 @@ feeds: - url: {{ .Env.RSS_URL }} download_path: {{ .Env.TRANSMISSION_DOWNLOAD_DIR }} server: - host: 127.0.0.1 + host: transmission port: 9091 rpc_path: /transmission/rpc \ No newline at end of file diff --git a/transmission/environment-variables.tmpl b/transmission/environment-variables.tmpl index 1c13cfa4e..5ae9d6538 100644 --- a/transmission/environment-variables.tmpl +++ b/transmission/environment-variables.tmpl @@ -73,8 +73,6 @@ export TRANSMISSION_WATCH_DIR_ENABLED={{ .Env.TRANSMISSION_WATCH_DIR_ENABLED }} # Transmission needs to know which VPN provider is used export OPENVPN_PROVIDER={{ .Env.OPENVPN_PROVIDER }} -export RSS_URL="{{ .Env.RSS_URL }}" - export ENABLE_UFW={{ .Env.ENABLE_UFW }} export TRANSMISSION_WEB_UI={{ .Env.TRANSMISSION_WEB_UI }} diff --git a/transmission/start.sh b/transmission/start.sh index 573a06f0b..e6e53134b 100755 --- a/transmission/start.sh +++ b/transmission/start.sh @@ -18,10 +18,6 @@ if [ "kettu" = "$TRANSMISSION_WEB_UI" ]; then export TRANSMISSION_WEB_HOME=/opt/transmission-ui/kettu fi -if [ ! -z "${RSS_URL}" ] && [ "${RSS_URL}" != "**None**" ] ; then - dockerize -template /etc/transmission/transmission-rss.tmpl:/etc/transmission-rss.conf -fi - echo "Generating transmission settings.json from env variables" # Ensure TRANSMISSION_HOME is created mkdir -p ${TRANSMISSION_HOME} @@ -46,11 +42,4 @@ else echo "NO PORT UPDATER FOR THIS PROVIDER" fi -if [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then - echo "NO RSS URL CONFIGURED, IGNORING" -else - echo "STARTING RSS PLUGIN" - transmission-rss -fi - echo "Transmission startup script complete." From 5df784653939712947ee6e71a01f0c5591f081ab Mon Sep 17 00:00:00 2001 From: Bruno Perel Date: Sun, 3 Dec 2017 01:52:45 +0100 Subject: [PATCH 4/4] Update README --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 04e39f99b..91969300e 100644 --- a/README.md +++ b/README.md @@ -109,11 +109,6 @@ If TRANSMISSION_PEER_PORT_RANDOM_ON_START is enabled then it allows traffic to t |----------|----------|-------| |`ENABLE_UFW` | Enables the firewall | `ENABLE_UFW=true`| -### RSS feed configuration options -| Variable | Function | Example | -|----------|----------|-------| -|`RSS_URL`|The RSS feed's URL |`RSS_URL=http://.../xxxxx.rss`| - ### Alternative web UIs You can override the default web UI by setting the ```TRANSMISSION_WEB_HOME``` environment variable. If set, Transmission will look there for the Web Interface files, such as the javascript, html, and graphics files. @@ -153,6 +148,15 @@ You may set the following parameters to customize the user id that runs transmis |`PUID` | Sets the user id who will run transmission | `PUID=1003`| |`PGID` | Sets the group id for the transmission user | `PGID=1003` | +### RSS plugin + +The Transmission RSS plugin can optionally be run as a separate container. It allow to download torrents based on an RSS URL, see [Plugin page](https://github.com/nning/transmission-rss). + +``` +$ docker run -d -e "RSS_URL=http://.../xxxxx.rss" \ + --link :transmission \--link +``` + #### Use docker env file Another way is to use a docker env file where you can easily store all your env variables and maintain multiple configurations for different providers. In the GitHub repository there is a provided DockerEnv file with all the current transmission and openvpn environment variables. You can use this to create local configurations @@ -336,7 +340,6 @@ ExecStart=/usr/bin/docker run \ -e "OPENVPN_PASSWORD=hunter2" \ -e "OPENVPN_CONFIG=Netherlands" \ -e "OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60" \ - -e "RSS_URL=http://.../xxxxx.rss" \ -e "TRANSMISSION_UMASK=0" \ -p 9091:9091 \ --dns 8.8.8.8 \