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.
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
Isn’t passing arrs traffic through the VPN NOT recommended? What are the advantages of that? I don’t have byparr in my stack but do have flaresolverr. I haven’t had issues (besides Cloudflare changing the backend). Wondering whether I should pass arrs through the tunnel as well
just joining in on the misery. arr-s overpromise and underdeliver, tried for a month and gave up with just jellyfin and qbittorrent web. jellyfin is ok at masking the atrocious file names and directory structure, bless its soul
That’s what I’ll be doing if I can’t make it do the Renames. I just can’t handle seeing all that extra nonsense in the name files.
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.
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.
Just use Saltbox
https://docs.saltbox.dev/saltbox/basics/basics/
It’s exactly what you’re trying to achieve but battle tested
What’s the difference between this and yam?
Haven’t used YAMS
But having read the page, I’d say it’s much more pluggable.
There are dozens of community plugins to install other docker based tools with Saltbox.
Also, it’s a rewrite of an older project and has been in development for longer than YAMS. I’ve been using it for around 8 years or so.
What a wonderful rant!
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.
Glad you solved it yourself, but I’m still struggling to understand what happened, how did you have them all in a single folder if the filename for docker compose has to be one of a few predetermined things? I mean, you could have them all in a single file, which makes some things easier, but then you wouldn’t have been able to move them into individual folders. Would you mind explaining what happened there so that if someone else in the future has the same issue they might find the solution here?
Also, note that even if someone had given you an example of a working docker file you would still have to configure the service. For future reference, this site is great and has working examples of docker compose files for a lot of services, e.g. https://hub.docker.com/r/linuxserver/radarr
Finally, welcome to the club, sorry you had a bad experience the first time, it’s hard for us to know what’s obvious and what isn’t: https://xkcd.com/2501/
Sorry, it was late and I was very frustrated.
Radar, sonarr, and lidarr are each installed via docker into their own directories.
I recently did a complete reformat of my server and organization because the first try was a mess and this try I started organizing from the start. When backing up my media I moved just the video files from my first server to backup so I could delete all the extra jellyfin pics, torrent site ads, and folders of bulk subs. This meant the /movies was just 900GB of video files in a folder.
I mistakenly thought that Radarr would would take all the movies out of there and put them in the new location in their own folders as well as format the movie name and folder names to my specified schemes. Radarr would show the movies in the file list when I pick the directory but when I ran the import it would give me “all movies imported” without importing any of them.
As it turns out, each movie file needs to be in its own folder inside /movies, then Radarr will recognize they’re there and import them.
That’s all I managed to fix.
Ah ok this is the comment that needs to be in the main post. First things first:
You aren’t ‘installing’ radarr, sonarr, etc into any directories. They are containers, essentially entire operating systems located in a hidden folder on your server. You don’t ever touch these things directly, you only use docker commands to interface with them. There’s two ways to do that. Either directly running docker (
docker run linuxserver:radarr -p blah blah blah) or with a docker compose (docker compose up). The docker compose way is the ‘easy’ way to do it (actually the easiest is just using unraid and clicking install, but we’ll ignore that since so many people are telling you a billion ways to do things). Docker compose means you can specify all of your applications in a single file, and how they interact with each other. You will run one command to start all of them at once. And then they will read from whatever folders you configure in the service. This might be a bit confusing because up above you might see other people’s docker compose files and they specify things like this: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'and you would think that they’re configuring the sonarr locations for their tv and downloads, etc. But that is not what is happening. They are simply mapping a local path
/mnt/nas/TVto a path inside of the sonarr operating system/mnt/TV. This means that in Sonarr, in the web interface, you would configure the path/mnt/TV, NOT the path/mnt/nas/TV. You still have to configure EVERYTHING in the services themselves. All that docker is doing is setting up the operating system. Think of it like this, on a regular computer you can map network drives to letters like A, B, C, etc right? Well that’s exactly what you’re doing in docker, mapping ‘network’ (actually your main operating system) folders, to folders in the remote operating system (the one running in docker).In regards to having radarr rename things, you can have it do that, but you have to get the directory structure set up first, and you can run scripts to have nzbget or sabnzbd move things around for you. The experts on discord would be a much better help than most of us here I think, since they are all the devs on the project.
I actually do get all of this, I guess my issue here is not know the venacular to explain it?
I have the docker set up almost identical to that. I have an environment section with my user and group in it. My volumes are /home/user/docker/arr/radarr/config: /config /mnt/media1/1)unsorted: /downloads /mnt/media1/2)sorted: /movies. Inside radarr, add directory, /downloads shows the ~800 mkv files. When I go to import the movies in /download, it tells me there are no movies to import.
I fixed this by looping mkdir to put every file in /mnt/media1/1)unsorted into its own folder. Now Radarr sees all of them and imports them.
This hasn’t fixed literally every other facet of using them, I haven’t even set up sonarr yet. I’m still haven’t figured out gluten at all. Planning to run the yams thing someone else posted so I’ll see if that gets me anywhere.
I’m very confused what it was that they moved into individual folders. And also configuring the naming of movies and shows is done in radarr and sonarr, not in docker compose.
I highly recommend Trash Guides for configuring these services. https://trash-guides.info/
Poor explanation on my part. I had to move each of my movies from /movies/movie.mkv to /movies/folder/movie.mkv before Radarr could import them. I gave up after that so when I get off work today I’ll be able to actually import them and see if it moves and renames them this time.
You shouldn’t be manually moving anything, though sometimes it is necessary. But when you’re first getting started I really just recommend following the TRaSH guides and then redownloading a few things to make sure it works properly. It explains a lot and it’s exactly what the people on the discord will tell you to do for all of this before going any further.
On the current install, absolutely. I had to manually move all my media off of my previous installation and onto external drives so I could fresh install the entire Ubuntu server OS because I wasn’t a fan of the logical volume system. I like being able to pull the whole hdd when sftp is too slow.



