Sign inSign up

longlivethepenguin/bobarr-720-api

By longlivethepenguin

•Updated over 2 years ago

Bobarr is fantastic -- but I need to mirror an HD library with a portable (SD) library in one stack!

Image
0

10K+

longlivethepenguin/bobarr-720-api repository overview

⁠-------------
| Warning! |
-------------

⁠Please bear with me as this is very much still in development! I will continue to update as often as possible as I figure out how to iron out some remaining wrinles...

⁠Source Project: iam4x/Bobarr⁠

⁠Common foundations:

  • Environmental Variables (.env) file
  • File/folder structure [keep the default structure in ./scripts/install.sh⁠ or manually modify]
  • Auxiliary services
    • Transmission
    • Transmission Web (if network tunneled through VPN... which you should!) or Flood [see below!]
    • PostgreSQL DB
    • Jackett
    • Flaresolverr
    • VPN (if used... Yes... F*kn use one!!!)

⁠Prerequisites

A typical Bobarr installation⁠ only uses one Database (bobarr). When configuring concurrent 1080p & 720p Bobarr services you will have to manually create⁠ unique DB schemas for 1080p and 720p respectively. DB username and password can remain in the ubiquitous environmental variables (.env) file. Remove a default DB name from the ".env" file and a distinct variable for each 1080p vs. 720p will be entered as additional Environmental Variables for each respective container instead.

⁠docker-compose.yml

⁠Volumes (unique for 1080p vs. 720p containers)

- /LocalStorage/orDockerVolume/1080Or720api/:/usr/src/app
- /path/to/1080pOr720pLibrary/:/usr/library

⁠Environmental Variables (unique between 780/1080 services; not including Bobarr Common variables)

- PORT=3000 #1080p Web
- PORT=4000 #1080p API
- PORT=3001 #720p Web
- PORT=4001 #720p API
- POSTGRES_DB=[1080p DB name] #1080p service(s)
- POSTGRES_DB=[720p DB name] #720p service(s)

⁠Networks

If using a VPN container for API services, include in docker-compse:
network_mode: "service:[vpn_service_name]"
for the API service(s).

If networking API service(s) through a VPN such as described above, include a link in the Web containers:

  links:
    - [vpn_service_name]:[api_service_name]
⁠Example for modification of this fork:
⁠docker-compose.yml
networks:
  arrnet:
    name: arrnet
    driver: bridge

volumes:
  arr_jackett_web_www:
  arr_jackett_web_nginx:
  arr_flaresolverr_web_www:
  arr_flaresolverr_web_nginx:

