Skip to content

Instantly share code, notes, and snippets.

@chadmiller
Last active June 16, 2023 18:53
Show Gist options
  • Save chadmiller/713fa4c5e9a1b28077bc490dbd11f039 to your computer and use it in GitHub Desktop.
Save chadmiller/713fa4c5e9a1b28077bc490dbd11f039 to your computer and use it in GitHub Desktop.
tv setup
version: "3.2"
ervices:
transmission:
image: haugene/transmission-openvpn:latest
hostname: docker-transmission-openvpn
restart: unless-stopped
volumes:
- '/your-data-directory-on-host/media/transmission:/data'
- '/your-data-directory-on-host/config/transmission:/config'
- '/etc/localtime:/etc/localtime:ro'
environment:
- CREATE_TUN_DEVICE=true
- OPENVPN_PROVIDER # EDIT
- OPENVPN_CONFIG # EDIT
- OPENVPN_USERNAME # EDIT
- OPENVPN_PASSWORD # EDIT
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60
- WEBPROXY_ENABLED=true
- LOCAL_NETWORK # EDIT
- DROP_DEFAULT_ROUTE=true
- PUID=33
- PGID=33
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
cap_add:
- NET_ADMIN
logging: &syslog_logging
driver: syslog
options:
tag: "docker/{{.Name}}"
ports:
- '9091:9091'
prowlarr:
image: cr.hotio.dev/hotio/prowlarr:latest
hostname: prowlarr
restart: unless-stopped
ports:
- "9696:9696"
#- "127.0.0.1:9696:9696"
environment:
- PUID=33
- PGID=33
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/prowlarr:/config
depends_on:
- transmission
logging: *syslog_logging
healthcheck:
interval: 2m30s
test: [ "CMD-SHELL", "curl -f http://localhost:9696/ || exit 1" ]
# settings: apps / sonarr. prowlarr server = http://prowlarr:9696/, sonaar server: http://sonarr:8989/, api key = (key from sonarr's settings/general/apikey)
# settings: apps / radarr. prowlarr server = http://prowlarr:9696/, radaar server: http://radarr:8989/, api key = (key from sonarr's settings/general/apikey)
# settings: download clients: transmission, host - transmission, username = root, category = sonaar
# settings: download clients: remote path mappings: host:transmission remotepath=/data localpath=/data/transmission
radarr:
image: cr.hotio.dev/hotio/radarr:latest
hostname: radarr
restart: unless-stopped
ports:
- "7878:7878"
#- "127.0.0.1:7878:7878"
environment:
- PUID=33
- PGID=33
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/radarr:/config
- /your-data-directory-on-host/media:/data
depends_on:
- prowlarr
logging: *syslog_logging
healthcheck:
interval: 2m30s
test: [ "CMD-SHELL", "curl -f http://localhost:7878/ || exit 1" ]
# settings: media management / root folder = /data/tv
# settings: download client: transmission, host - transmission, username = root, category = radarr
# settings: download clients: remote path mappings: host:transmission remotepath=/data localpath=/data/transmission
readarr-ebooks:
image: cr.hotio.dev/hotio/readarr:latest
hostname: readarr-ebooks
restart: unless-stopped
ports:
- "8787:8787"
environment:
- PUID=33
- PGID=33
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/readarr-ebooks:/config
- /your-data-directory-on-host/media:/data
depends_on:
- prowlarr
logging: *syslog_logging
healthcheck:
interval: 2m30s
test: [ "CMD-SHELL", "curl -f http://localhost:8787/ || exit 1" ]
# settings: media management / root folder = /data/ebooks
# settings: download client: transmission, host - transmission, username = root, category = readarr-ebooks
# settings: download clients: remote path mappings: host:transmission remotepath=/data localpath=/data/transmission
readarr-audiobooks:
image: cr.hotio.dev/hotio/readarr:latest
hostname: readarr-audiobooks
restart: unless-stopped
ports:
- "8788:8787"
environment:
- PUID=33
- PGID=33
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/readarr-audiobooks:/config
- /your-data-directory-on-host/media:/data
depends_on:
- prowlarr
logging: *syslog_logging
healthcheck:
interval: 2m30s
test: [ "CMD-SHELL", "curl -f http://localhost:8787/ || exit 1" ]
# settings: media management / root folder = /data/audiobooks
# settings: download client: transmission, host - transmission, username = root, category = readarr-audiobooks
# settings: download clients: remote path mappings: host:transmission remotepath=/data localpath=/data/transmission
sonarr:
image: cr.hotio.dev/hotio/sonarr:latest
hostname: sonarr
restart: unless-stopped
ports:
- "8989:8989"
#- "127.0.0.1:8989:8989"
environment:
- PUID=33
- PGID=33
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/sonarr:/config
- /your-data-directory-on-host/media:/data
depends_on:
- prowlarr
- transmission
logging: *syslog_logging
healthcheck:
interval: 2m30s
test: [ "CMD-SHELL", "curl -f http://localhost:8989/ || exit 1" ]
# settings: media management / root folder = /data/movies
# settings: download client: transmission, host - transmission, username = root, category = radaar
jellyfin:
image: jellyfin/jellyfin
#network_mode: host
hostname: jellyfin
restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/media:/media:ro
- /your-data-directory-on-host/config/jellyfin:/config:rw
- /your-data-directory-on-host/cache/jellyfin:/cache:rw
healthcheck:
interval: 2m30s
test: [ "CMD-SHELL", "curl -f http://localhost:8096/health || exit 1" ]
logging: *syslog_logging
expose:
- 8096
- 2869
- 1900
# settings: add movies = /data/movies
# settings: add tv = /data/tv
# settings: add users, giving read access to tv and movies
# in router, forward exterior port to 8096
jellyseerr:
image: fallenbagel/jellyseerr:latest
restart: unless-stopped
ports:
- "5055:5055"
environment:
- LOG_LEVEL=info
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/jellyseerr:/app/config
logging: *syslog_logging
depends_on:
- jellyfin
- radarr
- sonarr
# settings: after creating user on jellyfin, follow wizard here.
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf
restart: unless-stopped
ports:
- "13378:80"
environment:
- CONFIG_PATH=/config
- METADATA_PATH=/metadata
volumes:
- /etc/localtime:/etc/localtime:ro
- /your-data-directory-on-host/config/audiobookshelf/config>:/config
- /your-data-directory-on-host/config/audiobookshelf/metadata>:/metadata
- /your-data-directory-on-host/media/audiobooks:/audiobooks
- /your-data-directory-on-host/media/ebooks:/ebooks
- /your-data-directory-on-host/media/podcasts:/podcasts
logging: *syslog_logging
certbot:
image: certbot/certbot:latest
restart: "no"
volumes:
- /your-data-directory-on-host/config/certbot/etc:/etc/letsencrypt
- /your-data-directory-on-host/config/certbot/var:/var/lib/letsencrypt
- /etc/localtime:/etc/localtime:ro
logging: *syslog_logging
depends_on:
- nginx
nginx:
image: nginx:stable
restart: unless-stopped
ports:
- "50080:80"
- "50443:443"
volumes:
- /your-data-directory-on-host/config/certbot/etc:/etc/letsencrypt:ro
- /your-data-directory-on-host/config/nginx:/etc/nginx/conf.d:ro
- /your-data-directory-on-host/config/certbot/var:/var/www/certbot:ro
- /etc/localtime:/etc/localtime:ro
logging: *syslog_logging
## nginx config file /your-data-directory-on-host/config/nginx/default.conf
#server {
# listen 80;
# listen [::]:80;
#
# server_name YOUR-DNS-NAME;
# server_tokens off;
#
# location /.well-known/acme-challenge/ {
# root /var/www/certbot;
# }
#
# location / {
# return 301 https://YOUR-DNS-NAME$request_uri;
# }
#}
#
#server {
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
#
# server_name YOUR-DNS-NAME;
#
# ssl_certificate /etc/letsencrypt/live/YOUR-DNS-NAME/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/YOUR-DNS-NAME/privkey.pem;
#
# location / {
# proxy_pass http://jellyfin:8096/;
# }
#}
mkdir /data/arr and /data/arr/config and /data/arr/media , or another path. That /data/arr is the "/your-data-directory-on-host" in the config file, which you will want to replace.
Configure jellyfin at host-port in compose yaml. Get its API key.
get vpn account. visit haygene transimission openvpn page for env vars.
start services. `docker-compose up -d`
visit prowlarr service at host-port in compose yaml. configure it to know about torrent search engines. copy the API
key from the config.
visit sonarr, configure indexer for prowlarr host-port and API key. configure it to reach transmission-openvpn and
use a tag of "sonarr" and save files into /data/completed
vist radarr. same with different tag.
Visit sonarr and radarr to get their API keys. Visit jellyseer configure its access to sonarr and radarr, and configure
it to trust jellyfin host-port and API key for auth.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment