Merge branch 'v0.2.0'

This commit is contained in:
Kelvin Chen 2016-10-07 02:45:52 -04:00
commit bb83ddd2e7
26 changed files with 87 additions and 117 deletions

View File

@ -1,20 +0,0 @@
FROM debian:jessie
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
# Install all dependencies that are used in multiple images.
RUN echo "deb http://httpredir.debian.org/debian jessie non-free" \
>> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install --no-install-recommends -y \
vim \
ca-certificates \
python \
python-dev \
curl \
git \
nginx \
unzip \
unrar \
supervisor \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

View File

@ -1,10 +1,7 @@
FROM kelvinchen/seedbox:base FROM nginx:1.11-alpine
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
RUN apt-get update \ RUN apk add --no-cache apache2-utils openssl
&& apt-get install --no-install-recommends -y apache2-utils \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
VOLUME /config VOLUME /config
@ -15,7 +12,7 @@ ENV USERNAME=user \
USE_SSL=false USE_SSL=false
COPY nginx.conf common_default.conf ssl.conf /etc/nginx/ COPY nginx.conf common_default.conf ssl.conf /etc/nginx/
COPY start / COPY init /
COPY ssl-gen /usr/local/bin COPY ssl-gen /usr/local/bin
CMD ["/start"] CMD ["/init"]

View File

@ -3,7 +3,10 @@
listen 80; listen 80;
listen [::]:80; listen [::]:80;
include proxy_params; proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection; proxy_set_header Connection $http_connection;
proxy_redirect off; proxy_redirect off;

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env sh
# Make placeholder config directory # Make placeholder config directory
mkdir -p /config/frontend mkdir -p /config/frontend

View File

