From f053cb6c4219e928e68c3d3224fdd85b30db4bed Mon Sep 17 00:00:00 2001 From: Kristian Haugene Date: Thu, 7 May 2015 21:34:34 +0200 Subject: [PATCH 1/3] enhanced a few things. running plain ubuntu, openvpn starts transmission when connection is establised and so on --- Dockerfile | 22 ++++++---------------- piaconfig/config.ovpn | 5 ++++- transmission/down.sh | 3 +++ transmission/run.sh | 8 ++++++-- 4 files changed, 19 insertions(+), 19 deletions(-) create mode 100755 transmission/down.sh diff --git a/Dockerfile b/Dockerfile index d6e33ab..7770d40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # # Version 0.9 -FROM phusion/baseimage:0.9.15 +FROM ubuntu:14.04 MAINTAINER Kristian Haugene VOLUME /data @@ -21,19 +21,6 @@ RUN apt-get install -y transmission-common RUN apt-get install -y transmission-daemon RUN apt-get install -y openvpn RUN apt-get install -y curl -RUN apt-get install -y screen - -# Transmission service -RUN mkdir -p /etc/service/transmission/ -ADD transmission/run.sh /etc/service/transmission/run - -# Transmission port updater -RUN mkdir -p /etc/service/portupdater/ -ADD transmission/runUpdates.sh /etc/service/portupdater/run - -# OpenVPN service -RUN mkdir -p /etc/service/openvpn/ -ADD runOpenVpn.sh /etc/service/openvpn/run VOLUME /config @@ -41,14 +28,17 @@ VOLUME /config ADD piaconfig/config.ovpn /etc/openvpn/config.ovpn ADD piaconfig/ca.crt /etc/openvpn/ca.crt ADD piaconfig/crl.pem /etc/openvpn/crl.pem -ADD runOpenVpn.sh /etc/openvpn/start.sh ADD transmission/defaultSettings.json /etc/transmission-daemon/settings.json ADD transmission/updateTransmissionPort.sh /etc/transmission-daemon/updatePort.sh ADD transmission/periodicUpdates.sh /etc/transmission-daemon/periodicUpdates.sh +ADD transmission/run.sh /etc/transmission-daemon/start.sh +ADD transmission/runUpdates.sh /etc/transmission-daemon/startPortUpdates.sh +ADD transmission/down.sh /etc/transmission-daemon/stop.sh +ADD runOpenVpn.sh /etc/openvpn/start.sh # Expose port and run. Use baseimage-docker's init system EXPOSE 9091 -CMD ["/sbin/my_init"] +CMD ["/etc/openvpn/start.sh"] # Clean up APT when done. RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/piaconfig/config.ovpn b/piaconfig/config.ovpn index 0529277..c3f8b06 100644 --- a/piaconfig/config.ovpn +++ b/piaconfig/config.ovpn @@ -15,4 +15,7 @@ verb 1 reneg-sec 0 crl-verify /etc/openvpn/crl.pem - +# OpenVPN control startup and shut down of transmission +script-security 2 +up /etc/transmission-daemon/start.sh +down /etc/transmission-daemon/stop.sh diff --git a/transmission/down.sh b/transmission/down.sh new file mode 100755 index 0000000..0f9c4f4 --- /dev/null +++ b/transmission/down.sh @@ -0,0 +1,3 @@ +#! /bin/bash + +kill $(ps aux | grep transmission-daemon | grep -v grep | awk '{print $2}') diff --git a/transmission/run.sh b/transmission/run.sh index 0853b83..09bf33f 100755 --- a/transmission/run.sh +++ b/transmission/run.sh @@ -3,8 +3,12 @@ if [ -f /config/transmission/settings.json ]; then echo "STARTING TRANSMISSION: Using custom config directory /config/transmission" - exec /usr/bin/transmission-daemon -f -g /config/transmission/ + exec /usr/bin/transmission-daemon -g /config/transmission/ & else echo "STARTING TRANSMISSION: No configuration provided, using defaults" - exec /usr/bin/transmission-daemon -f -g /etc/transmission-daemon/ + exec /usr/bin/transmission-daemon -g /etc/transmission-daemon/ & fi + +exec /etc/transmission-daemon/startPortUpdates.sh & + +echo "STARTED PORT UPDATER" From 804b21b172f1fce9e23229a70aeee4dcf3a81f76 Mon Sep 17 00:00:00 2001 From: Kristian Haugene Date: Thu, 7 May 2015 21:57:02 +0200 Subject: [PATCH 2/3] Update README.md --- README.md | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 8a3c98b..805b39f 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This Docker container lets you run Transmission with WebUI while connecting to P The container is available from the Docker registry and this is the simplest way to get it. To run the container use this command: ``` -docker run --privileged -d -v /your/storage/path/:/data -v /your/config/path/:/config -p 9091:9091 haugene/transmission-openvpn +$ docker run --privileged -d -v /your/storage/path/:/data -v /your/config/path/:/config -p 9091:9091 haugene/transmission-openvpn ``` As you can see, the container expects two volumes to be mounted. One is used for storing your downloads from Transmission, and the other provides configurations. The container comes with a default Transmission settings.json file that expects the folders "completed, incomplete and watch" to be present in /your/storage/path (aka /data). This is where Transmission will store your downloads, incomplete downloads and a watch directory to look for new .torrent files. @@ -20,12 +20,12 @@ To build this container, clone the repository and cd into it. ### Build it: ``` -cd /repo/location/docker-transmission-openvpn -docker build -t="docker-transmission-openvpn" . +$ cd /repo/location/docker-transmission-openvpn +$ docker build -t="docker-transmission-openvpn" . ``` ### Run it: ``` -docker run --privileged -d -v /your/storage/path/:/data -v /your/config/path/:/config -p 9091:9091 docker-transmission-openvpn +$ docker run --privileged -d -v /your/storage/path/:/data -v /your/config/path/:/config -p 9091:9091 docker-transmission-openvpn ``` As described in the "Run container from Docker registry" section, this will start a container with default settings. This means that you should have the folders "completed, incomplete and watch" in /your/storage/path, and pia-credentials.txt in /your/config/path. @@ -47,7 +47,7 @@ This is because the VPN is active, and since docker is running in a different ip There are several ways to fix this. You can pipe and do fancy iptables or ip route configurations on the host and in the Docker image. But I found that the simplest solution is just to proxy my traffic. Start a Nginx container like this: ``` -docker run -d -v /path/to/nginx.conf:/etc/nginx.conf:ro -p 8080:80 nginx +$ docker run -d -v /path/to/nginx.conf:/etc/nginx.conf:ro -p 8080:80 nginx ``` Where /path/to/nginx.conf has this content: @@ -69,21 +69,18 @@ Your Transmission WebUI should now be avaliable at "your.host.ip.addr:8080/trans Change the port in the docker run command if 8080 is not suitable for you. ### What if I want to run the container interactively. -If you want do have access inside the container while running, do like this. +If you want do have access inside the container while running you have two choices. To have a look inside an already running container, use docker exec to get a terminal inside the container. ``` -docker run --privileged -v /mnt/disk1/Torrents/:/data -v /your/config/path/:/config -p 9091:9091 -it --entrypoint=/bin/bash docker-transmission-openvpn +$ docker ps | grep transmission-openvpn | awk '{print $1}' // Prints container id +$ af4dd385916d +$ docker exec -it af4dd bash ``` -This will start the container and give you a bash shell to work from. The container has screen installed, so you can use screen to start the init system which starts openVPN and Transmission. Then you can detach from screen and continue to use bash inside the running container. If you're unfamiliar with screen, read up on it. The commands are as follows: - -``` -screen -``` -Accept the terms, then run my_init and detach. +If you want to start the container without it starting OpenVPN on boot, then run the image without daemonizing and use bash as entrypoint. ``` -/sbin/my_init -CTRL+A + d +$ docker run --privileged -it transmission-openvpn bash ``` -You should now be detached and both services should be running. + +From there you can start the service yourself, or do whatever (probably developer-related) you came to do. From cc46422229b7e6140e66c65318812fa853b672b6 Mon Sep 17 00:00:00 2001 From: Kristian Haugene Date: Thu, 7 May 2015 22:33:31 +0200 Subject: [PATCH 3/3] for kicks --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7770d40..5bd42c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Transmission and OpenVPN # -# Version 0.9 +# Version 1.0 FROM ubuntu:14.04 MAINTAINER Kristian Haugene