Sign inSign up

longlivethepenguin/bobarr-1080-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-1080-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:43c5578c4

Size

197.9 MB

Last updated

over 2 years ago

docker pull longlivethepenguin/bobarr-1080-api