@ -29,25 +29,25 @@ http {
gzip on; gzip on;
gzip_disable "msie6"; gzip_disable "msie6";
client_max_body_size 8M; client_max_body_size 0;
auth_basic "Restricted"; auth_basic "Restricted";
auth_basic_user_file .htpasswd; auth_basic_user_file .htpasswd;
upstream rtorrent { upstream rtorrent {
server seedbox_rtorrent_1; server rtorrent;
} }
upstream syncthing { upstream syncthing {
server seedbox_syncthing_1:8384; server syncthing:8384;
} }
upstream plex { upstream plex {
server seedbox_plex_1:32400; server plex:32400;
} }
upstream sickrage { upstream sickrage {
server seedbox_sickrage_1:8081; server sickrage:8081;
} }
server { server {

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env sh
# Short helper script to generate self signed SSL certificates. # Short helper script to generate self signed SSL certificates.

View File

@ -1,4 +1,4 @@
FROM kelvinchen/seedbox:base FROM ubuntu:xenial
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
# Install OpenVPN # Install OpenVPN
@ -17,7 +17,7 @@ EXPOSE 1194/udp
VOLUME /config VOLUME /config
COPY vars /usr/share/easy-rsa/ COPY vars /usr/share/easy-rsa/
COPY openvpn.conf start client.ovpn / COPY openvpn.conf init client.ovpn /
COPY create-client /usr/local/bin/ COPY export-client /usr/local/bin/
CMD ["/start"] CMD ["/init"]

View File

@ -1,8 +1,12 @@
FROM kelvinchen/seedbox:base FROM buildpack-deps:xenial-scm
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
RUN curl -sL "https://plex.tv/downloads/latest/1?channel=8&build=linux-ubuntu-x86_64&distro=ubuntu&X-Plex-Token=" > /tmp/plex.deb \ # Download plexupdate script and install Plex
&& dpkg -i /tmp/plex.deb \ # This script can be later used to update Plex directly in the container
RUN curl -sL "https://github.com/mrworf/plexupdate/raw/master/plexupdate.sh" \
> /usr/local/bin/plexupdate \
&& chmod +x /usr/local/bin/plexupdate \
&& plexupdate -pad \
&& apt-get clean \ && apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@ -11,6 +15,6 @@ VOLUME /config
EXPOSE 32400 EXPOSE 32400
COPY plexmediaserver /etc/default/plexmediaserver COPY plexmediaserver /etc/default/plexmediaserver
COPY start Preferences.xml / COPY init Preferences.xml /
CMD ["/start"] CMD ["/init"]

13
Dockerfiles/plex/init Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Update to latest plexpass version
if [[ "$PLEX_EMAIL" ]]; then
echo -e "EMAIL='$PLEX_EMAIL'\nPASS='$PLEX_PASSWORD'" > "$HOME/.plexupdate"
plexupdate -ad
fi
mkdir -p "/config/Plex Media Server/"
cp -n /Preferences.xml "/config/Plex Media Server/"
rm -f "/config/Plex Media Server/plexmediaserver.pid"
start_pms > /dev/null 2>&1

View File

@ -1,7 +0,0 @@
#!/usr/bin/env bash
mkdir -p "/config/Plex Media Server/"
cp -n /Preferences.xml "/config/Plex Media Server/"
rm "/config/Plex Media Server/plexmediaserver.pid"
start_pms > /dev/null 2>&1

View File

@ -1,48 +1,35 @@
FROM kelvinchen/seedbox:base FROM buildpack-deps:xenial-scm
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
# Install all dependencies # Install dependencies
RUN echo "deb http://httpredir.debian.org/debian stretch main" >> /etc/apt/sources.list \ RUN apt-get update \
&& apt-get update \ && apt-get install -y \
&& apt-get install -y --no-install-recommends \ supervisor \
rtorrent \ rtorrent \
php5-fpm \
php5-cli \
php5-geoip \
mediainfo \ mediainfo \
irssi \ php7.0-fpm \
libxml-libxml-perl \ php7.0-cli \
libxml-libxslt-perl \ nginx \
libjson-perl \ unrar-free \
libjson-xs-perl \ unzip \
libnet-ssleay-perl \ ffmpeg \
libdigest-perl \
libdigest-sha-perl \
libhtml-parser-perl \
libarchive-zip-perl \
&& apt-get clean \ && apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Configure/install r(u)torrent and autodl-irssi # Configure/install r(u)torrent
RUN ln -s /config/rtorrent/rtorrent.rc ~/.rtorrent.rc \ RUN ln -s /config/rtorrent/rtorrent.rc ~/.rtorrent.rc \
&& mkdir -p /var/run/php \
&& git clone --depth=1 \ && git clone --depth=1 \
https://github.com/Novik/ruTorrent.git \ https://github.com/Novik/ruTorrent.git \
/opt/rutorrent \ /opt/rutorrent \
&& git clone --depth=1 --recursive \ && sed -i "s/www-data/root/g" /etc/php/7.0/fpm/pool.d/www.conf
https://github.com/autodl-community/autodl-irssi.git \
~/.irssi/scripts \
&& mkdir -p ~/.irssi/scripts/autorun \
&& cp ~/.irssi/scripts/autodl-irssi.pl ~/.irssi/scripts/autorun \
&& ln -s /config/autodl/ ~/.autodl \
&& sed -i "s/www-data/root/g" /etc/php5/fpm/pool.d/www.conf
VOLUME /config /torrents VOLUME /config /torrents
EXPOSE 80 49161 49161/udp 6881/udp EXPOSE 80 49161 49161/udp 6881/udp
COPY start rtorrent.rc supervisord.conf autodl.cfg / COPY init rtorrent.rc supervisord.conf /
COPY nginx.conf /etc/nginx/nginx.conf COPY nginx.conf /etc/nginx/nginx.conf
COPY rutorrent_config.php /opt/rutorrent/conf/config.php COPY rutorrent_config.php /opt/rutorrent/conf/config.php
COPY irssi.cfg /root/.irssi/config
CMD ["/start"] CMD ["/init"]

View File

@ -1,3 +0,0 @@
[options]
gui-server-port = 39410
gui-server-password = password

View File

@ -7,17 +7,10 @@ mkdir -p /config/rtorrent
cp -n /rtorrent.rc /config/rtorrent/rtorrent.rc cp -n /rtorrent.rc /config/rtorrent/rtorrent.rc
# Remove rtorrent lock file if it exists so rtorrent can start # Remove rtorrent lock file if it exists so rtorrent can start
rm /config/rtorrent/rtorrent.lock rm -f /config/rtorrent/rtorrent.lock
# Make folders for storing rutorrent data # Make folders for storing rutorrent data
mkdir -p /config/rutorrent/settings /config/rutorrent/torrents \ mkdir -p /config/rutorrent/settings /config/rutorrent/torrents \
/config/rutorrent/users /config/rutorrent/plugins /config/rutorrent/users /config/rutorrent/plugins
# Copy all plugins in /config/rutorrent/plugins to the rutorrent directory
cp -rf $(ls -d1 /config/rutorrent/plugins/**) /opt/rutorrent/plugins/
# Set up autodl-irssi
mkdir -p /config/autodl
cp -n /autodl.cfg /config/autodl
supervisord -c /supervisord.conf supervisord -c /supervisord.conf

View File

@ -1,4 +0,0 @@
settings = {
core = { real_name = "irssi"; user_name = "irssi"; nick = "irssi"; };
"fe-text" = { actlist_sort = "refnum"; };
};

View File

@ -24,10 +24,7 @@ http {
access_log off; access_log off;
error_log off; error_log off;
gzip on; client_max_body_size 0;
gzip_disable "msie6";
client_max_body_size 8M;
server { server {
listen 80 default_server; listen 80 default_server;
@ -42,11 +39,11 @@ http {
} }
location / { location / {
try_files $uri $uri/ =404; try_files $uri $uri/ =404;
location ~ \.php$ { location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php; fastcgi_index index.php;
include fastcgi.conf; include fastcgi.conf;
} }

View File

@ -11,16 +11,10 @@ autorestart = true
[program:php] [program:php]
priority = 2 priority = 2
command = php5-fpm -F -R command = php-fpm7.0 -F -R
autorestart = true autorestart = true
[program:nginx] [program:nginx]
priority = 3 priority = 3
command = nginx -g "daemon off;" command = nginx -g "daemon off;"
autorestart = true autorestart = true
[program:autodl-irssi]
priority = 4
environment = TERM=xterm
command = irssi
autorestart = true

View File

@ -1,4 +1,4 @@
FROM kelvinchen/seedbox:base FROM buildpack-deps:xenial-scm
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
RUN apt-get update \ RUN apt-get update \

View File

@ -1,4 +1,4 @@
FROM kelvinchen/seedbox:base FROM buildpack-deps:xenial-curl
MAINTAINER Kelvin Chen <kelvin@kelvinchen.org> MAINTAINER Kelvin Chen <kelvin@kelvinchen.org>
RUN curl -sL https://syncthing.net/release-key.txt | apt-key add - \ RUN curl -sL https://syncthing.net/release-key.txt | apt-key add - \
@ -13,6 +13,6 @@ VOLUME /config
EXPOSE 8384 22000 21027/udp EXPOSE 8384 22000 21027/udp
COPY start config.xml / COPY init config.xml /
CMD ["/start"] CMD ["/init"]

View File

@ -43,10 +43,17 @@ Copy the `config.default` file to `config` and change the variables as desired.
The variables are all self-explanatory. The variables are all self-explanatory.
If you want to enable SSL, you would need to have your certificate and key be If you want to enable SSL, you would need to have your certificate and key be
at `/config/frontend/ssl.crt` and `/config/frontend/ssl.key` respectively. The at `/config/frontend/ssl.crt` and `/config/frontend/ssl.key` respectively. The
frontend image includes a command `ssl-gen` to automatically create self signed frontend image includes a command `ssl-gen` to automatically create self signed
certificates for you. certificates for you.
## PlexPass
If you own PlexPass, you can get the docker image to auto-update to the latest
PlexPass version when the container starts up. This is arguably bad docker
practice since containers are supposed to be immutable, but in this case, I
think the convenience outweighs that. All you have to do is set the
`PLEX_EMAIL` and `PLEX_PASSWORD` variables in the config file.
## Where is my data? ## Where is my data?
All data are saved in the docker volumes `seedbox_config` or All data are saved in the docker volumes `seedbox_config` or
`seedbox_torrents`. `seedbox_torrents`.
@ -58,7 +65,7 @@ editing the volumes settings in the `docker-compose.yml` file.
The OpenVPN container generates a single client key/cert pair by default. The OpenVPN container generates a single client key/cert pair by default.
Run the command below to get your OpenVPN config file: Run the command below to get your OpenVPN config file:
```sh ```sh
$ docker exec seedbox_openvpn_1 create-client client >> client.ovpn $ docker-compose exec openvpn export-client client >> client.ovpn
``` ```
Edit the `client.ovpn` and replace the line `remote MYSERVER_HOST 1194` with Edit the `client.ovpn` and replace the line `remote MYSERVER_HOST 1194` with
the hostname or IP address of your server. the hostname or IP address of your server.

View File

@ -22,8 +22,6 @@ while getopts ":nq" opt; do
esac esac
done done
docker build -t kelvinchen/seedbox:base --pull Dockerfiles/base
docker build -t kelvinchen/seedbox:frontend $ARGS Dockerfiles/frontend & docker build -t kelvinchen/seedbox:frontend $ARGS Dockerfiles/frontend &
docker build -t kelvinchen/seedbox:plex $ARGS Dockerfiles/plex & docker build -t kelvinchen/seedbox:plex $ARGS Dockerfiles/plex &
docker build -t kelvinchen/seedbox:rtorrent $ARGS Dockerfiles/rtorrent & docker build -t kelvinchen/seedbox:rtorrent $ARGS Dockerfiles/rtorrent &

View File

@ -1,3 +1,7 @@
USERNAME=username USERNAME=username
PASSWORD=hunter2 PASSWORD=hunter2
USE_SSL=false USE_SSL=false
# For Plex Pass downlaod
PLEX_EMAIL=
PLEX_PASSWORD=

View File

@ -12,6 +12,7 @@ volumes:
services: services:
frontend: frontend:
image: kelvinchen/seedbox:frontend image: kelvinchen/seedbox:frontend
build: Dockerfiles/frontend
restart: always restart: always
networks: networks:
- main - main
@ -25,6 +26,7 @@ services:
rtorrent: rtorrent:
image: kelvinchen/seedbox:rtorrent image: kelvinchen/seedbox:rtorrent
build: Dockerfiles/rtorrent
restart: always restart: always
networks: networks:
- main - main
@ -38,6 +40,7 @@ services:
plex: plex:
image: kelvinchen/seedbox:plex image: kelvinchen/seedbox:plex
build: Dockerfiles/plex
restart: always restart: always
networks: networks:
- main - main
@ -46,9 +49,12 @@ services:
volumes: volumes:
- config:/config - config:/config
- torrents:/torrents - torrents:/torrents
env_file:
- config
sickrage: sickrage:
image: kelvinchen/seedbox:sickrage image: kelvinchen/seedbox:sickrage
build: Dockerfiles/sickrage
restart: always restart: always
networks: networks:
- main - main
@ -58,6 +64,7 @@ services:
syncthing: syncthing:
image: kelvinchen/seedbox:syncthing image: kelvinchen/seedbox:syncthing
build: Dockerfiles/syncthing
restart: always restart: always
networks: networks:
- main - main
@ -70,6 +77,7 @@ services:
openvpn: openvpn:
image: kelvinchen/seedbox:openvpn image: kelvinchen/seedbox:openvpn
build: Dockerfiles/openvpn
restart: always restart: always
networks: networks:
- main - main

View File

@ -2,7 +2,6 @@
# Push all images to the docker registry. # Push all images to the docker registry.
docker push kelvinchen/seedbox:base
docker push kelvinchen/seedbox:frontend docker push kelvinchen/seedbox:frontend
docker push kelvinchen/seedbox:plex docker push kelvinchen/seedbox:plex
docker push kelvinchen/seedbox:rtorrent docker push kelvinchen/seedbox:rtorrent