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.

  • the_shwa@programming.dev
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 months ago

    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'
    
    • Reannlegge@lemmy.ca
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Cool I have different docker-compose.yml files for each service did not even think to put them in one.

      • the_shwa@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        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 -d and have the whole stack startup.

        • GreatRam@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 months ago

          They dont. I have gluetun and qbittorrent in one docker compose and the starrs in a separate docker compose.

  • Syndication@lemmy.today
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 months ago

    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

    • BrianTheeBiscuiteer@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      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.

  • fervent_apathy@anarchist.nexus
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 months ago

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

  • Johnny_Rewind@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    Dude, I feel your pain trying to get that Arr stack working in Docker. Reminds me of trying to track down a rare VHS copy of “Troll 2” - it’s a wild goose chase. I’ve had my fair share of issues with Radarr and Sonarr, but I’ve heard Lidarr can be a real challenge. What’s the specific error you’re getting? Maybe we can troubleshoot it together, take a break, and watch some “Birdemic” to clear our heads.

  • Decronym@lemmy.decronym.xyzB
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    2 months ago

    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 6 acronyms.

    [Thread #18 for this comm, first seen 18th Jun 2026, 15:20] [FAQ] [Full list] [Contact] [Source code]

  • SavinDWhales@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    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.

  • Lka1988@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    2 months ago

    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: true
    
  • LincolnsDogFido@lemmy.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    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.

  • myrmidex@belgae.social
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    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.

  • unbuckled_easily933@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    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.

  • rangber@lemmy.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

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