Cleanup and refactoring
This commit is contained in:
		
							parent
							
								
									8257f07fa7
								
							
						
					
					
						commit
						3cd72ed641
					
				|  | @ -1,16 +0,0 @@ | |||
| FROM buildpack-deps:xenial-scm | ||||
| MAINTAINER Jean Froment <froment.je@gmail.com> | ||||
| 
 | ||||
| RUN apt-get update; apt-get install -y \ | ||||
|     deluged \ | ||||
|     deluge-web | ||||
| 
 | ||||
| ADD entrypoint.sh /opt/entrypoint.sh | ||||
| RUN chmod a+x /opt/entrypoint.sh | ||||
| 
 | ||||
| VOLUME /config | ||||
| VOLUME /torrents | ||||
| 
 | ||||
| EXPOSE 8112 58846 53160 53160/udp | ||||
| 
 | ||||
| CMD ["/opt/entrypoint.sh"] | ||||
|  | @ -1,8 +0,0 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| rm -f /config/deluged.pid | ||||
| 
 | ||||
| mkdir -p /config/deluge | ||||
| 
 | ||||
| deluged -c /config/deluge -L info -l /config/deluge/deluged.log | ||||
| deluge-web -c /config/deluge | ||||
|  | @ -1,18 +0,0 @@ | |||
| FROM nginx:1.11-alpine | ||||
| MAINTAINER Jean Froment <froment.je@gmail.com> | ||||
| 
 | ||||
| RUN apk add --no-cache apache2-utils openssl | ||||
| 
 | ||||
| VOLUME /config | ||||
| 
 | ||||
| EXPOSE 80 443 | ||||
| 
 | ||||
| ENV USERNAME=user \ | ||||
|     PASSWORD=h4ckMePleAse \ | ||||
|     USE_SSL=true | ||||
| 
 | ||||
| COPY nginx.conf common_default.conf ssl.conf /etc/nginx/ | ||||
| COPY init / | ||||
| COPY ssl-gen /usr/local/bin | ||||
| 
 | ||||
| CMD ["/init"] | ||||
|  | @ -1,14 +0,0 @@ | |||
| # vim: ft=nginx | ||||
| 
 | ||||
| listen 80; | ||||
| listen [::]:80; | ||||
| 
 | ||||
| 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   Connection $http_connection; | ||||
| proxy_redirect     off; | ||||
| proxy_buffering    off; | ||||
| proxy_http_version 1.1; | ||||
|  | @ -1,23 +0,0 @@ | |||
| #!/usr/bin/env sh | ||||
| 
 | ||||
| # Make placeholder config directory | ||||
| mkdir -p /config/frontend | ||||
| 
 | ||||
| # Set basic auth credentials | ||||
| htpasswd -cb /etc/nginx/.htpasswd $USERNAME $PASSWORD | ||||
| 
 | ||||
| # Replace common.conf with default | ||||
| cp -f /etc/nginx/common_default.conf /etc/nginx/common.conf | ||||
| 
 | ||||
| ${USE_SSL:=false} | ||||
| if $USE_SSL ; then | ||||
|     echo "include ssl.conf;" >> /etc/nginx/common.conf | ||||
| 
 | ||||
|     # Create self-signed certificate if using ssl and keys do not exist. | ||||
|     # You can always replace these with your own keys later. | ||||
|     if [[ ! -f /config/frontend/ssl.key || ! -f /config/frontend/ssl.crt ]]; then | ||||
|         ssl-gen seedbox | ||||
|     fi | ||||
| fi | ||||
| 
 | ||||
| exec nginx -g "daemon off;" | ||||
|  | @ -1,133 +0,0 @@ | |||
| worker_processes auto; | ||||
| 
 | ||||
| user root root; | ||||
| pid /run/nginx.pid; | ||||
| 
 | ||||
| events { | ||||
|     worker_connections 4096; | ||||
|     use                epoll; | ||||
|     multi_accept       on; | ||||
| } | ||||
| 
 | ||||
