Skip to content

Commit

Permalink
Merge pull request #665 from AdrienKuhn/update-automatic-arm-builds
Browse files Browse the repository at this point in the history
Fix builds on ARM arch but keeping ARM cross builds.
  • Loading branch information
haugene authored Dec 17, 2018
2 parents 3f8d750 + 117aaf0 commit ec4502d
Show file tree
Hide file tree
Showing 8 changed files with 188 additions and 31 deletions.
4 changes: 0 additions & 4 deletions Dockerfile.armhf
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
FROM resin/rpi-raspbian:stretch
MAINTAINER Kristian Haugene

RUN [ "cross-build-start" ]

VOLUME /data
VOLUME /config

Expand Down Expand Up @@ -129,5 +127,3 @@ ENV OPENVPN_USERNAME=**None** \
# Expose port and run
EXPOSE 9091
CMD ["dumb-init", "/etc/openvpn/start.sh"]

RUN [ "cross-build-end" ]
131 changes: 131 additions & 0 deletions DockerfileCrossBuild.armhf
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# This Dockerfile is for building ARM images on x64 machine like Docker Hub

FROM resin/rpi-raspbian:stretch
MAINTAINER Kristian Haugene

RUN [ "cross-build-start" ]

VOLUME /data
VOLUME /config

# Update packages and install software
RUN apt-get update \
&& apt-get -y install transmission-cli transmission-common transmission-daemon \
&& apt-get install -y dumb-init unzip openvpn curl ufw git tinyproxy jq \
&& curl -L -o /tmp/release.zip https://github.com/Secretmapper/combustion/archive/release.zip \
&& unzip /tmp/release.zip -d /opt/transmission-ui/ \
&& rm /tmp/release.zip \
&& git clone git://github.com/endor/kettu.git /opt/transmission-ui/kettu \
&& mkdir /opt/transmission-ui/transmission-web-control \
&& curl -L https://github.com/ronggang/twc-release/raw/master/src.tar.gz \
| tar -C /opt/transmission-ui/transmission-web-control/ -xzv \
&& apt-get purge git unzip \
&& apt-get autoremove --purge \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.6.0/dockerize-linux-armhf-v0.6.0.tar.gz \
| tar -C /usr/local/bin -xzv \
&& groupmod -g 1000 users \
&& useradd -u 911 -U -d /config -s /bin/false abc \
&& usermod -G users abc

# Add configuration and scripts
ADD openvpn/ /etc/openvpn/
ADD transmission/ /etc/transmission/
ADD tinyproxy /opt/tinyproxy/

ENV OPENVPN_USERNAME=**None** \
OPENVPN_PASSWORD=**None** \
OPENVPN_PROVIDER=**None** \
GLOBAL_APPLY_PERMISSIONS=true \
TRANSMISSION_ALT_SPEED_DOWN=50 \
TRANSMISSION_ALT_SPEED_ENABLED=false \
TRANSMISSION_ALT_SPEED_TIME_BEGIN=540 \
TRANSMISSION_ALT_SPEED_TIME_DAY=127 \
TRANSMISSION_ALT_SPEED_TIME_ENABLED=false \
TRANSMISSION_ALT_SPEED_TIME_END=1020 \
TRANSMISSION_ALT_SPEED_UP=50 \
TRANSMISSION_BIND_ADDRESS_IPV4=0.0.0.0 \
TRANSMISSION_BIND_ADDRESS_IPV6=:: \
TRANSMISSION_BLOCKLIST_ENABLED=false \
TRANSMISSION_BLOCKLIST_URL=http://www.example.com/blocklist \
TRANSMISSION_CACHE_SIZE_MB=4 \
TRANSMISSION_DHT_ENABLED=true \
TRANSMISSION_DOWNLOAD_DIR=/data/completed \
TRANSMISSION_DOWNLOAD_LIMIT=100 \
TRANSMISSION_DOWNLOAD_LIMIT_ENABLED=0 \
TRANSMISSION_DOWNLOAD_QUEUE_ENABLED=true \
TRANSMISSION_DOWNLOAD_QUEUE_SIZE=5 \
TRANSMISSION_ENCRYPTION=1 \
TRANSMISSION_IDLE_SEEDING_LIMIT=30 \
TRANSMISSION_IDLE_SEEDING_LIMIT_ENABLED=false \
TRANSMISSION_INCOMPLETE_DIR=/data/incomplete \
TRANSMISSION_INCOMPLETE_DIR_ENABLED=true \
TRANSMISSION_LPD_ENABLED=false \
TRANSMISSION_MAX_PEERS_GLOBAL=200 \
TRANSMISSION_MESSAGE_LEVEL=2 \
TRANSMISSION_PEER_CONGESTION_ALGORITHM= \
TRANSMISSION_PEER_ID_TTL_HOURS=6 \
TRANSMISSION_PEER_LIMIT_GLOBAL=200 \
TRANSMISSION_PEER_LIMIT_PER_TORRENT=50 \
TRANSMISSION_PEER_PORT=51413 \
TRANSMISSION_PEER_PORT_RANDOM_HIGH=65535 \
TRANSMISSION_PEER_PORT_RANDOM_LOW=49152 \
TRANSMISSION_PEER_PORT_RANDOM_ON_START=false \
TRANSMISSION_PEER_SOCKET_TOS=default \
TRANSMISSION_PEX_ENABLED=true \
TRANSMISSION_PORT_FORWARDING_ENABLED=false \
TRANSMISSION_PREALLOCATION=1 \
TRANSMISSION_PREFETCH_ENABLED=1 \
TRANSMISSION_QUEUE_STALLED_ENABLED=true \
TRANSMISSION_QUEUE_STALLED_MINUTES=30 \
TRANSMISSION_RATIO_LIMIT=2 \
TRANSMISSION_RATIO_LIMIT_ENABLED=false \
TRANSMISSION_RENAME_PARTIAL_FILES=true \
TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=false \
TRANSMISSION_RPC_BIND_ADDRESS=0.0.0.0 \
TRANSMISSION_RPC_ENABLED=true \
TRANSMISSION_RPC_HOST_WHITELIST= \
TRANSMISSION_RPC_HOST_WHITELIST_ENABLED=false \
TRANSMISSION_RPC_PASSWORD=password \
TRANSMISSION_RPC_PORT=9091 \
TRANSMISSION_RPC_URL=/transmission/ \
TRANSMISSION_RPC_USERNAME=username \
TRANSMISSION_RPC_WHITELIST=127.0.0.1 \
TRANSMISSION_RPC_WHITELIST_ENABLED=false \
TRANSMISSION_SCRAPE_PAUSED_TORRENTS_ENABLED=true \
TRANSMISSION_SCRIPT_TORRENT_DONE_ENABLED=false \
TRANSMISSION_SCRIPT_TORRENT_DONE_FILENAME= \
TRANSMISSION_SEED_QUEUE_ENABLED=false \
TRANSMISSION_SEED_QUEUE_SIZE=10 \
TRANSMISSION_SPEED_LIMIT_DOWN=100 \
TRANSMISSION_SPEED_LIMIT_DOWN_ENABLED=false \
TRANSMISSION_SPEED_LIMIT_UP=100 \
TRANSMISSION_SPEED_LIMIT_UP_ENABLED=false \
TRANSMISSION_START_ADDED_TORRENTS=true \
TRANSMISSION_TRASH_ORIGINAL_TORRENT_FILES=false \
TRANSMISSION_UMASK=2 \
TRANSMISSION_UPLOAD_LIMIT=100 \
TRANSMISSION_UPLOAD_LIMIT_ENABLED=0 \
TRANSMISSION_UPLOAD_SLOTS_PER_TORRENT=14 \
TRANSMISSION_UTP_ENABLED=true \
TRANSMISSION_WATCH_DIR=/data/watch \
TRANSMISSION_WATCH_DIR_ENABLED=true \
TRANSMISSION_HOME=/data/transmission-home \
TRANSMISSION_WATCH_DIR_FORCE_GENERIC=false \
ENABLE_UFW=false \
UFW_ALLOW_GW_NET=false \
UFW_EXTRA_PORTS= \
UFW_DISABLE_IPTABLES_REJECT=false \
TRANSMISSION_WEB_UI=\
PUID=\
PGID=\
TRANSMISSION_WEB_HOME= \
DROP_DEFAULT_ROUTE= \
WEBPROXY_ENABLED=false \
WEBPROXY_PORT=8888

# Expose port and run
EXPOSE 9091
CMD ["dumb-init", "/etc/openvpn/start.sh"]

RUN [ "cross-build-end" ]
16 changes: 9 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ This image was created for my own use, but sharing is caring, so it had to be op
It has now gotten quite popular, and that's great! But keeping it up to date, providing support, fixes
and new features takes a lot of time.

I'm therefore kindly asking you to donate if you feel like you're getting a good tool
I'm therefore kindly asking you to donate if you feel like you're getting a good tool
and you're able to spare some dollars to keep it functioning as it should. There's a couple of ways to do it:

Become a patron, supporting the project with a small monthly amount.
Expand Down Expand Up @@ -207,8 +207,8 @@ This is to prevent leaking the host IP.

