Could somebody share a working Arr stack in docker with me?
from Postmortal_Pop@lemmy.world to selfhosted@lemmy.world on 18 Jun 04:33
https://lemmy.world/post/48310412

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.

#selfhosted

threaded - newest

atek@lemmy.zip on 18 Jun 04:59 next collapse

Dont you want to look at something like CasaOSZimaOS?

It saves you the trouble of reading and setting up docker compose files

Nibodhika@lemmy.world on 18 Jun 05:30 next collapse

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. 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: xkcd.com/2501/

tyler@programming.dev on 18 Jun 07:44 next collapse

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. trash-guides.info

Carl@anarchist.nexus on 18 Jun 13:13 next collapse

My only guess is that they were trying to map their config/downloads/library folders to the same location. And yeah, that probably wouldn’t work.

Postmortal_Pop@lemmy.world on 18 Jun 14:16 collapse

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.

Carl@anarchist.nexus on 18 Jun 16:53 collapse

Ah yeah, that’s because it will use the folder to store extra files as well, like subtitles, metadata, poster art, etc… Just dumping every media file into a single “Movies” library isn’t great, because you’ll have a ton of overlapping files. Separating them into their own folders allows you to store those extra files alongside the media.

Postmortal_Pop@lemmy.world on 18 Jun 14:16 collapse

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.

tyler@programming.dev on 18 Jun 15:58 collapse

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.

Postmortal_Pop@lemmy.world on 18 Jun 13:22 collapse

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.

tyler@programming.dev on 18 Jun 16:08 collapse

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/TV to 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.

Zwuzelmaus@feddit.org on 18 Jun 06:37 next collapse

What a wonderful rant!

rangber@lemmy.zip on 18 Jun 07:08 next collapse

The joy of struggle and learning! You learned 6 hours worth of what doesn’t work.

irmadlad@lemmy.world on 18 Jun 13:42 collapse

This is literally how I learn. Read, Do, Fuck It Up, ad nauseam until I get it right, and then write that shit down.

SavinDWhales@lemmy.world on 18 Jun 09:12 next collapse

Not exactly your use case, but maybe someone will find it useful:

I really like 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.

Postmortal_Pop@lemmy.world on 18 Jun 13:11 collapse

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.

myrmidex@belgae.social on 18 Jun 09:19 next collapse

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.

Postmortal_Pop@lemmy.world on 18 Jun 13:06 next collapse

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.

Lumisal@lemmy.world on 18 Jun 13:58 collapse

Haven’t tried it myself but can you run Nginx or Traefik in it, or would it give issues connecting to other containers?

myrmidex@belgae.social on 18 Jun 15:14 collapse

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.

makeshift0546@lemmy.today on 18 Jun 09:19 next collapse

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.

Postmortal_Pop@lemmy.world on 18 Jun 13:02 collapse

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.

Syndication@lemmy.today on 18 Jun 11:34 next collapse

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

Postmortal_Pop@lemmy.world on 18 Jun 12:59 next collapse

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.

BrianTheeBiscuiteer@lemmy.world on 18 Jun 13:58 next collapse

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.

irmadlad@lemmy.world on 18 Jun 16:19 collapse

We’re rowing the same boat

ITGuyLevi@programming.dev on 18 Jun 12:15 next collapse

Late to the party but congrats on getting them up! Might I also suggest bazarr (github.com/morpheus65535/bazarr) so you don’t have to find subtitles manually.

Postmortal_Pop@lemmy.world on 18 Jun 12:54 collapse

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.

plantsmakemehappy@lemmy.zip on 18 Jun 12:26 next collapse

trash-guides.info/…/Docker/#docker-compose-exampl…

Trash guides are great and highly recommend by the servarr/sonarr team

Postmortal_Pop@lemmy.world on 18 Jun 14:26 collapse

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.

plantsmakemehappy@lemmy.zip on 18 Jun 14:52 collapse

wiki.servarr.com/radarr/tips-and-tricks#creating-…

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.

unbuckled_easily933@lemmy.ml on 18 Jun 14:17 next collapse

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.

Postmortal_Pop@lemmy.world on 18 Jun 14:43 collapse

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?

github.com/qdm12/gluetun-wiki/blob/…/mullvad.md

unbuckled_easily933@lemmy.ml on 18 Jun 15:05 collapse

There’s a guide for switching to Wireguard. Yams also includes a command:

yams check-vpn

that 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.

the_shwa@programming.dev on 18 Jun 14:32 next collapse

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:/d
lka1988@lemmy.dbzer0.com on 18 Jun 15:01 next collapse

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
Decronym@lemmy.decronym.xyz on 18 Jun 15:20 next collapse

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]

Drigo@sopuli.xyz on 18 Jun 15:19 next collapse

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

dawa@programming.dev on 18 Jun 16:21 collapse

Just use Saltbox

docs.saltbox.dev/saltbox/basics/basics/

It’s exactly what you’re trying to achieve but battle tested