| http { | ||||
|     sendfile            on; | ||||
|     tcp_nopush          on; | ||||
|     tcp_nodelay         on; | ||||
|     keepalive_timeout   65; | ||||
|     types_hash_max_size 2048; | ||||
| 
 | ||||
|     include      mime.types; | ||||
|     default_type application/octet-stream; | ||||
| 
 | ||||
|     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | ||||
|     ssl_prefer_server_ciphers on; | ||||
|     ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA'; | ||||
| 
 | ||||
|     access_log off; | ||||
|     error_log  off; | ||||
| 
 | ||||
|     gzip         on; | ||||
|     gzip_disable "msie6"; | ||||
| 
 | ||||
|     client_max_body_size 0; | ||||
| 
 | ||||
|     auth_basic           "Restricted"; | ||||
|     auth_basic_user_file .htpasswd; | ||||
| 
 | ||||
|     # Use builtin Docker DNS as resolver for services | ||||
|     resolver 127.0.0.11; | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(organizr)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $organizr http://organizr:80; | ||||
|             proxy_pass $organizr; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(deluge)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $deluge http://deluge:8112; | ||||
|             proxy_pass $deluge; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(owncloud)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $owncloud http://owncloud:80; | ||||
|             proxy_pass $owncloud; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(explore)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $h5ai http://h5ai:12333; | ||||
|             proxy_pass $h5ai; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(plex)(\.\w+)+$; | ||||
|         auth_basic "off"; | ||||
| 
 | ||||
|         location / { | ||||
|             set $plex http://plex:32400; | ||||
|             proxy_pass $plex; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(webtools)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $webtools http://plex:33442; | ||||
|             proxy_pass $webtools; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(sonarr)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $sonarr http://sonarr:8989; | ||||
|             proxy_pass $sonarr; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(jackett)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $sonarr http://sonarr:9117; | ||||
|             proxy_pass $sonarr; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     server { | ||||
|         include common.conf; | ||||
|         server_name ~^(radarr)(\.\w+)+$; | ||||
| 
 | ||||
|         location / { | ||||
|             set $radarr http://radarr:7878; | ||||
|             proxy_pass $radarr; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| # vim: ft=nginx | ||||
|  | @ -1,9 +0,0 @@ | |||
| #!/usr/bin/env sh | ||||
| 
 | ||||
| # Short helper script to generate self signed SSL certificates. | ||||
| 
 | ||||
| mkdir -p /config/frontend | ||||
| 
 | ||||
| openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \ | ||||
|     -subj "/C=SB/ST=Seedbox/L=Seedbox/O=Seedbox/CN=$1" \ | ||||
|     -keyout /config/frontend/ssl.key  -out /config/frontend/ssl.crt | ||||
|  | @ -1,11 +0,0 @@ | |||
| # vim: ft=nginx | ||||
| 
 | ||||
| listen 443      ssl; | ||||
| listen [::]:443 ssl; | ||||
| 
 | ||||
| ssl_certificate     /config/frontend/ssl.crt; | ||||
| ssl_certificate_key /config/frontend/ssl.key; | ||||
| 
 | ||||
| if ($ssl_protocol = "") { | ||||
|     rewrite ^   https://$host$request_uri? permanent; | ||||
| } | ||||
|  | @ -1,26 +0,0 @@ | |||
| FROM lsiobase/mono | ||||
| MAINTAINER sparklyballs | ||||
| 
 | ||||
| # environment settings | ||||
| ENV XDG_CONFIG_HOME="/config/xdg" | ||||
| 
 | ||||
| # install radarr | ||||
| RUN \ | ||||
|  radarr_tag=$(curl -sX GET "https://api.github.com/repos/Radarr/Radarr/releases" \ | ||||
| 	| awk '/tag_name/{print $4;exit}' FS='[""]') && \ | ||||
|  mkdir -p \ | ||||
| 	/opt/radarr && \ | ||||
|  curl -o \ | ||||
|  /tmp/radar.tar.gz -L \ | ||||
| 	"https://github.com/galli-leo/Radarr/releases/download/${radarr_tag}/Radarr.develop.${radarr_tag#v}.linux.tar.gz" && \ | ||||
|  tar ixzf \ | ||||
|  /tmp/radar.tar.gz -C \ | ||||
| 	/opt/radarr --strip-components=1 && \ | ||||
|  rm -rf	/tmp/* | ||||
| 
 | ||||
| # add local files | ||||
| COPY /root / | ||||
| 
 | ||||
| # ports and volumes | ||||
| EXPOSE 7878 | ||||
| VOLUME /config /torrents | ||||
|  | @ -1,7 +0,0 @@ | |||
| #!/usr/bin/with-contenv bash | ||||
| 
 | ||||
| # permissions | ||||
| chown -R abc:abc \ | ||||
| 	/config \ | ||||
| 	/opt | ||||
| 
 | ||||
|  | @ -1,7 +0,0 @@ | |||
| #!/usr/bin/with-contenv bash | ||||
| 
 | ||||
| cd /opt/radarr || exit | ||||
| 
 | ||||
| exec \ | ||||
| 	s6-setuidgid abc mono --debug Radarr.exe \ | ||||
| 	-nobrowser -data=/config | ||||
|  | @ -1,30 +0,0 @@ | |||
| FROM buildpack-deps:xenial-scm | ||||
| MAINTAINER Jean Froment <froment.je@gmail.com> | ||||
| 
 | ||||
| # Install Sonarr, S6, and Jackett | ||||
| RUN echo "deb http://apt.sonarr.tv/ master main" \ | ||||
|         > /etc/apt/sources.list.d/sonarr.list \ | ||||
|     && echo "deb http://download.mono-project.com/repo/ubuntu xenial main" \ | ||||
|         > /etc/apt/sources.list.d/mono.list \ | ||||
|     && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FDA5DFFC \ | ||||
|     && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -y mono-complete nzbdrone libcurl4-openssl-dev \ | ||||
|     && curl -sL "https://github.com/just-containers/s6-overlay/releases/download/v1.18.1.5/s6-overlay-amd64.tar.gz" \ | ||||
|         | tar xz -C / \ | ||||
|     && curl -sL $(curl -sL https://api.github.com/repos/Jackett/Jackett/releases | grep browser_download_url | grep Mono | head -n 1 | cut -d '"' -f 4) \ | ||||
|         | tar xz -C /opt \ | ||||
|     && apt-get clean && rm -rf /var/lib/apt/lists/* | ||||
| 
 | ||||
| # Set Jackett config path | ||||
| ENV XDG_DATA_HOME="/config" \ | ||||
|     XDG_CONFIG_HOME="/config" | ||||
| 
 | ||||
| VOLUME /config | ||||
| 
 | ||||
| # 8989 is Sonarr, 9117 is Jackett | ||||
| EXPOSE 8989 9117 | ||||
| 
 | ||||
| COPY services.d /etc/services.d | ||||
| 
 | ||||
| CMD ["/init"] | ||||
|  | @ -1,3 +0,0 @@ | |||
| #!/usr/bin/with-contenv sh | ||||
| 
 | ||||
| exec mono /opt/Jackett/JackettConsole.exe | ||||
|  | @ -1,7 +0,0 @@ | |||
| #!/usr/bin/with-contenv sh | ||||
| 
 | ||||
| mkdir -p /config/sonarr | ||||
| 
 | ||||
| rm -f /config/sonarr/nzbdrone.pid | ||||
| 
 | ||||
| exec mono /opt/NzbDrone/NzbDrone.exe -nobrowser -data=/config/sonarr | ||||
							
								
								
									
										19
									
								
								README.md
								
								
								
								
							
							
						
						
									
										19
									
								
								README.md
								
								
								
								
							|  | @ -10,14 +10,12 @@ Go to `x.hostname` where `x` is the service you want to access. | |||
| Included services are: | ||||
| - deluge | ||||
| - sonarr | ||||
| - jackett (included in the sonarr image) | ||||
| - jackett | ||||
| - plex | ||||
| - h5ai (service accessible via `explore.hostname`) | ||||
| - radarr | ||||
| - ownCloud (still in testing phase) | ||||
| - organizr | ||||
| 
 | ||||
| The front-end reverse proxy routes based on the lowest level subdomain (e.g. | ||||
| The front-end reverse proxy (Traefik) routes based on the lowest level subdomain (e.g. | ||||
| `deluge.example.com` would route to deluge). Since this is how the router | ||||
| works, it is recommended for you to get a top level domain. If you do not have | ||||
| one, you can edit your domains locally by changing your hosts file or use a | ||||
|  | @ -54,20 +52,11 @@ You may optionally build the images yourself instead of pulling by running | |||
| `./build-all.sh`. | ||||
| 
 | ||||
| ## Configuration | ||||
| Copy the `config.default` file to `config` and change the variables as desired. | ||||
| Copy the `.env.sample` file to `.env` and change the variables as desired. | ||||
| The variables are all self-explanatory. | ||||
| 
 | ||||
| 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 | ||||
| frontend image includes a command `ssl-gen` to automatically create self signed | ||||
| 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. | ||||
| More info soon. | ||||
| 
 | ||||
| ## Where is my data? | ||||
| All data is saved in the docker volumes `seedbox_config` or | ||||
|  |  | |||
|  | @ -22,11 +22,7 @@ while getopts ":nq" opt; do | |||
|     esac | ||||
| done | ||||
| 
 | ||||
| docker build -t fromenje/seedbox:frontend     $ARGS Dockerfiles/frontend    & | ||||
| docker build -t fromenje/seedbox:plex         $ARGS Dockerfiles/plex        & | ||||
| docker build -t fromenje/seedbox:deluge       $ARGS Dockerfiles/deluge      & | ||||
| docker build -t fromenje/seedbox:sonarr	      $ARGS Dockerfiles/sonarr	    & | ||||
| docker build -t fromenje/seedbox:h5ai	        $ARGS Dockerfiles/h5ai	      & | ||||
| docker build -t fromenje/seedbox:radarr       $ARGS Dockerfiles/radarr      & | ||||
| 
 | ||||
| wait | ||||
|  |  | |||
|  | @ -1,8 +0,0 @@ | |||
| USERNAME=username | ||||
| PASSWORD=h4ckMePleAse | ||||
| USE_SSL=true | ||||
| MYSQL_ROOT_PASSWORD=h4ckMePleAse | ||||
| 
 | ||||
| # For Plex Pass download only | ||||
| PLEX_EMAIL= | ||||
| PLEX_PASSWORD= | ||||
|  | @ -1,20 +1,6 @@ | |||
| version: '3' | ||||
| 
 | ||||
| services: | ||||
|     # frontend: | ||||
|     #     image: fromenje/seedbox:frontend | ||||
|     #     build: Dockerfiles/frontend | ||||
|     #     restart: always | ||||
|     #     networks: | ||||
|     #         - main | ||||
|     #     ports: | ||||
|     #         - "80:80" | ||||
|     #         - "443:443" | ||||
|     #     volumes: | ||||
|     #         - config:/config | ||||
|     #     env_file: | ||||
|     #         - config | ||||
| 
 | ||||
|     traefik: | ||||
|         image: traefik | ||||
|         container_name: traefik | ||||
|  | @ -183,18 +169,6 @@ services: | |||
|             - 'traefik.frontend.auth.basic=${HTTP_USER}:${HTTP_PASSWORD}' | ||||
|             - 'traefik.enable=true' | ||||
| 
 | ||||
|     # organizr: | ||||
|     #     image: lsiocommunity/organizr | ||||
|     #     restart: always | ||||
|     #     networks: | ||||
|     #         - main | ||||
|     #     volumes: | ||||
|     #         - config:/config | ||||
|     #     environment: | ||||
|     #         - PGID=33 | ||||
|     #         - PUID=33 | ||||
|     #         - TZ=Europe/Paris | ||||
| 
 | ||||
|     portainer: | ||||
|         image: portainer/portainer | ||||
|         volumes: | ||||
|  |  | |||
|  | @ -2,9 +2,5 @@ | |||
| 
 | ||||
| # Push all images to the docker registry. | ||||
| 
 | ||||
| docker push fromenje/seedbox:frontend | ||||
| docker push fromenje/seedbox:plex | ||||
| docker push fromenje/seedbox:sonarr | ||||
| docker push fromenje/seedbox:deluge | ||||
| docker push fromenje/seedbox:h5ai | ||||
| docker push fromenje/seedbox:radarr | ||||
|  |  | |||
							
								
								
									
										12
									
								
								traefik.toml
								
								
								
								
							
							
						
						
									
										12
									
								
								traefik.toml
								
								
								
								
							|  | @ -17,18 +17,6 @@ defaultEntryPoints = ["http", "https"] | |||
| 
 | ||||
| [retry] | ||||
| 
 | ||||
| # [acme] | ||||
| #   email = "email@company.com" | ||||
| #   storage = "acme.json" | ||||
| #   onDemande = true | ||||
| #   caServer = "https://acme-v02.api.letsencrypt.org/directory" | ||||
| #   entryPoint = "https" | ||||
| #   [acme.httpChallenge] | ||||
| #     entryPoint = "http" | ||||
| #   [[acme.domains]] | ||||
| #     main = "sub.domain.com" | ||||
| #     sans = ["sub.domain.com", "sub2.domain.com"] | ||||
| 
 | ||||
| [acme] | ||||
| email = "overriden@in-traefik.yml" | ||||
| storage = "acme.json" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue