If anyone else is having issues setting these up, message me and I will zip the whole build to you and walk you through setup.
UPDATE:
So I’ve made some major progress but still have a persistent issue. Radarr, sonarr, and lidarr are set to rename files, rename folders, and move them to the root directory. Even after importing the media the do not do that. I have both the boxes for renaming ticked, I have hard links turned off, they all have permissions for all the directories involved, and they have the media available in the program. If anyone knows how to fix this I’d love the help. I literally did all of this because I don’t want to manually rename 1600 files into a consistent scheme and Radarr apparently doesn’t want to either.
I used yams.media to do the full install. It was incredibly easy to use for most of the installation and setup. The Mullvad wireguard setup was a pain. The VPN part of yams specifically says to follow the instructions to the letter but the link it gives is a 404. The mullvad.md it was supposed to take me to was just “TLDR” and two code boxes with no explanation. I managed to bungle my way through with some knowledge from past attempts and the yams VPN test says I’m in Switzerland and my client is ready to go.
Yams wouldn’t let me set the directories I needed (it wants one directory for everything and I’m sorting them into different mounted drives) but it was actually remarkably easy to copy the yams config folders into my preferred directory and the yaml file directly into portainer to create a portainer stack running everything I needed. I even learned how to use the env and “advanced env input” in portainer to correct all the variable sections instead of writing all of them myself. All in all, it was exactly what I was wanting to do when I posted the TLDR.
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.
Yams (Yet another media server) starts you off with a full media arr stack, as well as your client of choice, torrent & nzb clients, and walks you through connecting all the pieces.
It also has built in methods for setting up a VPN tunnel for your torrents, which is definitely recommended. After running through the setup, you’ll end up with a compose file, and full docker media server stack. (I think even music arr client is included, but its been a long time since I set this up).
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.
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.
You can use a free account for limited usage.