services:
  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE #optional
    env_file: ./env
    volumes:
      - /[localstorage]/wireguard/config/:/config
      - /lib/modules:/lib/modules #optional
    ports:
      - 51820:51820/udp
      - 9091:9091
      - 9092:9092
      - 9117:9117
      - 8191:8191
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=1
    restart: unless-stopped
    networks:
      - arrnet
    dns:
      - 1.1.1.2
      - 1.0.0.2

  organizr:    #optional
    container_name: organizr
    image: organizr/organizr
    env_file: ./env
    environment:
      - fpm="false" #optional
    volumes:
      - /[localstorage]/organizr/:/config
    networks:
      - arrnet
    ports:
      - 80:80
    restart: unless-stopped

  postgres:
    container_name: postgres
    image: postgres:12-alpine
    env_file: ./env
    volumes:
      - /[localstorage]/postgresql/:/var/lib/postgresql/data
    networks:
      - arrnet
    ports:
      - 5432:5432
    restart: unless-stopped

  redis:
    container_name: redis
    image: bitnami/redis
    env_file: ./env
    environment:
      - REDIS_IO_THREADS=8
      - REDIS_IO_THREADS_DO_READS=yes
      - LANGUAGE=en_US.UTF-8
      - LANG=en_US.UTF-8
      - LC_ALL=en_US.UTF-8
    volumes:
      - /[localstorage]/redis/redis.conf:/opt/bitnami/redis/mounted-etc/redis.conf
      - /[localstorage]/redis/data/:/bitnami/redis/data
    networks:
      - arrnet
    ports:
      - 6379:6379
    restart: unless-stopped

  jackett:
    container_name: arr-jackett
    image: linuxserver/jackett
    env_file: ./env
    volumes:
      - /[localstorage]/jackett/config:/config
      - /[localstorage]/jackett/downloads:/downloads
    network_mode: "service:wireguard"
    depends_on:
      - wireguard
    restart: unless-stopped

  jackett-web: &web
    image: dperson/nginx
    container_name: arr-jackett-web
    depends_on:
      - jackett
    environment:
      - TZ=[continent]/[city]
    volumes:
      - arr_jackett_web_www:/srv/www
      - arr_jackett_web_nginx:/etc/nginx
    networks:
      - arrnet
    ports:
      - 8817:80
    links:
      - wireguard:jackett
    command: -w "http://wireguard:9117;/"
    restart: unless-stopped

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr
    container_name: arr-flaresolverr
    environment:
      - LOG_LEVEL=info
    network_mode: "service:wireguard"
    depends_on:
      - wireguard
    restart: unless-stopped

  flaresolverr-web:
    <<: *web
    container_name: arr-flaresolverr-web
    volumes:
      - arr_flaresolverr_web_www:/srv/www
      - arr_flaresolverr_web_nginx:/etc/nginx
    depends_on:
      - flaresolverr
    ports:
      - 8891:80
    links:
      - wireguard:flaresolverr
    command: -w "http://wireguard:8191;/"

  bobarr-1080-api:
    container_name: arr-bobarr-1080-api
    image: longlivethepenguin/bobarr-1080-api:latest
    env_file: ./env
    environment:
      - TRANSMISSION_HOST=transmission-1080
      - TRANSMISSION_PORT=9091
      - API_QUALITY=1080
      - POSTGRES_DB=[1080_db_name]
      - PORT=4000
      - PGID=1000
    volumes:
      - /[localstorage]/library_1080/:/usr/library
    ports:
      - 4000:4000
    networks:
      - arrnet
    links:
      - wireguard:flaresolverr
      - wireguard:jackett
      - wireguard:transmission-1080
      - redis
      - postgres
    depends_on:
      - postgres
      - redis
    restart: unless-stopped

  bobarr-720-api:
    container_name: arr-bobarr-720-api
    image: longlivethepenguin/bobarr-720-api:latest
    env_file: ./env
    environment:
      - TRANSMISSION_HOST=transmission-720
      - TRANSMISSION_PORT=9093
      - API_QUALITY=720
      - POSTGRES_DB=[720_db_name]
      - PORT=4001
      - PGID=1000
    volumes:
      - /[localstorage]/library_720/:/usr/library
    ports:
      - 4001:4001
    networks:
      - arrnet
    links:
      - wireguard:flaresolverr
      - wireguard:jackett
      - wireguard:transmission-720
      - redis
      - postgres
    depends_on:
      - postgres
      - redis
    restart: unless-stopped
  
  bobarr-1080-web:
    container_name: arr-bobarr-1080-web
    image: longlivethepenguin/bobarr-1080-web:latest
    env_file: ./env
    environment:
      - WEB_UI_API_URL=http://bobarr-1080-api:4000
      - API_QUALITY=1080
      - POSTGRES_DB=[1080_db_name]
      - PORT=3000
    links:
      - wireguard:flaresolverr
      - wireguard:jackett
      - redis
      - postgres
      - bobarr-1080-api
    ports:
      - 3000:3000
    networks:
      - arrnet
    depends_on:
      - bobarr-1080-api

  bobarr-720-web:
    container_name: arr-bobarr-720-web
    image: longlivethepenguin/bobarr-720-web:latest
    env_file: ./env
    environment:
      - WEB_UI_API_URL=http://bobarr-720-api:4001
      - API_QUALITY=720
      - POSTGRES_DB=[720_db_name]
      - PORT=3001
    links:
      - wireguard:flaresolverr
      - wireguard:jackett
      - redis
      - postgres
      - bobarr-720-api
    ports:
      - 3001:3001
    networks:
      - arrnet
    depends_on:
      - bobarr-720-api
⁠.env (environmental variables)
TZ=[continent]/[city]
LANG=en_US.UTF-8
UMASK_SET=0002
PUID=1000
PGID=['Docker' user group on host machine]
POSTGRES_USER=bobarr
POSTGRES_PASSWORD=[secret]
REDIS_PASSWORD=[secret]
JACKETT_AUTOMATIC_SEARCH_TIMEOUT=120000
JACKETT_MANUAL_SEARCH_TIMEOUT=15000
DEBUG_REDIS=false
LIBRARY_MOVIES_FOLDER_NAME=movies
LIBRARY_TV_SHOWS_FOLDER_NAME=tvshow
DB_HOST=postgres
REDIS_HOST=redis
⁠Duplicate Transmission instances

If you wish to run multiple distinct Transmission instances [which would inherently require unique port numbers] they can be configured as follows in docker-compose.yml:

  • First create unique config directories for 1080 & 720 respectively
  • Generate unique settings.json files for each config (either from iam4x⁠ or your own source)
  • Modify the settings.json "rpc-port", "peer-port", "peer-port-random-high", and "peer-port-random-low" to be unique (they can vary by as little value as 1)
transmission-1080: &transmission
    image: linuxserver/transmission
    container_name: transmission-1080
    env_file: ./.env
    volumes:
      - /path/to/1080/downloads/:/usr/library/downloads
      - /path/to/1080/config/:/config
      - /path/to/1080/watch/:/watch
    network_mode: "service:[vpn_service_name]"
    depends_on:
      - [vpn_service_name]
    restart: unless-stopped

  transmission-720:
    <<: *transmission
    container_name: transmission-720
    volumes:
      - /path/to/720/downloads/:/usr/library/downloads
      - /path/to/720/config/:/config
      - /path/to/720/watch/:/watch

  transmission-1080-web: &transmission-web
    image: dperson/nginx
    container_name: transmission-1080-web
    depends_on:
      - transmission-1080
    env_file: ./.env
    ports:
      - "9091:80"  ## Your First Unique Port Here!
    links:
      - [vpn_service_name]:transmission-1080
    command: -w "http://transmission-1080:9091;/"
    restart: unless-stopped

  transmission-720 web:
    <<: *transmission-web
    image: dperson/nginx
    container_name: transmission-1080-web
    depends_on:
      - transmission-720
    ports:
      - "9092:80"  ## Your Second Unique Port Here!
    links:
      - [vpn_service_name]:transmission-720
    command: -w "http://transmission-720:9092;/"

⁠Bonus addon:

I never much cared for Transmission's dated and lack-luster Web Ui... Try "Flood⁠" on for size!!

flood-1080: &flood
    container_name: flood-1080
    hostname: flood-1080
    image: jesec/flood
    user: 1000:109
    command: --port 3001 --allowedpath /data
    env_file: .env
    volumes:
      - /path/to/flood1080/config/:/config
      - /path/to/transmission-1080/downloads/:/data
    ports:
      - 3031:3001  ## Pick a random port here; 3001 conflicts with Bobarr 720p Web
    links:
      - [vpn_service_name]:transmission-1080
    networks:
      - default     ## Replace this if you have a different network defined for the stack
    depends_on:
      - transmission-1080
    restart: unless-stopped

  flood-720:
    <<: *flood
    container_name: flood-720
    hostname: flood-720
    volumes:
      - /path/to/flood720/config/:/config
      - /path/to/transmission-720/downloads/:/data
    ports:
      - 3032:3001     ## Pick another random port here that doesn't conflict with Bobarr or Flood 1080
    links:
      - [vpn_service_name]:transmission-720
    depends_on:
      - transmission-720

Tag summary

Content type

Image

Digest

sha256:0796d866d…

Size

197.9 MB

Last updated

over 2 years ago

docker pull longlivethepenguin/bobarr-720-api