Skip to content

Instantly share code, notes, and snippets.

@devcutler
Created December 17, 2022 15:46
Show Gist options
  • Save devcutler/f6a2a0e2d250032415d0d647966935d2 to your computer and use it in GitHub Desktop.
Save devcutler/f6a2a0e2d250032415d0d647966935d2 to your computer and use it in GitHub Desktop.
My *arr stack with Jellyfin running on Docker.

docker-compose.yml configuration

  1. Mullvad needs a key and address space from one of the files you get from here. Input those into their respective fields in gluetun's environment variables. If you're not using Mullvad, follow any of the Provider guides on gluetun's wiki.
  2. Change any volume paths you want to be different. In the current setup the stack creates a directory per service for that service's configurations and then a single media directory for media storage.
  3. Set your PGID and PUID environment variables in any services that use them. This is used to ensure services can access the files they use.

Service configuration

Following respective services' setup guides will work for most cases, but these are some things to remember.

qBittorrent is not going to work over gluetun using IPv6. In qBittorrent's web UI settings, under the "Advanced" tab, change the "Optional IP address to bind to" setting to "All IPv4 addresses" (or another if you know what you're doing).

qBittorrent may also not work with μTP, depending on your VPN provider. If torrents refuse to find peers or have severe connection issues, try disabling it in the settings under "Connection". Right at the top, change "Peer connection protocol" to "TCP" instead of "TCP and μTP".

If you use default network configuration, using the external "stack-net" network, containers that need to interact with others will only be able to access each other if you use their hostname, not localhost. For example, when setting up Sonarr with Jackett, Sonarr will not be able to access Jackett on http://localhost:9117, even if you can. It will only be able to access it at http://jackett:9117.

For qBittorrent, this will be http://gluetun:8080. qBittorrent uses the service network mode so it can run through the VPN gluetun provides, which means all interaction with it has to happen through gluetun. http://qbittorrent:8080 will not work.

Running with Docker

I've been using docker compose up. I'm running Docker Desktop with the WSL2 backend on Windows, and it works perfectly for me, but other systems might not have this.

To install compose as a subcommand for docker on other systems, check out this page from the docker documentation or just use one of the following commands appropriate for your system.

apt install docker-compose-plugin
yum install docker-compose-plugin
zypper addrepo https://download.docker.com/linux/sles/docker-ce.repo
zypper install docker-compose-plugin

I have never heard of zypper. SUSE?

dnf-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-compose-plugin
version: "3"
networks:
default:
name: stack-net
external: true
services:
gluetun:
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
ports:
- 8080:8080
environment:
- VPN_SERVICE_PROVIDER=mullvad
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=WIREGUARD PRIVATE KEY HERE
- WIREGUARD_ADDRESSES=WIREGUARD ADDRESSES HERE
- OWNED_ONLY=yes
jellyfin:
container_name: jellyfin
image: linuxserver/jellyfin
environment:
- TZ=America/New_York
- PGID=1001
- PUID=1001
ports:
- 8096:8096
- 1900:1900
volumes:
- ./jellyfin/config:/config
- ./jellyfin/cache:/cache
- ./media:/media
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=America/New_York
ports:
- 5055:5055
volumes:
- ./jellyseerr/config:/app/config
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./jackett/config:/config
- ./media:/media:z
ports:
- 9117:9117
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./sonarr/config:/config
- ./qbittorrent/torrents:/torrents:z
- ./media/tv:/media:z
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./radarr/config:/config
- ./qbittorrent/torrents:/torrents:z
- ./media/movies:/media:z
ports:
- 7878:7878
restart: unless-stopped
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./bazarr/config:/config
- ./media/bazarr:/media:z
ports:
- 6767:6767
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
network_mode: service:gluetun
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
- WEBUI_PORT=8080
volumes:
- ./qbittorrent/config:/config:z
- ./qbittorrent/torrents:/torrents:z
- ./media:/media:z
restart: unless-stopped
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment