Tl;dr: I understand docker is supposed to help get things running on different systems easily, can someone give me a copy of their working Arr stack?
Frustrated venting I’m past being new to this server thing having run mine for over a year so I guess I can officially say I’m just bad at it. I’ve been working on getting Sonarr, Radarr, and, lidarr running since 4 in the afternoon, discounting dinner that’s 6 hours of constantly failing to get these to work. This is my 5th time trying since I learned about it in April.
I’ve given up on the automatic downloads, I’ve given up on the request system, I’m even done with the torrenting, I’ll just do that on my phone. All I want is something that format my 5TB of media to Title (date) instead of MOVIE_TITLE_ALL_UNDERSCORE, or TB_1000, or movie.videoformat.year.special.deluxe.username.host.visit.my.site.please. I was sold on this idea that self hosting was a relatively easy thing that anyone can get into and while I have a good understanding of how a config.yml is supposed to look and work, and I’ve got a decent understanding of ssh and sftp between two computers, but trying to grt any one of these things to run is soul crushing. I literally work in the foster system and my worst cases do not give me the stress this does. I just want to get it fixed so I can watch Pokemon with my family and offer it to people who will never bother to log on.
Edit: OMFG I moved them back into individual folders and they work now. 6 hours of videos and tutorials and not a single thing saying they absolutely have to be in their own folders or it won’t work. edit unclear, brain stuck in toaster
Edit 2: turns out, Radarr can’t find movies at /movies/movie.mkv and needs /movies/folder/movie.mkv. Now Radarr can import movies but all other problems persist.
This may or may not help, but I went through the exact same sort of struggles that you did when I first started. Setting up all this was my first forray into Linux and learning about permissions and file systems was a hurdle but having conquered that my primary issues were always caused by one of the following:
- file path mapping
- permissions
- port routing in gluetun
- gluetun/mullvad incompatibilities
Now that I actually seem to have a handle on all this…mind you, I’m no expert, but I can walk people through it in plain english. I eventually ended up switching to Proton VPN and use cloudflare tunnels to access my services from outside the network.
Here is my docker-compose.yml file with sensitive info scrubbed, its been working for me for a few years now. It sounds like the problem you are having is not with Docker but something in your configuration once the container is running. Feel free to message me if you have questions.
services: gluetun: container_name: gluetun cap_add: - NET_ADMIN image: qmcgaw/gluetun:v3 devices: - /dev/net/tun:/dev/net/tun environment: - VPN_SERVICE_PROVIDER= - VPN_TYPE= - WIREGUARD_PRIVATE_KEY= - WIREGUARD_ADDRESSES= - SERVER_COUNTRIES= - DNS_ADDRESS= - HTTP_CONTROL_SERVER_ADDRESS= - HTTPPROXY_LISTENING_ADDRESS= - TZ=America/New_York ports: - 3129:3129/tcp # HTTP proxy - 8388:8388/tcp # Shadowsocks - 8388:8388/udp # Shadowsocks - 9047:9047 # Gluten http_control - 9046:9046 # qbittorent webui - 9696:9696 # Prowlarr - 7878:7878 # Radarr - 8989:8989 # Sonarr - 8686:8686 # Lidarr volumes: - /etc/localtime:/etc/localtime:ro restart: 'unless-stopped' qbittorrent: image: lscr.io/linuxserver/qbittorrent:5.1.4 container_name: qbittorrent network_mode: "service:gluetun" environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - WEBUI_PORT=9046 volumes: - /mnt/drive/volumes/qbittorrent/data:/config - /mnt/nas/Downloads:/downloads depends_on: - gluetun prowlarr: container_name: prowlarr network_mode: "service:gluetun" image: ghcr.io/hotio/prowlarr:latest volumes: - /mnt/drive/volumes/prowlarr/config:/config - /etc/localtime:/etc/localtime:ro depends_on: - gluetun restart: 'unless-stopped' byparr: container_name: byparr image: ghcr.io/thephaseless/byparr:latest network_mode: "service:gluetun" init: true depends_on: - gluetun restart: 'unless-stopped' radarr: container_name: radarr network_mode: "service:gluetun" image: ghcr.io/hotio/radarr:latest volumes: - /mnt/drive/volumes/radarr/config:/config - /mnt/movies:/mnt/Movies - /mnt/nas/Downloads:/downloads - /etc/localtime:/etc/localtime:ro depends_on: - gluetun sonarr: container_name: sonarr network_mode: "service:gluetun" image: ghcr.io/hotio/sonarr:latest volumes: - /mnt/drive/volumes/sonarr/config:/config - /mnt/nas/TV:/mnt/TV - /mnt/nas/Downloads:/downloads - /etc/localtime:/etc/localtime:ro depends_on: - gluetun restart: 'unless-stopped' lidarr: container_name: lidarr network_mode: "service:gluetun" image: ghcr.io/hotio/lidarr:pr-plugins volumes: - /mnt/drive/volumes/lidarr/config:/config - /mnt/nas/Music:/mnt/Music - /mnt/nas/Downloads:/downloads - /etc/localtime:/etc/localtime:ro depends_on: - gluetun restart: 'unless-stopped'Cool I have different docker-compose.yml files for each service did not even think to put them in one.
I think they have to be for the gluetun(vpn container) dependency, but I could be mistaken. It does make it easier to
docker compose up -dand have the whole stack startup.They dont. I have gluetun and qbittorrent in one docker compose and the starrs in a separate docker compose.
I use wireguard so I wouldn’t know.
So do I, I’m just using it in gluetun so that I can pass all the traffic from this stack of containers in this yaml file through it and not other traffic. Gluetun is a pretty cool project, it made it easy too setup a connection to mullvad. https://github.com/passteque/gluetun
I’m currently in my research phase, before I begin setting up my are stack. But I found this video, and it seems like it’s just the thing you’re looking for:
Ultimate automated media server 2026
In the description, he has this link to his GitHub for automated setup with all Docker containers needed etc https://github.com/loponai/arrstack
He also has a newer video on the area stack, haven’t watched it myself yet
I am really glad to read stuff like this. Not because I like seeing someone struggle, but rather it makes me feel less alone that I am not the only one getting frustrated with things that seemingly work perfectly for everyone else that I run into every error/obstacle in the book lol. If I post for help in online forums like Lemmy, the replies make me feel so stupid and sometimes the replies are even condescending, which is extremely demotivational at times and makes me not want to ever ask to get it fixed. But eventually I get there and say screw all that and keep on going till it works. I’m happy you posted this and got your problem fixed my friend.
Also extremely relatable with the media server that friends and family refuse to use while paying like $30 a month on stupid subscriptions lmao
We’re rowing the same boat
Considering all of them are supposed to integrate with each other they’re relatively hard to integrate. I find it rather astounding they haven’t figured out service discovery.
I get this feeling hard. You’re comment 3 out of 11 that I woke up to, comment one sent me to yet another guide to read and comment 2 congradulated me for getting it working. That’s on me for not classifying at midnight on a work night that the only thing I fixed was Radarr can now find the movies. Everything else is still broken.
Everyone talks about docker being an easy way to share things around, I’d assume it’d be easier to zip a working installation and send it my way than to find a guide I haven’t read.
Here’s mine. I have separate stacks for media players (Plex, JF) and downloaders (sabnzbd, qbittorrent), so I added their networks to the config. I also chose to mount the volumes directly in the YAML instead of the VM’s
fstab, I found it plays a bit nicer that way. None of this is exposed to the internet. And I need to reconfigure the *seerrs, since Jellyseerr and Overseerr merged into one project…volumes: movies: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/Movies tvshows: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/TV_Shows music: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/Music torrents: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/Torrents prerolls: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/Plex_prerolls books: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/Books downloads: driver_opts: type: nfs o: addr=192.168.1.175,nolock,soft,nfsvers=4 device: :/Downloads services: sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /var/lib/docker/volumes/sonarr_config:/config - tvshows:/TV_Shows - torrents:/Torrents - downloads:/Downloads ports: - 8989:8989 networks: - plex_default - downloaders_default radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /var/lib/docker/volumes/radarr_config:/config - movies:/Movies - torrents:/Torrents - downloads:/Downloads ports: - 7878:7878 networks: - plex_default - downloaders_default lidarr: image: lscr.io/linuxserver/lidarr:latest container_name: lidarr restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /var/lib/docker/volumes/lidarr_config:/config - music:/Music - torrents:/Torrents - downloads:/Downloads ports: - 8686:8686 networks: - plex_default - downloaders_default bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /var/lib/docker/volumes/bazarr_config:/config - movies:/Movies - tvshows:/TV_Shows ports: - 6767:6767 restart: unless-stopped networks: - downloaders_default - plex_default overseerr: image: lscr.io/linuxserver/overseerr:latest container_name: overseerr restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /var/lib/docker/volumes/overseerr_config:/config ports: - 5055:5055 networks: - plex_default - downloaders_default jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr environment: - LOG_LEVEL=debug - TZ=Etc/UTC - PORT=5055 ports: - 5056:5055 volumes: - /var/lib/docker/volumes/jellyseerr_config:/app/config healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 restart: unless-stopped prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /var/lib/docker/volumes/prowlarr_config:/config ports: - 9696:9696 networks: - plex_default - downloaders_default networks: plex_default: external: true downloaders_default: external: trueJust use Saltbox
https://docs.saltbox.dev/saltbox/basics/basics/
It’s exactly what you’re trying to achieve but battle tested
https://trash-guides.info/File-and-Folder-Structure/How-to-set-up/Docker/#docker-compose-example
Trash guides are great and highly recommend by the servarr/sonarr team
That’s actually what I followed the previous try. It got me further than anything else but it fell apart because Mullvad doesn’t do OpenVPN and I couldn’t figure out how to get wireguard to work. Even then, on trying to rename and organize all my files, it just corrected them in Sonarr, Radarr, and jellyfin which broke all of my manually curated movies and it left all the files with the dumb mismatch they already have.
https://wiki.servarr.com/radarr/tips-and-tricks#creating-a-folder-for-each-movie
I recommend being really specific on what issues you’re facing when you want help. Your post was pretty generic and so you’re getting a lot of different answers.
If discord is your thing, the servarr/sonarr/trash folks each have their own discord where you can get help.
Yams.media is a script with an easy to follow guide that will hold your hand through the entire setup. All you need to do afterwards is import your existing media using radarr/sonarr.
Ok, so let me get this straight before I jump in. This is basically a prepackaged install wizard for docker, Arr stuff, torrent client, VPN, and jellyfin? I don’t need to install a different OS because it runs on Ubuntu server.
The one hang up I found is the same thing I didn’t understand using the trash guide, migrating gluten to wireguard for Mullvad. Could you or anyone that’s reading this parse this info for me and tell me how to double check if it worked?
https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/mullvad.md
There’s a guide for switching to Wireguard. Yams also includes a command:
yams check-vpnthat tells you if the VPN is working.
Not sure if that directly answers your question but there are a lot of step-by-step guides on the site and the author has also answered a lot of user questions on the message board.
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
Fewer Letters More Letters Plex Brand of media server package VPN Virtual Private Network nginx Popular HTTP server
3 acronyms in this thread; the most compressed thread commented on today has 8 acronyms.
[Thread #18 for this comm, first seen 18th Jun 2026, 15:20] [FAQ] [Full list] [Contact] [Source code]
The joy of struggle and learning! You learned 6 hours worth of what doesn’t work.
This is literally how I learn. Read, Do, Fuck It Up, ad nauseam until I get it right, and then write that shit down.
Late to the party but congrats on getting them up! Might I also suggest bazarr (https://github.com/morpheus65535/bazarr) so you don’t have to find subtitles manually.
I have that one too, it’s the only one that never gives me trouble. The rest are still broken as shit but atleast Radarr can find the movies now.
Not exactly your use case, but maybe someone will find it useful:
I really like https://compose.ajnart.dev/ - the creator of homarr (a dashboard with a lot of integrations) build a tool for creating docker compose files.
You can configure what services you’d like to run or use a predefined template (e.g. “the dad” with Jellyfin, Nextcloud, Pihole, Homarr and Home Assistant).
You’d still have to understand what you are doing, of course.
I’m down for something that makes the compose for me. I already get that part but it would be nice to not have to copy, paste, and fill my template each time.
Since it’s mentioned and this is a general suggestion, if you’re looking at Home Assistant, understand that the Docker version and the OS version are different and all of the videos don’t warn you about that. If you use the Docker version you have to manually install all the plugins where the OS has an app store. I didn’t know and all I wanted it for was chore-ops.
What a wonderful rant!
You should just install open claw + claude to manage and setup your services if you just want it to work and see a working example on your device. Its a simple task for AI and you can review and learn from configuration that applies to only your system.
Baring the obvious complaints about AI, my server is a dell tower from 2014, I do not have the resources to spare or the luxury of offloading my brainpower.
absolutely do not do that. I can almost guarantee that any sort of AI will try to open a port that shouldn’t be open or in general expose you to a massive security vulnerability.
I made the mistake of trying to use deepseek to learn how to make a mod for vintage story. Suffice to say I’ll never make that mistake again.
You can use a free account for limited usage.
Perhaps DockGE would help with your flow, it’s a docker web UI for managing services (in a basic manner, think a basic Portainer). It creates the separate folders for you, all you need to do is give the stack a name and plop the compose file in there. I use it to manage containers on all my VMs, mainly to have an easy overview in the browser but also to avoid issues like yours.
I’m actually running portainer at the moment and it’s been an absolute lifesaver in this nonsense. I’m not great in terminal and it helps me get the syntax right. Unfortunately, it doesn’t seem to do much to whip the arrs into working.
Haven’t tried it myself but can you run Nginx or Traefik in it, or would it give issues connecting to other containers?
As much trouble as any regular docker setup I reckon. It’s not doing anything special, just a nice front-end showing the logs, the compose and some details about the different services.
And many of my compose files in there make use of nginx, but the services nginx reference are all inside the same compose.




