We will prepare the anonymous VPN configuration file that qBittorrent requires; we will configure the arr apps Docker stack; and we will bring the stack up through Portainer. The stack consists of the following containers:
- qBittorrent: Download manager through the bittorrent protocol.
- Sonarr: Series manager.
- Radarr: Movie manager.
- Prowlarr: Search engine manager.
- Bazarr: Subtitle manager.
- Flaresolverr: CAPTCHA solver.
- Jellyfin: Media service.
- Jellyseerr: Media request manager and catalog service.
- Run:
./scripts/create_arr_folders.sh
to generate the container directories on the SSD. - Copy the anonymous VPN configuration file for bittorrent:
scp user@host:/path/to/vpn.conf /Apps/qbittorrent/wireguard/tun0.conf
. Change{user@host:/path/to/vpn.conf}
to the address of the file on the computer that contains the file. This file must be provided by your VPN provider if you select WireGuard as the protocol. You can also use a USB stick to transfer the configuration file. If your provider requires using OpenVPN you will have to change the container configuration. For more information read the container's guide: https://github.com/Trigus42/alpine-qbittorrentvpn. - Edit the stack file:
nano ./files/arr-stack.yml
. - Replace
TZ=America/New_York
with your system time zone. You can use this list as a reference: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - Replace the XXX with the
uid
andgid
of the usermediacenter
. You can useid mediacenter
to get theuid
andgid
. - If a GPU is not going to be used, delete the
runtime
anddeploy
sections of thejellyfin
container. - If you are going to use OpenVPN for bittorrent, update the
qbittorrent
container according to the official guide. - If you are not going to expose the server to the internet, remove the
nginx
network. - Copy all contents of the file to the clipboard. Save and exit with
Ctrl + X, Y, Enter
. - Add stack in Portainer from the browser.
- Access Portainer through https://192.168.1.253:9443. If you get a security alert, you can accept the risk since Portainer uses a self-signed SSL certificate.
- Click "Get Started" and then select "local."
- Select "Stacks" and create a new stack.
- Name it "arr" and paste the content of the docker-compose.yml that you copied to the clipboard and create the stack. From now on, modifications to the stack must be made through Portainer and not in the file.
- Access qBittorrent through http://192.168.1.253:10095.
- Use
admin
andadminadmin
as username and password. - Click the
Options
button. - Configure
Downloads
tab. Make the following changes:- "Default Torrent Management Mode" : "Automatic".
- "Default Save Path": "/MediaCenter/torrents".
- Optional: If you want to save the
.torrent
files in case you need to download something again, you can enable "Copy .torrent files for finished downloads to" and assign: "/MediaCenter/torrents/backup".
- Configure
Connection
tab. Make the following changes:- Disable "Use UPnP / NAT-PMP port forwarding from my router".
- If you like, you can adjust the connection limits.
- Configure
Speed
tab. Make the following changes:- In the "Alternative Rate Limits" > "Upload" section: Set it to one third of your provider's upload speed.
- In the "Alternative Rate Limits" > "Download" section: Set it to one third of your provider's download speed.
- Enable "Schedule the use of alternative rate limits".
- Choose the time when the Internet is used at home for other things. For example: 08:00 - 01:00 every day.
- Configure
BitTorrent
tab. Make the following changes:- Disable
Enable Local Peer Discovery to find more peers
since there is nothing local in the container. - If you like to stop seeding after a goal, you can enable and adjust the limits here. For example "When the rate reaches 1".
- Disable
- Configure
Web UI
tab. Make the following changes:- Change the password to a more secure one. It is again recommended to use Bitwarden for the same.
- Enable "Bypass authentication for clients on localhost".
- Enable "Bypass authentication for clients in whitelisted IP subnets".
- Add
172.21.0.0/24
to the list below. This will allow containers in Docker'sarr
network to be accessed without a password.
- Configure
Advanced
tab. Make the following changes:- Ensure that the "Network Interface" is
tun0
. If not it means you are not using your VPN and the traffic will not be anonymous. - Enable "Reannounce to all trackers when IP or port changed".
- Enable "Always announce to all trackers in a tier".
- Enable "Always announce to all tiers".
- Ensure that the "Network Interface" is
- Save.
- Access Radarr through http://192.168.1.253:7878.
- Set password. It is again recommended to use Bitwarden for the same. Leave the authentication method as
Forms
and do not disable authentication. - Navigate to "Settings" > "Media Management" and configure.
- "Standard Movie Format":
{Movie CleanTitle} {(Release Year)} [imdbid-{ImdbId}] - {Edition Tags }{[Custom Formats]}{[Quality Full]}{[MediaInfo 3D]}{ [MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels}]{MediaInfo AudioLanguages}[{MediaInfo VideoBitDepth}bit][{Mediainfo VideoCodec}]{-Release Group}
. - Click "Add Root Folder" and select "/MediaCenter/media/movies".
- "Standard Movie Format":
- Navigate to "Settings" > "Download Clients" and configure.
- Add new client.
- Select "qBittorrent".
- "Name": "qBittorrent".
- "Host": "qbittorrent".
- "Port": "8080".
- "Category": "movies".
- Click "Test" and then "Save."
- Navigate to "Settings" > "General".
- Copy the API Key to a notepad as we will need it later.
- To configure the "Profiles", "Quality" and "Custom Formats" tabs, it is recommended to use the following guide: https://trash-guides.info/Radarr/
- Access Sonarr through http://192.168.1.253:8989.
- Set password. It is again recommended to use Bitwarden for the same. Leave the authentication method as
Forms
and do not disable authentication. - Navigate to "Settings" > "Media Management" and configure.
- "Standard Episode Format":
{Series TitleYear} - S{season:00}E{episode:00} - {Episode CleanTitle} [{Custom Formats }{Quality Full}]{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{[MediaInfo VideoCodec]}{-Release Group}
. - "Daily Episode Format":
{Series TitleYear} - {Air-Date} - {Episode CleanTitle} [{Custom Formats }{Quality Full}]{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]} {[MediaInfo VideoCodec]}{-Release Group}
. - "Anime Episode Format":
{Series TitleYear} - S{season:00}E{episode:00} - {absolute:000} - {Episode CleanTitle} [{Custom Formats }{Quality Full}]{[MediaInfo VideoDynamicRangeType]}[{MediaInfo VideoBitDepth}bit]{[MediaInfo VideoCodec]}[{Mediainfo AudioCodec} { Mediainfo AudioChannels}]{MediaInfo AudioLanguages}{-Release Group}
. - "Season Folder Format": "Season {season:00}".
- Click "Add Root Folder" and select "/MediaCenter/media/tv".
- "Standard Episode Format":
- Navigate to "Settings" > "Download Clients" and configure.
- Add new client.
- Select "qBittorrent".
- "Name": "qBittorrent".
- "Host": "qbittorrent".
- "Port": "8080".
- "Category": "tv".
- Click "Test" and then "Save."
- Navigate to "Settings" > "General".
- Copy the API Key to a notepad as we will need it later.
- To configure the "Profiles", "Quality" and "Custom Formats" tabs, it is recommended to use the following guide: https://trash-guides.info/Sonarr/
- Access Prowlarr through http://192.168.1.253:8989.
- Set password. It is again recommended to use Bitwarden for the same. Leave the authentication method as
Forms
and do not disable authentication. - Navigate to "Settings" > "Indexers" and configure.
- Add new proxy.
- Select "FlareSolverr".
- "Name": "FlareSolverr".
- "Tags": "proxy".
- "Host": "http://flaresolverr:8191/".
- Click "Test" and then "Save."
- Navigate to "Settings" > "Apps" and configure.
- Add new application.
- Select "Radarr"
- "Name": "Radarr".
- "Sync Level": "Full Sync".
- "Tags": "radarr".
- "Prowlarr Server": "http://prowlarr:9696".
- "Radarr Server": "http://radarr:7878".
- "API Key": paste the Radarr API Key that we copied before.
- Click "Test" and then "Save."
- Add new application.
- Select "Sonarr"
- "Name": "Sonarr".
- "Sync Level": "Full Sync".
- "Tags": "sonarr".
- "Prowlarr Server": "http://prowlarr:9696".
- "Sonarr Server": "http://sonarr:8989".
- "API Key": paste the Sonarr API Key that we copied before.
- Click "Test" and then "Save."
- Navigate to "Settings" > "Download Clients" and configure.
- Add new client.
- Select "qBittorrent".
- "Name": "qBittorrent".
- "Host": "qbittorrent".
- "Port": "8080".
- "Default Category": "manual".
- Click "Test" and then "Save."
- Navigate to "Indexers" and configure.
- Add indexer.
- Choose the indexer of your preference.
- Configure the indexer to your preference.
- "Tags": Add "sonarr" if you want to use this indexer with Sonarr. Add "radarr" if you want to use this indexer with Radarr. Add "proxy" if this indexer requires FlareSolverr.
- Click "Test" and then "Save."
- Repeat the steps for any other indexers you want. Prowlarr will push the indexers' details to Radarr and Sonarr.
- Access Bazarr through http://192.168.1.253:6767.
- Set password. It is again recommended to use Bitwarden for the same. Leave the authentication method as
Forms
and do not disable authentication. - Navigate to "Settings" > "Languages" and configure.
- "Languages Filter": Select the languages you are interested in downloading. It's a good idea to have a backup language in case one doesn't exist for your preferred one.
- Click "Add New Profile".
- "Name": The name of the primary language.
- Add primary language and backup languages in the order of your preference.
- "Cutoff": Select the primary language.
- Save.
- If you want other languages, you can repeat adding another profile.
- Select the default language for series and movies.
- Save.
- Navigate to "Settings" > "Providers" and configure.
- Add the subtitle providers of your choice.
- Navigate to “Settings” > “Sonarr” and configure.
- Enable Sonarr.
- "Host" > "Address": "sonarr".
- "Host" > "Port": "8989".
- "Host" > "API Key": Paste the Sonarr API Key that we copied before.
- Click "Test" and then "Save."
- Navigate to “Settings” > “Radarr” and configure.
- Enable Radarr.
- "Host" > "Address": "radarr".
- "Host" > "Port": "7878".
- "Host" > "API Key": Paste the Radarr API Key that we copied before.
- Click "Test" and then "Save."
- To configure other tabs, it is recommended to use the following guide: https://trash-guides.info/Bazarr/
- Access Jellyfin through http://192.168.1.253:8096.
- Follow the wizard to create a new username and password. It is again recommended to use Bitwarden for the same.
- Open side panel and navigate to "Administration" > "Dashboard".
- If you have GPU, navigate to "Playback" and configure.
- Select your GPU. The guide will assume "NVidia NVENC".
- Enable the codecs that your GPU model supports.
- Enable "Enable enhanced NVDEC decoder".
- Enable "Enable hardware encoding".
- Enable "Allow encoding in HEVC format".
- If you like, you can configure other parameters to your liking.
- Save.
- Navigate to "Networking" and configure:
- "Known proxies": "nginx".
- Save.
- Navigate to "Plugins" > "Catalog" and configure.
- If there will be Anime in your collection, install "AniDB" and "AniList".
- Install "TMBd Box Sets", "TVmaze" and "TheTVDB".
- For the plugins to take effect, restart Jellyfin from Portainer.
- Navigate to “Libraries” and configure.
- Add library.
- "Content Type": "Movies".
- "Name": "Movies".
- "Folders": Add "/MediaCenter/media/movies".
- Sort "Metadata downloaders": "TheMovieDb", "AniDB", "AniList", "The Open Movie Database".
- Sort "Image fetchers": "TheMovieDb", "The Open Movie Database", "AniDB", "AniList", "Embedded Image Extractor", "Screen Grabber".
- Configure the other options to your liking and Save.
- Add library.
- "Content Type": "Shows".
- "Name": "Shows".
- "Folders": Add "/MediaCenter/media/tv".
- Sort "Metadata downloaders (TV Shows)": "TheTVDB", "TVmaze", "TheMovieDb", "AniDB", "AniList", "The Open Movie Database".
- Sort "Metadata downloaders (Seasons)": "TVmaze", "TheMovieDb", "AniDB".
- Sort "Metadata downloaders (Episodes)": "TheTVDB", "TVmaze", "TheMovieDb", "AniDB", "The Open Movie Database".
- Sort "Image fetchers (TV Shows)": "TheTVDB", "TVmaze", "TheMovieDb", "AniList", "AniDB".
- Sort "Image fetchers (Seasons)": "TheTVDB", "TVmaze", "TheMovieDb", "AniDB", "AniList".
- Sort "Image fetchers (Episodes)": "TheTVDB", "TVmaze", "TheMovieDb", "The Open Movie Database", "Embedded Image Extractor", "Screen Grabber".
- Configure the other options as you like and Save.
- Navigate to "Users" and configure.
- If more people are going to use Jellyfin, Create more users and configure them as you like.
- Navigate to your profile (User icon top right) > "Subtitles".
- "Preferred subtitle language": Your primary language. Save.
- You can configure the rest of your profile if you wish.
- Access Jellyseerr through http://192.168.1.253:5055.
- Login with Jellyfin.
- Click "Use Jellyfin Account".
- "Jellyfin URL": "http://jellyfin:8096"
- Log in with your username and password.
- Configure libraries.
- Click "Sync Libraries".
- Enable "Movies", "Shows" and "Collections".
- Click "Start Scan".
- Click "Continue".
- Configure Sonarr and Radarr.
- Click "Add Radarr Server".
- Enable "Default Server".
- "Server Name": "Movies".
- "Hostname or IP Address": "radarr".
- "Port": "7878".
- "API Key": Paste the Radarr API Key that we copied before.
- Click on "Test".
- "Quality Profile": choose the default quality profile you want to use.
- "Root Folder": "/MediaCenter/media/movies".
- "Minimum Availability": "Announced."
- Enable "Enable Scan".
- Save.
- Click "Add Sonarr Server".
- Enable "Default Server".
- "Server Name": "Series".
- "Hostname or IP Address": "sonarr".
- "Port": "8989".
- "API Key": Paste the Sonarr API Key that we copied before.
- Click on "Test".
- "Quality Profile": choose the default quality profile you want to use.
- "Root Folder": "/MediaCenter/media/tv".
- "Anime Quality Profile": choose the default quality profile you want to use for Anime. Leave blank if you will not be having anime in your collection.
- "Anime Root Folder": "/MediaCenter/media/tv".
- Enable "Season Folders".
- Enable "Enable Scan".
- Save.
- Import users.
- Navigate to "Users".
- Click on "Import Jellyfin Users".
- You can configure users by clicking "Edit" in the row of the user you want to configure.
- If you wish to configure more options, Navigate to "Settings" and make the desired changes.