This container also contains a web-proxy server to allow you to tunnel your web-browser traffic through the same OpenVPN tunnel.
This is useful if you are using a private tracker that needs to see you login from the same IP address you are torrenting from.
The default listening port is 8888. Note that only ports above 1024 can be specified as all ports below 1024 are privileged
and would otherwise require root permissions to run.
The default listening port is 8888. Note that only ports above 1024 can be specified as all ports below 1024 are privileged
and would otherwise require root permissions to run.
Remember to add a port binding for your selected (or default) port when starting the container.

| Variable | Function | Example |
Expand Down Expand Up @@ -356,10 +356,12 @@ For example, another container may pause or restrict transmission speeds while t

## Running on ARM (Raspberry PI)
Since the Raspberry PI runs on an ARM architecture instead of x64, the existing x64 images will not
work properly. To support users that wish to run this container on a Raspberry Pi, there are 2 additional
Dockerfiles created. The Dockerfiles supported by the Raspberry PI are Dockerfile.armhf -- there is
work properly. There are 2 additional Dockerfiles created. The Dockerfiles supported by the Raspberry PI are Dockerfile.armhf -- there is
also an example docker-compose-armhf file that shows how you might use Transmission/OpenVPN and the
corresponding nginx reverse proxy on an RPI machine.
You can use the `latest-armhf` tag for each images (see docker-compose-armhf.yml) or build your own images using Dockerfile.armhf.



## Make it work on Synology NAS
Here are the steps to run it on a Synology NAS (Tested on DSM 6) :
Expand Down Expand Up @@ -399,8 +401,8 @@ nameserver 8.8.8.8
nameserver 8.8.4.4
```
- Save the file with [escape] + `:wq!`
- Create your docker container with a the following command line:
- Create your docker container with a the following command line:

# Tested on DSM 6.1.4-15217 Update 1, Docker Package 17.05.0-0349
docker run \
--cap-add=NET_ADMIN \
Expand Down
16 changes: 4 additions & 12 deletions docker-compose-armhf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ version: '2'

services:
transmission:
build:
context: .
dockerfile: Dockerfile.armhf
image: haugene/rpi-transmission-openvpn
image: haugene/transmission-openvpn:latest-armhf
cap_add:
- NET_ADMIN
devices:
Expand All @@ -26,11 +23,9 @@ services:
- OPENVPN_PASSWORD=password
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60
- LOCAL_NETWORK=192.168.0.0/24

proxy:
build:
context: ./proxy
dockerfile: Dockerfile.armhf
image: haugene/rpi-transmission-openvpn-proxy
image: haugene/transmission-openvpn-proxy:latest-armhf
links:
- transmission
ports:
Expand All @@ -39,10 +34,7 @@ services:
- /etc/localtime:/etc/localtime:ro

rss:
build:
context: ./plugins/rss
dockerfile: Dockerfile.armhf
image: haugene/rpi-transmission-plugin-rss
image: haugene/transmission-rss:latest-armhf
links:
- transmission
environment:
Expand Down
4 changes: 0 additions & 4 deletions plugins/rss/Dockerfile.armhf
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
FROM resin/rpi-raspbian:stretch
MAINTAINER Kristian Haugene

RUN [ "cross-build-start" ]

# Update packages and install software
RUN apt-get update \
&& apt-get -y upgrade \
Expand All @@ -16,5 +14,3 @@ ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \
RSS_URL=**None**

CMD ["/etc/transmission-rss/start.sh"]

RUN [ "cross-build-end" ]
22 changes: 22 additions & 0 deletions plugins/rss/DockerfileCrossBuild.armhf
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# This Dockerfile is for building ARM images on x64 machine like Docker Hub

FROM resin/rpi-raspbian:stretch
MAINTAINER Kristian Haugene

RUN [ "cross-build-start" ]

# Update packages and install software
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install curl gcc make ruby2.3-dev libc6-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"]

RUN [ "cross-build-end" ]
4 changes: 0 additions & 4 deletions proxy/Dockerfile.armhf
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
FROM resin/rpi-raspbian:stretch

RUN [ "cross-build-start" ]

RUN apt-get update \
&& apt-get install -y \
ca-certificates \
Expand All @@ -16,5 +14,3 @@ EXPOSE 8080
COPY nginx.conf /etc/nginx/nginx.conf

CMD ["nginx", "-g", "daemon off;"]

RUN [ "cross-build-end" ]
22 changes: 22 additions & 0 deletions proxy/DockerfileCrossBuild.armhf
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# This Dockerfile is for building ARM images on x64 machine like Docker Hub

FROM resin/rpi-raspbian:stretch

RUN [ "cross-build-start" ]

RUN apt-get update \
&& apt-get install -y \
ca-certificates \
nginx \
&& rm -rf /var/lib/apt/lists/*

RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 8080

COPY nginx.conf /etc/nginx/nginx.conf

CMD ["nginx", "-g", "daemon off;"]

RUN [ "cross-build-end" ]

0 comments on commit ec4502d

Please sign in to comment.