From 924ae6ed02a20538e36af1243b97e485f696cc41 Mon Sep 17 00:00:00 2001 From: Dave Dietrick Date: Wed, 7 Dec 2022 21:40:25 -0500 Subject: [PATCH] Initial comit --- docker-compose.yml | 73 ++++++++++++++++++++++++++++++++++++++++++ nginx/Dockerfile | 6 ++++ nginx/nginx.conf | 14 ++++++++ nginx/wait-for | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 docker-compose.yml create mode 100644 nginx/Dockerfile create mode 100644 nginx/nginx.conf create mode 100644 nginx/wait-for diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d7191e4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,73 @@ +version: "3" +services: + bookvpn: + image: ghcr.io/bubuntux/nordvpn + cap_add: + - NET_ADMIN + - NET_RAW + environment: + - USER=djdietrick@gmail.com + - "PASS=i!quJjFZa2&l" + - CONNECT=United_States + - TECHNOLOGY=NordLynx + - NETWORK=192.168.1.0/24 # So it can be accessed within the local network + ports: + - 8084:8080 + # - 8788:8787 # Readarr + # - 9118:9117 # Jackett + # - 9092:9091 # Transmission + sysctls: + - net.ipv6.conf.all.disable_ipv6=1 + booktransmission: + image: linuxserver/transmission:latest + network_mode: service:bookvpn + restart: unless-stopped + depends_on: + - bookvpn + volumes: + - /portainer/booktransmission:/config + - /media/books/downloads:/data + - /etc/localtime:/etc/localtime + environment: + - GROUPID=1000 + - USERID=1000 + - TRANSMISSION_DOWNLOAD_DIR=/data/completed + - TRANSMISSION_INCOMPLETE_DIR=/data/incomplete + - TRANSMISSION_WATCH_DIR=/data/watch + bookreadarr: + image: hotio/readarr:latest + network_mode: service:bookvpn + restart: unless-stopped + depends_on: + - bookvpn + volumes: + - /portainer/bookreadarr:/config + - /media/books/downloads:/downloads + - /media/books:/books + environment: + - PUID=1000 + - GUID=1000 + - TZ=America/New_York + bookjackett: + image: lscr.io/linuxserver/jackett:latest + network_mode: service:bookvpn + restart: unless-stopped + depends_on: + - bookvpn + volumes: + - /media/books/downloads:/downloads + - /portainer/bookjackett:/config + environment: + - PUID=1000 + - PGID=1000 + booknginxjackett: + image: nginx:jackett + container_name: nginx_jackett + build: ./nginx/ + restart: unless-stopped + ports: + - 9118:9117 + links: + - bookvpn:bookjackett + volumes: + - /etc/localtime:/etc/localtime:ro \ No newline at end of file diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..d7a3ae9 --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:alpine + +ADD nginx.conf /etc/nginx/nginx.conf +ADD wait-for /usr/bin + +CMD ["/usr/bin/wait-for", "jackett:9117", "--","nginx", "-g", "daemon off;"] diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..9394d47 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,14 @@ +events { + worker_connections 1024; +} + +stream { + upstream jackettweb { + server jackett:9117 fail_timeout=5s max_fails=5; + } + + server { + listen 9117; + proxy_pass jackettweb; + } +} \ No newline at end of file diff --git a/nginx/wait-for b/nginx/wait-for new file mode 100644 index 0000000..539a01d --- /dev/null +++ b/nginx/wait-for @@ -0,0 +1,79 @@ +#!/bin/sh + +TIMEOUT=15 +QUIET=0 + +echoerr() { + if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi +} + +usage() { + exitcode="$1" + cat << USAGE >&2 +Usage: + $cmdname host:port [-t timeout] [-- command args] + -q | --quiet Do not output any status messages + -t TIMEOUT | --timeout=timeout Timeout in seconds, zero for no timeout + -- COMMAND ARGS Execute command with args after the test finishes +USAGE + exit "$exitcode" +} + +wait_for() { + for i in `seq $TIMEOUT` ; do + nc -z "$HOST" "$PORT" > /dev/null 2>&1 + + result=$? + if [ $result -eq 0 ] ; then + if [ $# -gt 0 ] ; then + exec "$@" + fi + exit 0 + fi + sleep 1 + done + echo "Operation timed out" >&2 + exit 1 +} + +while [ $# -gt 0 ] +do + case "$1" in + *:* ) + HOST=$(printf "%s\n" "$1"| cut -d : -f 1) + PORT=$(printf "%s\n" "$1"| cut -d : -f 2) + shift 1 + ;; + -q | --quiet) + QUIET=1 + shift 1 + ;; + -t) + TIMEOUT="$2" + if [ "$TIMEOUT" = "" ]; then break; fi + shift 2 + ;; + --timeout=*) + TIMEOUT="${1#*=}" + shift 1 + ;; + --) + shift + break + ;; + --help) + usage 0 + ;; + *) + echoerr "Unknown argument: $1" + usage 1 + ;; + esac +done + +if [ "$HOST" = "" -o "$PORT" = "" ]; then + echoerr "Error: you need to provide a host and port to test." + usage 2 +fi + +wait_for "$@"