Skip to content

Instantly share code, notes, and snippets.

@fucksophie
Created June 23, 2025 14:29
Show Gist options
  • Save fucksophie/1d27ac0d59ffe15c04b64c2e3018316c to your computer and use it in GitHub Desktop.
Save fucksophie/1d27ac0d59ffe15c04b64c2e3018316c to your computer and use it in GitHub Desktop.
Full * arr stack + explanation

*arr stack

The *arr stack is for legally* playing music, TV shows and movies. There are four major components, those being:

  • Jellyfin (or plex for purists)
    This is your Main Guy. Jellyfin finds where your files are stored, and plays them in UIs across differnt systems, platforms, etc.
  • Lidarr
    Lidarr is your Music Guy. Lidarr finds music by using the download clients and indexers (in our case via slskd for both) supplied.
  • Radarr
    Radarr is your Movie Guy. Radarr finds movies (in our case by using Qbittorrent). Indexers for radarr are common indexing sites for Linux ISO's, like 1337x.to and rarbg.
  • Sonarr
    Sonarr is your TV Show guy. Sonarr finds TV shows in the same manor as Radarr.

Tutorial:

  1. Copy the docker-compose.yml
  2. <STORAGE_LOCATION> = replace with your storage location (/mnt/hdd/starrr/), keep trailing slash
    <CONFIG_LOCATION> = replace with your config location (/home/pi/starrr/), keep trailing slash
  3. Make sure storage_location and config_location exist, otherwise you'll run into unexplainable issues only fixed by nuking your docker install. Don't ask me how I know.
  4. Run docker compose up -d
  5. Make sure everything's configured right. Follow the graph. Connect Radarr, Lidarr to Jellyfin, et cetera.
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: 1000:100
network_mode: "host"
volumes:
- <CONFIG_LOCATION>jellyfin/config:/config
- <CONFIG_LOCATION>jellyfin/cache:/cache
- myMedia:/media
restart: 'unless-stopped'
extra_hosts:
- 'host.docker.internal:host-gateway'
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
hostname: jellyseerr
networks:
- mediarr
user: 1000:1000
environment:
- TZ=Europe/Riga
ports:
- 5055:5055
volumes:
- <CONFIG_LOCATION>jellyseerr:/app/config
restart: unless-stopped
depends_on:
- sonarr
- radarr
prowlarr:
image: linuxserver/prowlarr:latest
container_name: prowlarr
hostname: prowlarr
networks:
- mediarr
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Riga
volumes:
- <CONFIG_LOCATION>prowlarr/config:/config
depends_on:
- flaresolverr
ports:
- 9696:9696
restart: unless-stopped
flaresolverr:
image: <CONFIG_LOCATION>flaresolverr:latest
container_name: flaresolverr
hostname: flaresolverr
networks:
- mediarr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=Europe/Riga
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
hostname: qbittorrent
networks:
- mediarr
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Riga
- WEBUI_PORT=8081
volumes:
- <CONFIG_LOCATION>qbittorrent:/config
- myDlFolders:/downloads
ports:
- 8081:8081
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
hostname: radarr
networks:
- mediarr
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Riga
volumes:
- <CONFIG_LOCATION>radarr:/config
- myMedia:/media
- myDlFolders:/downloads
ports:
- 7878:7878
restart: unless-stopped
depends_on:
- prowlarr
- qbittorrent
- jellyfin
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
hostname: sonarr
networks:
- mediarr
environment:
- PUID=1000
- PGID=100
- TZ=Africa/Casablanca
volumes:
- <CONFIG_LOCATION>sonarr:/config
- myMedia:/media
- myDlFolders:/downloads
depends_on:
- prowlarr
- qbittorrent
- jellyfin
ports:
- 8989:8989
restart: unless-stopped
slskd:
image: slskd/slskd
networks:
- mediarr
hostname: slskd
container_name: slskd
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Riga
- SLSKD_REMOTE_CONFIGURATION=true
user: "1000:100"
ports:
- "5030:5030"
- "50300:50300"
volumes:
- <CONFIG_LOCATION>slskd:/app
- myMedia:/media
- myDlFolders:/downloads
restart: always
lidarr:
image: ghcr.io/linuxserver-labs/prarr:lidarr-plugins
container_name: lidarr
hostname: lidarr
networks:
- mediarr
environment:
- PUID=1000
- PGID=100
- TZ=America/Chicago
volumes:
- <CONFIG_LOCATION>lidarr:/config
- myMedia:/media
- myDlFolders:/downloads
ports:
- 8686:8686
restart: unless-stopped
depends_on:
- prowlarr
- qbittorrent
- jellyfin
volumes:
myMedia:
driver: local
driver_opts:
type: none
o: bind
device: <STORAGE_LOCATION>media
myDlFolders:
driver: local
driver_opts:
type: none
o: bind
device: <STORAGE_LOCATION>downloads
networks:
mediarr:
driver: bridge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment