Skip to content

Instantly share code, notes, and snippets.

@jakebrinkmann
Last active February 4, 2025 02:30
Show Gist options
  • Save jakebrinkmann/27f03ce9289f26633eb3015ab3892b1a to your computer and use it in GitHub Desktop.
Save jakebrinkmann/27f03ce9289f26633eb3015ab3892b1a to your computer and use it in GitHub Desktop.
Plex media setup
TIMEZONE=America/Chicago
PUID=1001
PGID=1001
CONFIG_PATH=/configs
MEDIA_PATH=/mnt/media
MOVIES_PATH=${MEDIA_PATH}/movies
TV_PATH=${MEDIA_PATH}/tv
LEAVING_PATH=${MEDIA_PATH}/leaving-soon/
DOWNLOADS_PATH=${MEDIA_PATH}/downloads

arr-app (Linux Home Theater PCs)

*Arr Media Server runs on the computer where you keep your media.

sudo ./script.sh

[OPTIONAL] setup External Hard drive

set -a
source .env
set +a

## format as ext4
sudo umount /dev/sdXN
sudo mkfs.ext4 /dev/sdXN
sudo e2label /dev/sdXN "TOSHIBA 3TB EXT"

# get new UUID
UUID=$(sudo blkid | grep sdXN | sed -n 's/.*UUID="\([^"]*\)".*/\1/p')
echo $UUID

sudo mkdir -p ${MEDIA_PATH}
cat <<EOF | sudo tee -a /etc/fstab
#/dev/sda1
UUID=${UUID} ${MEDIA_PATH} ext4 nofail,x-systemd.device-timeout=5 0 2
EOF

# Reload fstab
sudo mount ${MEDIA_PATH} &&
  ls ${MEDIA_PATH}

# Verify Your Changes
sudo mount -a
sudo systemctl daemon-reload
# envsubst <./arr-app.service | sudo tee /etc/systemd/system/arr-app.service
# sudo systemctl daemon-reload
# sudo systemctl enable --now arr-app.service
# journalctl -u arr-app.service -f
[Unit]
Description=Starr Apps
After=network.target docker.service mnt-media.mount
Requires=mnt-media.mount
RequiresMountsFor=/mnt/media/
[Service]
WorkingDirectory=${PWD}
ExecStart=/usr/local/bin/docker-compose up
ExecStartPost=/bin/systemctl restart avahi-daemon
Restart=always
[Install]
WantedBy=multi-user.target
name: arr-app
services:
emby:
image: lscr.io/linuxserver/emby:latest
# container_name: emby
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- ${CONFIG_PATH}/emby:/config
- ${TV_PATH}:/media/tv
- ${MOVIES_PATH}:/media/movies
ports:
- 8096:8096
- 8920:8920 #optional
expose:
- "7359/udp"
- "1900/udp"
networks:
- arr
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
# container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=${TIMEZONE}
ports:
- "8191:8191"
restart: unless-stopped
networks:
- arr
jellyseerr:
image: fallenbagel/jellyseerr:latest
# container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TIMEZONE}
- JELLYFIN_TYPE=emby
ports:
- 5055:5055
volumes:
- ${CONFIG_PATH}/jellyseerr:/app/config
restart: unless-stopped
networks:
- arr
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
# container_name: prowlarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- ${CONFIG_PATH}/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
networks:
- arr
qbittorrent:
# container_name: qbittorrent
image: ghcr.io/hotio/qbittorrent
ports:
- "8080:8080"
- "8118:8118"
environment:
- PUID=${PUID}
- PGID=${PGID}
- UMASK=002
- TZ=${TIMEZONE}
# - VPN_ENABLED=true
# - VPN_LAN_NETWORK=192.168.1.0/24
# - VPN_CONF=wg0
# - VPN_ADDITIONAL_PORTS
- PRIVOXY_ENABLED=false
volumes:
- ${CONFIG_PATH}/qbit:/config
- ${DOWNLOADS_PATH}:/media/downloads
cap_add:
- NET_ADMIN
dns:
- 1.1.1.1
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=1
networks:
- arr
radarr:
image: lscr.io/linuxserver/radarr:latest
# container_name: radarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- ${CONFIG_PATH}/radarr:/config
- ${MOVIES_PATH}:/media/movies
- ${DOWNLOADS_PATH}:/media/downloads
ports:
- 7878:7878
restart: unless-stopped
networks:
- arr
recyclarr:
image: ghcr.io/recyclarr/recyclarr
# container_name: recyclarr
user: ${PUID}:${PGID}
volumes:
- ${CONFIG_PATH}/recyclarr:/config
environment:
- TZ=${TIMEZONE}
networks:
- arr
sonarr:
image: lscr.io/linuxserver/sonarr:latest
# container_name: sonarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TIMEZONE}
volumes:
- ${CONFIG_PATH}/sonarr:/config
- ${TV_PATH}:/media/tv #optional
- ${DOWNLOADS_PATH}:/media/downloads #optional
ports:
- 8989:8989
restart: unless-stopped
networks:
- arr
watchtower:
image: containrrr/watchtower
# container_name: watchtower
environment:
- TZ=${TIMEZONE}
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_SCHEDULE=0 0 3 * * *
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
unpackerr:
# container_name: unpackerr
image: ghcr.io/hotio/unpackerr
environment:
- PUID=${PUID}
- PGID=${PGID}
- UMASK=002
- TZ=${TIMEZONE}
restart: unless-stopped
volumes:
- ${CONFIG_PATH}/unpackerr:/config
networks:
- arr
security_opt:
- no-new-privileges:true
janitorr:
# container_name: janitorr
image: ghcr.io/schaka/janitorr:stable
user: ${PUID}:${PGID}
volumes:
- ${CONFIG_PATH}/janitorr/config:/workspace
- ${MEDIA_PATH}:${MEDIA_PATH}
networks:
- arr
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./index.html:/usr/share/nginx/html/index.html:ro
restart: unless-stopped
networks:
- arr
networks:
arr:
external: true
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Servarr Apps</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
margin: 0;
font-family: Arial, sans-serif;
text-align: center;
background-color: #1b1b1d;
margin: 0;
padding: 0;
}
.container {
display: flex;
flex-direction: column;
gap: 10px;
text-align: center;
background: white;
padding: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: 10px;
}
.item {
padding: 10px;
background: #ddd;
border-radius: 5px;
margin: 10px;
text-align: center;
}
.item img {
transition: transform 0.2s;
max-width: 150px;
max-height: 100px;
height: auto;
width: auto;
display: block;
margin: 0 auto;
border-radius: 5px;
}
.item img:hover {
transform: scale(1.1);
}
.item a {
display: block;
margin-top: 10px;
text-decoration: none;
color: #007bff;
font-weight: bold;
}
.item a:hover {
color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<div class="item">
<a href="/radarr">
Radarr <img src="https://radarr.video/img/logo.png" />
</a>
</div>
<div class="item">
<a href="/sonarr">
Sonarr <img src="https://sonarr.tv/img/logo.png" />
</a>
</div>
<div class="item">
<a href="/qbit">
qBittorrent
<img
src="https://upload.wikimedia.org/wikipedia/commons/9/9e/Qbittorrent_logo.png"
/>
</a>
</div>
<div class="item">
<a href="/jellyseerr">
Jellyseerr
<img src="https://docs.jellyseerr.dev/img/logo.svg" />
</a>
</div>
<div class="item">
<a href="/emby">
Emby
<img src="https://emby.media/resources/logowhite_1881.png" />
</a>
</div>
</div>
</body>
</html>
#!/bin/bash
# Update the system and install prerequisites
echo "Updating the system and installing prerequisites..."
sudo pacman -Syu --noconfirm
sudo pacman -S --noconfirm curl base-devel
echo "Installing Avahi (use hostnames like myarchy.local)..."
sudo pacman -S --noconfirm avahi nss-mdns
if [[ false ]]; then
# https://github.com/avahi/nss-mdns/blob/master/README.md#activation
avahi-browse --all --ignore-local --resolve --terminate
sudo nano /etc/avahi/avahi-daemon.conf
# [server]
# allow-interfaces=enp0s31f6
# deny-interfaces=docker0,br-*,veth*
# disallow-other-stacks=yes
sudo nano /etc/nsswitch.conf
# hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
# hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns mdns4
sudo systemctl restart avahi-daemon systemd-resolved systemd-networkd
# $ avahi-resolve -n dell-optiplex7040.local -4
# dell-optiplex7040.local 192.168.4.68
fi
# Install Docker
echo "Installing Docker..."
sudo pacman -S --noconfirm docker
# Enable and start Docker service
echo "Enabling and starting Docker service..."
sudo systemctl enable docker
sudo systemctl start docker
# Add current user to the docker group
echo "Adding user $(whoami) to the docker group..."
sudo usermod -aG docker $(whoami)
echo "Please log out and log back in to apply group changes."
# Install Docker Compose
echo "Installing Docker Compose..."
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Make Docker Compose executable
echo "Making Docker Compose executable..."
sudo chmod +x /usr/local/bin/docker-compose
# Verify installations
echo "Verifying Docker installation..."
docker --version
echo "Verifying Docker Compose installation..."
docker-compose --version
echo "Installation completed! Please log out and log back in to use Docker without sudo."
logging:
level:
com.github.schaka: INFO
threshold:
file: NONE
file-system:
access: true
validate-seeding: true
leaving-soon-dir: "${LEAVING_PATH}"
media-server-leaving-soon-dir: "${LEAVING_PATH}"
from-scratch: true
free-space-check-dir: "${MEDIA_PATH}"
application:
dry-run: false
run-once: false
whole-tv-show: false
whole-show-seeding-check: false
leaving-soon: 14d
exclusion-tag: "janitorr_keep"
media-deletion:
enabled: true
movie-expiration:
5: 1d
10: 2d
15: 5d
20: 15d
season-expiration:
5: 1d
10: 2d
15: 5d
20: 15d
tag-based-deletion:
enabled: true
minimum-free-disk-percent: 100
schedules:
- tag: 5 - demo
expiration: 30d
- tag: 10 - demo
expiration: 7d
episode-deletion:
enabled:
true
# Shows tagged with this will have all episodes of their LATEST season deleted by the below thresholds
tag: janitorr_daily
max-episodes: 1
max-age: 30d
clients:
sonarr:
enabled: true
url: "http://sonarr:8989"
api-key: "${SONARR_API_KEY}"
delete-empty-shows: true
determine-age-by: most_recent
radarr:
enabled: true
url: "http://radarr:7878"
api-key: "${RADARR_API_KEY}"
only-delete-files: false
determine-age-by: most_recent
emby:
enabled: false
url: "http://emby:8096"
api-key: "70aa82de9217497c92071e92be2d4604"
username: "janitorr"
password: "janitorr"
delete: true
leaving-soon-tv: "Shows (Leaving Soon)"
leaving-soon-movies: "Movies (Leaving Soon)"
jellyseerr:
enabled: false
url: "http://jellyseerr:5055"
api-key: "MTczMTIwNTIwMjg3NjNiOGIxMTk0LWNkM2MtNGRhZC05YzEyLTUzYzE5NzJkMDdmMA=="
match-server: false
jellyfin:
enabled: false
jellystat:
enabled: false
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /qbit {
return 307 http://$host:8080/#/;
}
location /radarr {
return 307 http://$host:7878/;
}
location /sonarr {
return 307 http://$host:8989/;
}
location /jellyseerr {
return 307 http://$host:5055/;
}
location /emby {
return 307 http://$host:8096/;
}
}
}
[AutoRun]
OnTorrentAdded\Enabled=false
OnTorrentAdded\Program=
enabled=false
program=
[BitTorrent]
Session\DefaultSavePath=/media/downloads
Session\ExcludedFileNames=
Session\IgnoreLimitsOnLAN=true
Session\Interface=
Session\InterfaceAddress=0.0.0.0
Session\InterfaceName=
Session\MaxConnections=-1
Session\MaxConnectionsPerTorrent=-1
Session\MaxUploads=-1
Session\MaxUploadsPerTorrent=-1
Session\Port=57132
Session\QueueingSystemEnabled=false
Session\uTPRateLimited=false
[Core]
AutoDeleteAddedTorrentFile=Never
[Meta]
MigrationVersion=4
[Network]
Proxy\OnlyForTorrents=false
[Preferences]
Advanced\RecheckOnCompletion=false
Advanced\trackerPort=9000
Advanced\trackerPortForwarding=false
Connection\ResolvePeerCountries=true
Downloads\SavePath=${CONFIG_PATH}/qbit/downloads/
Downloads\TempPath=${CONFIG_PATH}/qbit/downloads/temp/
DynDNS\DomainName=changeme.dyndns.org
DynDNS\Enabled=false
DynDNS\Password=
DynDNS\Service=DynDNS
DynDNS\Username=
General\Locale=en
MailNotification\email=
MailNotification\enabled=false
MailNotification\password=
MailNotification\req_auth=true
MailNotification\req_ssl=false
MailNotification\[email protected]
MailNotification\smtp_server=smtp.changeme.com
MailNotification\username=
Scheduler\days=EveryDay
Scheduler\end_time=@Variant(\0\0\0\xf\xff\xff\xff\xff)
Scheduler\start_time=@Variant(\0\0\0\xf\x1\xb7t\0)
WebUI\Address=*
WebUI\AlternativeUIEnabled=true
WebUI\AuthSubnetWhitelist=192.168.1.0/24
WebUI\AuthSubnetWhitelistEnabled=false
WebUI\BanDuration=60
WebUI\CSRFProtection=true
WebUI\ClickjackingProtection=true
WebUI\CustomHTTPHeaders=
WebUI\CustomHTTPHeadersEnabled=false
WebUI\HTTPS\CertificatePath=
WebUI\HTTPS\Enabled=false
WebUI\HTTPS\KeyPath=
WebUI\HostHeaderValidation=false
WebUI\LocalHostAuth=false
WebUI\MaxAuthenticationFailCount=5
WebUI\Port=8080
WebUI\ReverseProxySupportEnabled=false
WebUI\RootFolder=/app/vuetorrent
WebUI\SecureCookie=true
WebUI\ServerDomains=*
WebUI\SessionTimeout=3600
WebUI\TrustedReverseProxiesList=
WebUI\UseUPnP=false
WebUI\Username=admin
WebUI\Password_PBKDF2="@ByteArray(ARQ77eY1NUZaQsuDHbIMCA==:0WMRkYTUWVT9wVvdDtHAjU9b3b7uB8NR1Gur2hmQCvCDpm39Q+PsJRJPaCU51dEiz+dTzh8qbPsL8WkFljQYFQ==)"
[RSS]
AutoDownloader\DownloadRepacks=true
# Configuration specific to Sonarr
sonarr:
series:
# Set the URL/API Key to your actual instance
base_url: http://sonarr:8989
api_key: $SONARR_API_KEY
# Quality definitions from the guide to sync to Sonarr. Choices: series, anime
quality_definition:
type: series
preferred_ratio: 0.5
# Configuration specific to Radarr.
radarr:
movies:
base_url: http://radarr:7878
api_key: $RADARR_API_KEY
quality_definition:
type: movie
preferred_ratio: 0.5
include:
# Comment out any of the following includes to disable them
- template: radarr-quality-definition-movie
- template: radarr-quality-profile-uhd-bluray-web
- template: radarr-custom-formats-uhd-bluray-web
- template: radarr-quality-profile-hd-bluray-web
- template: radarr-custom-formats-hd-bluray-web
# Custom Formats: https://recyclarr.dev/wiki/yaml/config-reference/custom-formats/
custom_formats:
# Audio
- trash_ids:
# Uncomment the next section to enable Advanced Audio Formats
# - 496f355514737f7d83bf7aa4d24f8169 # TrueHD Atmos
# - 2f22d89048b01681dde8afe203bf2e95 # DTS X
# - 417804f7f2c4308c1f4c5d380d4c4475 # ATMOS (undefined)
# - 1af239278386be2919e1bcee0bde047e # DD+ ATMOS
# - 3cafb66171b47f226146a0770576870f # TrueHD
# - dcf3ec6938fa32445f590a4da84256cd # DTS-HD MA
# - a570d4a0e56a2874b64e5bfa55202a1b # FLAC
# - e7c2fcae07cbada050a0af3357491d7b # PCM
# - 8e109e50e0a0b83a5098b056e13bf6db # DTS-HD HRA
# - 185f1dd7264c4562b9022d963ac37424 # DD+
# - f9f847ac70a0af62ea4a08280b859636 # DTS-ES
# - 1c1a4c5e823891c75bc50380a6866f73 # DTS
# - 240770601cc226190c367ef59aba7463 # AAC
# - c2998bd0d90ed5621d8df281e839436e # DD
assign_scores_to:
- name: UHD Bluray + WEB
# Movie Versions
- trash_ids:
- 9f6cbff8cfe4ebbc1bde14c7b7bec0de # IMAX Enhanced
assign_scores_to:
- name: UHD Bluray + WEB
# score: 0 # Uncomment this line to disable prioritised IMAX Enhanced releases
# Optional
- trash_ids:
# Comment out the next line if you and all of your users' setups are fully DV compatible
- 923b6abef9b17f937fab56cfcf89e1f1 # DV (WEBDL)
# HDR10Plus Boost - Uncomment the next line if any of your devices DO support HDR10+
# - b17886cb4158d9fea189859409975758 # HDR10Plus Boost
assign_scores_to:
- name: UHD Bluray + WEB
- trash_ids:
- 9c38ebb7384dada637be8899efa68e6f # SDR
assign_scores_to:
- name: UHD Bluray + WEB
# score: 0 # Uncomment this line to allow SDR releases
- trash_ids:
- 9f6cbff8cfe4ebbc1bde14c7b7bec0de # IMAX Enhanced
assign_scores_to:
- name: HD Bluray + WEB
# score: 0 # Uncomment this line to disable prioritised IMAX Enhanced releases
#!/usr/bin/env bash
set -e
docker-compose down -v
docker network rm arr || :
set -a
source .env
set +a
rm -rf ${CONFIG_PATH}/* ${MEDIA_PATH}/*
#!/usr/bin/env bash
RED="\033[31m"
GREY="\033[90m"
RESET="\033[0m"
set -e
set -a
source .env
set +a
# Check if the script is being run as root
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run as root."
exit 1
fi
# Add apps user and group
groupadd -g $PGID apps || groupadd apps || getent group apps
useradd -u $PUID -g $PGID -m -s /bin/bash apps || getent passwd apps
docker network create arr || :
mkdir -p ${TV_PATH} ${MOVIES_PATH} ${DOWNLOADS_PATH} ${LEAVING_PATH}
chown -R apps:apps ${TV_PATH} ${MOVIES_PATH} ${DOWNLOADS_PATH} ${LEAVING_PATH}
mkdir -p ${CONFIG_PATH}/{emby,jellyseerr,janitorr,prowlarr,organizr,qbit,radarr,recyclarr,sonarr,unpackerr}/config
chown -R apps:apps ${CONFIG_PATH}/{emby,jellyseerr,janitorr,prowlarr,organizr,qbit,radarr,recyclarr,sonarr,unpackerr}
chmod -R 777 ${TV_PATH} ${MOVIES_PATH} ${DOWNLOADS_PATH} ${LEAVING_PATH} ${CONFIG_PATH}
docker-compose up -d flaresolverr radarr sonarr prowlarr
echo '..........'
sleep 10
echo -e "[${RED}flaresolverr${RESET}](${GREY}http://localhost:8191${RESET})"
echo -e "[${RED}prowlarr${RESET}](${GREY}http://localhost:9696${RESET})"
echo -e "[${RED}radarr${RESET}](${GREY}http://localhost:7878${RESET})"
echo -e "[${RED}sonarr${RESET}](${GREY}http://localhost:8989${RESET})"
read -p "Have you configured these applications? (yes/no): " configured
if [[ "$configured" == "yes" ]]; then
echo "Both applications are configured."
else
exit 1
fi
# Prowlarr API Key extract
# Check if the configuration file exists
if [ -f "$CONFIG_PATH/prowlarr/config.xml" ]; then
# Extract the API key using grep and awk
prowlarr_api_key=$(grep -oP '(?<=<ApiKey>).*?(?=</ApiKey>)' "$CONFIG_PATH/prowlarr/config.xml")
if [ -n "$prowlarr_api_key" ]; then
# Export the Prowlarr API key as a global variable
export PROWLARR_API_KEY="$prowlarr_api_key"
echo "Exported PROWLARR_API_KEY variable."
else
echo "API Key not found in the Prowlarr configuration file."
fi
else
echo "Prowlarr configuration file not found."
fi
echo '..........'
sleep 10
# Sonarr API Key extract
# Check if the configuration file exists
if [ -f "$CONFIG_PATH/sonarr/config.xml" ]; then
# Extract the API key using grep and awk
sonarr_api_key=$(grep -oP '(?<=<ApiKey>).*?(?=</ApiKey>)' "$CONFIG_PATH/sonarr/config.xml")
if [ -n "$sonarr_api_key" ]; then
# Export the Sonarr API key as a global variable
export SONARR_API_KEY="$sonarr_api_key"
echo "Exported SONARR_API_KEY=${SONARR_API_KEY} variable."
else
echo "Sonarr API Key not found in the configuration file."
fi
else
echo "Sonarr configuration file not found."
fi
echo '.....'
sleep 5
# Radarr API Key extract
# Check if the configuration file exists
if [ -f "$CONFIG_PATH/radarr/config.xml" ]; then
# Extract the API key using grep and awk
radarr_api_key=$(grep -oP '(?<=<ApiKey>).*?(?=</ApiKey>)' "$CONFIG_PATH/radarr/config.xml")
if [ -n "$radarr_api_key" ]; then
# Export the Radarr API key as a global variable
export RADARR_API_KEY="$radarr_api_key"
echo "Exported RADARR_API_KEY=${RADARR_API_KEY} variable."
else
echo "Radarr API Key not found in the configuration file."
fi
else
echo "Radarr configuration file not found."
fi
# Set the root folder for Sonarr
curl "http://localhost:8989/api/v3/rootFolder" -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Api-Key: $SONARR_API_KEY" --data-raw "{\"path\":\"$TV_PATH\"}"
# Set the root folder for Radarr
curl "http://localhost:7878/api/v3/rootFolder" -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Api-Key: $RADARR_API_KEY" --data-raw "{\"path\":\"$MOVIES_PATH\"}"
# Add Sonarr to Prowlarr
curl "http://localhost:9696/api/v1/applications" -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Api-Key: $PROWLARR_API_KEY" \
--data-raw '
{"syncLevel":"fullSync","name":"Sonarr","fields":[{"name":"prowlarrUrl","value":"http://prowlarr:9696"},{"name":"baseUrl","value":"http://sonarr:8989"},{"name":"apiKey","value":"'$SONARR_API_KEY'"},{"name":"syncCategories","value":[5000,5010,5020,5030,5040,5045,5050,5090]},{"name":"animeSyncCategories","value":[5070]},{"name":"syncAnimeStandardFormatSearch","value":false}],"implementationName":"Sonarr","implementation":"Sonarr","configContract":"SonarrSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#sonarr","tags":[]}'
curl "http://localhost:9696/api/v1/applications" -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Api-Key: $PROWLARR_API_KEY" --data-raw '
{"syncLevel":"fullSync","name":"Radarr","fields":[{"name":"prowlarrUrl","value":"http://prowlarr:9696"},{"name":"baseUrl","value":"http://radarr:7878"},{"name":"apiKey","value":"'$RADARR_API_KEY'"},{"name":"syncCategories","value":[2000,2010,2020,2030,2040,2045,2050,2060,2070,2080,2090]}],"implementationName":"Radarr","implementation":"Radarr","configContract":"RadarrSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#radarr","tags":[]}'
#clean up radarr profiles
# curl "http://localhost:7878/api/v3/qualityprofile/1" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY"
# curl "http://localhost:7878/api/v3/qualityprofile/6" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY"
# curl "http://localhost:7878/api/v3/qualityprofile/3" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY"
# curl "http://localhost:7878/api/v3/qualityprofile/2" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY"
# curl "http://localhost:7878/api/v3/qualityprofile/4" -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY" \
# --data-raw '{{"name":"HD-1080p","upgradeAllowed":true,"cutoff":7,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":24,"name":"WORKPRINT","source":"workprint","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":25,"name":"CAM","source":"cam","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":26,"name":"TELESYNC","source":"telesync","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":27,"name":"TELECINE","source":"telecine","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":29,"name":"REGIONAL","source":"dvd","resolution":480,"modifier":"regional"},"items":[],"allowed":false},{"quality":{"id":28,"name":"DVDSCR","source":"dvd","resolution":480,"modifier":"screener"},"items":[],"allowed":false},{"quality":{"id":1,"name":"SDTV","source":"tv","resolution":480,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":23,"name":"DVD-R","source":"dvd","resolution":480,"modifier":"remux"},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":8,"name":"WEBDL-480p","source":"webdl","resolution":480,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":12,"name":"WEBRip-480p","source":"webrip","resolution":480,"modifier":"none"},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":20,"name":"Bluray-480p","source":"bluray","resolution":480,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":21,"name":"Bluray-576p","source":"bluray","resolution":576,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"tv","resolution":720,"modifier":"none"},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":5,"name":"WEBDL-720p","source":"webdl","resolution":720,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":14,"name":"WEBRip-720p","source":"webrip","resolution":720,"modifier":"none"},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"tv","resolution":1080,"modifier":"none"},"items":[],"allowed":true},{"name":"WEB 1080p","items":[{"quality":{"id":3,"name":"WEBDL-1080p","source":"webdl","resolution":1080,"modifier":"none"},"items":[],"allowed":true},{"quality":{"id":15,"name":"WEBRip-1080p","source":"webrip","resolution":1080,"modifier":"none"},"items":[],"allowed":true}],"allowed":true,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080,"modifier":"none"},"items":[],"allowed":true},{"quality":{"id":30,"name":"Remux-1080p","source":"bluray","resolution":1080,"modifier":"remux"},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"tv","resolution":2160,"modifier":"none"},"items":[],"allowed":false},{"name":"WEB 2160p","items":[{"quality":{"id":18,"name":"WEBDL-2160p","source":"webdl","resolution":2160,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":17,"name":"WEBRip-2160p","source":"webrip","resolution":2160,"modifier":"none"},"items":[],"allowed":false}],"allowed":false,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":31,"name":"Remux-2160p","source":"bluray","resolution":2160,"modifier":"remux"},"items":[],"allowed":false},{"quality":{"id":22,"name":"BR-DISK","source":"bluray","resolution":1080,"modifier":"brdisk"},"items":[],"allowed":false},{"quality":{"id":10,"name":"Raw-HD","source":"tv","resolution":1080,"modifier":"rawhd"},"items":[],"allowed":false}],"minFormatScore":0,"cutoffFormatScore":0,"formatItems":[],"language":{"id":1,"name":"English"},"id":4}
# }'
# curl "http://localhost:7878/api/v3/qualityprofile/5" -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY" \
# --data-raw '{{"name":"Ultra-HD","upgradeAllowed":true,"cutoff":19,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":24,"name":"WORKPRINT","source":"workprint","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":25,"name":"CAM","source":"cam","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":26,"name":"TELESYNC","source":"telesync","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":27,"name":"TELECINE","source":"telecine","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":29,"name":"REGIONAL","source":"dvd","resolution":480,"modifier":"regional"},"items":[],"allowed":false},{"quality":{"id":28,"name":"DVDSCR","source":"dvd","resolution":480,"modifier":"screener"},"items":[],"allowed":false},{"quality":{"id":1,"name":"SDTV","source":"tv","resolution":480,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":0,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":23,"name":"DVD-R","source":"dvd","resolution":480,"modifier":"remux"},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":8,"name":"WEBDL-480p","source":"webdl","resolution":480,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":12,"name":"WEBRip-480p","source":"webrip","resolution":480,"modifier":"none"},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":20,"name":"Bluray-480p","source":"bluray","resolution":480,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":21,"name":"Bluray-576p","source":"bluray","resolution":576,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"tv","resolution":720,"modifier":"none"},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":5,"name":"WEBDL-720p","source":"webdl","resolution":720,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":14,"name":"WEBRip-720p","source":"webrip","resolution":720,"modifier":"none"},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"tv","resolution":1080,"modifier":"none"},"items":[],"allowed":false},{"name":"WEB 1080p","items":[{"quality":{"id":3,"name":"WEBDL-1080p","source":"webdl","resolution":1080,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":15,"name":"WEBRip-1080p","source":"webrip","resolution":1080,"modifier":"none"},"items":[],"allowed":false}],"allowed":false,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080,"modifier":"none"},"items":[],"allowed":false},{"quality":{"id":30,"name":"Remux-1080p","source":"bluray","resolution":1080,"modifier":"remux"},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"tv","resolution":2160,"modifier":"none"},"items":[],"allowed":true},{"name":"WEB 2160p","items":[{"quality":{"id":18,"name":"WEBDL-2160p","source":"webdl","resolution":2160,"modifier":"none"},"items":[],"allowed":true},{"quality":{"id":17,"name":"WEBRip-2160p","source":"webrip","resolution":2160,"modifier":"none"},"items":[],"allowed":true}],"allowed":true,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160,"modifier":"none"},"items":[],"allowed":true},{"quality":{"id":31,"name":"Remux-2160p","source":"bluray","resolution":2160,"modifier":"remux"},"items":[],"allowed":false},{"quality":{"id":22,"name":"BR-DISK","source":"bluray","resolution":1080,"modifier":"brdisk"},"items":[],"allowed":false},{"quality":{"id":10,"name":"Raw-HD","source":"tv","resolution":1080,"modifier":"rawhd"},"items":[],"allowed":false}],"minFormatScore":0,"cutoffFormatScore":0,"formatItems":[],"language":{"id":1,"name":"English"},"id":5}
# }'
#clean up sonarr profiles
# curl "http://localhost:8989/api/v3/qualityprofile/1" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY"
# curl "http://localhost:8989/api/v3/qualityprofile/6" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY"
# curl "http://localhost:8989/api/v3/qualityprofile/3" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY"
# curl "http://localhost:8989/api/v3/qualityprofile/2" -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY"
#
# curl "http://localhost:8989/api/v3/qualityprofile/4" -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY" \
# --data-raw '{"name":"HD-1080p","upgradeAllowed":true,"cutoff":7,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0},"items":[],"allowed":false},{"quality":{"id":1,"name":"SDTV","source":"television","resolution":480},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":12,"name":"WEBRip-480p","source":"webRip","resolution":480},"items":[],"allowed":false},{"quality":{"id":8,"name":"WEBDL-480p","source":"web","resolution":480},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":480},"items":[],"allowed":false},{"quality":{"id":13,"name":"Bluray-480p","source":"bluray","resolution":480},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"television","resolution":720},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"television","resolution":1080},"items":[],"allowed":true},{"quality":{"id":10,"name":"Raw-HD","source":"televisionRaw","resolution":1080},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":14,"name":"WEBRip-720p","source":"webRip","resolution":720},"items":[],"allowed":false},{"quality":{"id":5,"name":"WEBDL-720p","source":"web","resolution":720},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720},"items":[],"allowed":false},{"name":"WEB 1080p","items":[{"quality":{"id":15,"name":"WEBRip-1080p","source":"webRip","resolution":1080},"items":[],"allowed":true},{"quality":{"id":3,"name":"WEBDL-1080p","source":"web","resolution":1080},"items":[],"allowed":true}],"allowed":true,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080},"items":[],"allowed":true},{"quality":{"id":20,"name":"Bluray-1080p Remux","source":"blurayRaw","resolution":1080},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"television","resolution":2160},"items":[],"allowed":false},{"name":"WEB 2160p","items":[{"quality":{"id":17,"name":"WEBRip-2160p","source":"webRip","resolution":2160},"items":[],"allowed":false},{"quality":{"id":18,"name":"WEBDL-2160p","source":"web","resolution":2160},"items":[],"allowed":false}],"allowed":false,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160},"items":[],"allowed":false},{"quality":{"id":21,"name":"Bluray-2160p Remux","source":"blurayRaw","resolution":2160},"items":[],"allowed":false}],"id":4}'
# curl "http://localhost:8989/api/v3/qualityprofile/5" -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY" \
# --data-raw '{"name":"HD-1080p","upgradeAllowed":true,"cutoff":7,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0},"items":[],"allowed":false},{"quality":{"id":1,"name":"SDTV","source":"television","resolution":480},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":12,"name":"WEBRip-480p","source":"webRip","resolution":480},"items":[],"allowed":false},{"quality":{"id":8,"name":"WEBDL-480p","source":"web","resolution":480},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":480},"items":[],"allowed":false},{"quality":{"id":13,"name":"Bluray-480p","source":"bluray","resolution":480},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"television","resolution":720},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"television","resolution":1080},"items":[],"allowed":true},{"quality":{"id":10,"name":"Raw-HD","source":"televisionRaw","resolution":1080},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":14,"name":"WEBRip-720p","source":"webRip","resolution":720},"items":[],"allowed":false},{"quality":{"id":5,"name":"WEBDL-720p","source":"web","resolution":720},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720},"items":[],"allowed":false},{"name":"WEB 1080p","items":[{"quality":{"id":15,"name":"WEBRip-1080p","source":"webRip","resolution":1080},"items":[],"allowed":true},{"quality":{"id":3,"name":"WEBDL-1080p","source":"web","resolution":1080},"items":[],"allowed":true}],"allowed":true,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080},"items":[],"allowed":true},{"quality":{"id":20,"name":"Bluray-1080p Remux","source":"blurayRaw","resolution":1080},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"television","resolution":2160},"items":[],"allowed":false},{"name":"WEB 2160p","items":[{"quality":{"id":17,"name":"WEBRip-2160p","source":"webRip","resolution":2160},"items":[],"allowed":false},{"quality":{"id":18,"name":"WEBDL-2160p","source":"web","resolution":2160},"items":[],"allowed":false}],"allowed":false,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160},"items":[],"allowed":false},{"quality":{"id":21,"name":"Bluray-2160p Remux","source":"blurayRaw","resolution":2160},"items":[],"allowed":false}],"id":4}'
# Setup FlareSolverr for Prowlarr
curl 'http://localhost:9696/api/v1/tag' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -H "X-Api-Key: ${PROWLARR_API_KEY}" --data-raw '{"label":"FlareSolverr"}'
curl 'http://localhost:9696/api/v1/indexerProxy/1' -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -H "X-Api-Key: ${PROWLARR_API_KEY}" --data-raw '{"onHealthIssue":false,"supportsOnHealthIssue":false,"includeHealthWarnings":false,"name":"FlareSolverr","fields":[{"name":"host","value":"http://flaresolverr:8191/"},{"name":"requestTimeout","value":60}],"implementationName":"FlareSolverr","implementation":"FlareSolverr","configContract":"FlareSolverrSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#flaresolverr","tags":[1],"id":1}'
#Update Qbit config
envsubst <./qBittorrent.conf >"$CONFIG_PATH/qbit/config/qBittorrent.conf"
docker-compose up -d qbittorrent
echo '...'
sleep 3
echo -e "[${RED}qbittorrent${RESET}](${GREY}http://localhost:8080${RESET})"
echo '...'
sleep 3
docker-compose up -d emby jellyseerr
# Add qBittorrent as a download client to Sonarr
curl "http://localhost:8989/api/v3/downloadclient" -X POST -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $SONARR_API_KEY" \
--data-raw '
{"enable":true,"protocol":"torrent","priority":1,"removeCompletedDownloads":true,"removeFailedDownloads":true,"name":"qbittorrent","fields":[{"name":"host","value":"qbittorrent"},{"name":"port","value":8080},{"name":"useSsl","value":false},{"name":"urlBase"},{"name":"username","value":"admin"},{"name":"password","value":"adminadmin"},{"name":"tvCategory","value":"tv-sonarr"},{"name":"tvImportedCategory"},{"name":"recentTvPriority","value":0},{"name":"olderTvPriority","value":0},{"name":"initialState","value":0},{"name":"sequentialOrder","value":false},{"name":"firstAndLast","value":false}],"implementationName":"qBittorrent","implementation":"QBittorrent","configContract":"QBittorrentSettings","infoLink":"https://wiki.servarr.com/sonarr/supported#qbittorrent","tags":[]}'
# Add qBittorrent as a download client to Radarr
curl "http://localhost:7878/api/v3/downloadclient" -X POST -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $RADARR_API_KEY" \
--data-raw '
{"enable":true,"protocol":"torrent","priority":1,"removeCompletedDownloads":true,"removeFailedDownloads":true,"name":"qbittorrent","fields":[{"name":"host","value":"qbittorrent"},{"name":"port","value":8080},{"name":"useSsl","value":false},{"name":"urlBase"},{"name":"username","value":"admin"},{"name":"password","value":"adminadmin"},{"name":"movieCategory","value":"radarr"},{"name":"movieImportedCategory"},{"name":"recentMoviePriority","value":0},{"name":"olderMoviePriority","value":0},{"name":"initialState","value":0},{"name":"sequentialOrder","value":false},{"name":"firstAndLast","value":false}],"implementationName":"qBittorrent","implementation":"QBittorrent","configContract":"QBittorrentSettings","infoLink":"https://wiki.servarr.com/radarr/supported#qbittorrent","tags":[]}'
# Add qBittorrent as a download client to Prowlarr
curl "http://localhost:9696/api/v1/downloadclient" -X POST -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $PROWLARR_API_KEY" \
--data-raw '
{"enable":true,"protocol":"torrent","priority":1,"categories":[],"supportsCategories":true,"name":"QBittorrent","fields":[{"name":"host","value":"qbittorrent"},{"name":"port","value":8080},{"name":"useSsl","value":false},{"name":"urlBase"},{"name":"username","value":"admin"},{"name":"password","value":"adminadmin"},{"name":"category","value":"prowlarr"},{"name":"priority","value":0},{"name":"initialState","value":0},{"name":"sequentialOrder","value":false},{"name":"firstAndLast","value":false}],"implementationName":"qBittorrent","implementation":"QBittorrent","configContract":"QBittorrentSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#qbittorrent","tags":[]}'
#configure unpackerr
envsubst <./unpackerr.conf >"${CONFIG_PATH}/unpackerr/unpackerr.conf"
docker-compose up -d unpackerr
envsubst <./recyclarr.yml >$CONFIG_PATH/recyclarr/recyclarr.yml
docker-compose up -d recyclarr
echo '.'
sleep 1
docker-compose exec recyclarr recyclarr sync radarr
echo '.....'
sleep 5
docker-compose exec recyclarr recyclarr sync sonarr
echo '.....'
sleep 5
envsubst <./janitorr.yml >$CONFIG_PATH/janitorr/config/application.yml
docker-compose up -d janitorr
docker-compose up -d watchtower
echo -e "[${RED}emby${RESET}](${GREY}http://localhost:8096${RESET})"
echo -e "[${RED}jellyseerr${RESET}](${GREY}http://localhost:5055${RESET})"
envsubst <./arr-app.service | tee /etc/systemd/system/arr-app.service
systemctl daemon-reload
systemctl enable --now arr-app.service
echo -e "..... \e[32mDone\e[0m ....."

TODO

787.2 MB is smaller than minimum allowed 2.3 GB Bluray-720p is not wanted in profile Quality for release in queue already meets cutoff: Remux-1080p v1

  • Explore setting up on Batocera distro
## Unpackerr Example Configuration File ##
## The following values are application defaults. ##
## Environment Variables may override all values. ##
####################################################
# [true/false] Turn on debug messages in the output. Do not wrap this in quotes.
# Recommend trying this so you know what it looks like. I personally leave it on.
debug = false
# Disable writing messages to stdout. This silences the app. You should set a log
# file below if you set this to true. Recommended when starting with systemctl.
quiet = false
# Setting activity to true will silence all app queue log lines with only zeros.
# Set this to true when you want less log spam.
activity = false
# The application queue data is logged on an interval. Adjust that interval with this setting.
# Default is a minute. 2m, 5m, 10m, 30m, 1h are also perfectly acceptable.
log_queues = "1m"
# Write messages to a log file. This is the same data that is normally output to stdout.
# This setting is great for Docker users that want to export their logs to a file.
# The alternative is to use syslog to log the output of the application to a file.
# Default is no log file; this is unset. log_files=0 turns off auto-rotation.
# Default files is 10 and size(mb) is 10 Megabytes; both doubled if debug is true.
#log_file = '/downloads/unpackerr.log'
log_files = 10
log_file_mb = 10
# How often to poll sonarr and radarr.
# Recommend 1m-5m. Uses Go Duration.
interval = "1m"
# How long an item must be queued (download complete) before extraction will start.
# One minute is the historic default and works well. Set higher if your downloads
# take longer to finalize (or transfer locally). Uses Go Duration.
start_delay = "1m"
# How long to wait before removing the history for a failed extraction.
# Once the history is deleted the item will be recognized as new and
# extraction will start again. Uses Go Duration.
retry_delay = "5m"
# How many files may be extracted in parallel. 1 works fine.
# Do not wrap the number in quotes. Raise this only if you have fast disks and CPU.
parallel = 1
# Use these configurations to control the file modes used for newly extracted
# files and folders. Recommend 0644/0755 or 0666/0777.
file_mode = "0644"
dir_mode = "0755"
[webserver]
## The web server currently only supports metrics; set this to true if you wish to use it.
metrics = false
## This may be set to a port or an ip:port to bind a specific IP. 0.0.0.0 binds ALL IPs.
listen_addr = "0.0.0.0:5656"
## Recommend setting a log file for HTTP requests. Otherwise, they go with other logs.
log_file = ""
## This app automatically rotates logs. Set these to the size and number to keep.
log_files = 10
log_file_mb = 10
## Set both of these to valid file paths to enable HTTPS/TLS.
ssl_cert_file = ""
ssl_key_file = ""
## Base URL from which to serve content.
urlbase = "/"
## Upstreams should be set to the IP or CIDR of your trusted upstream proxy.
## Setting this correctly allows X-Forwarded-For to be used in logs.
## In the future it may control auth proxy trust. Must be a list of strings.
upstreams = [ ] # example: upstreams = [ "127.0.0.1/32", "10.1.2.0/24" ]
##-Notes-#######-READ THIS!!!-##################################################
## The following sections can be repeated if you have more than one Sonarr, ##
## Radarr or Lidarr, Readarr, Folder, Webhook, or Command Hook. ##
## You MUST uncomment the [[header]] and api_key at a minimum for Starr apps. ##
## ALL LINES BEGINNING WITH A HASH # ARE IGNORED ##
## REMOVE THE HASH # FROM CONFIG LINES YOU WANT TO CHANGE ##
################################################################################
[[sonarr]]
url = "http://sonarr:8989"
api_key = "$SONARR_API_KEY"
## File system path where downloaded Sonarr items are located.
paths = ['$DOWNLOADS_PATH']
## Default protocols is torrent. Alternative: "torrent,usenet"
protocols = "torrent"
## How long to wait for a reply from the backend.
timeout = "10s"
## How long to wait after import before deleting the extracted items.
delete_delay = "5m"
[[radarr]]
url = "http://radarr:7878"
api_key = "$RADARR_API_KEY"
## File system path where downloaded Radarr items are located.
paths = ['$DOWNLOADS_PATH']
## Default protocols is torrents. Alternative: "torrent,usenet"
protocols = "torrent"
## How long to wait for a reply from the backend.
timeout = "10s"
## How long to wait after import before deleting the extracted items.
delete_delay = "5m"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment