I followed trash guides to set everything up blindly and my set up is working well. But, I feel like having jellyfin in the same docker compose as my “arr” services isn’t good. So, I’d be curious to see if I should split things up. I am even wondering if i should let portainer manage everything.
Arrs combined. Jellyfin alone. VPN with VPN stuff. Everything else alone. Unless it’s multiple of the same app.
i had arr in one stack and media in another.
Now in my kubernetes cluster everything is separated, but arr + torrent is in vpn and automatically uses the vpn-sidecar. And media (jellyfin + jellyseer) is separate.Same.
Jellyfin, Audiobookshelf, kavita = Media stack
Arr suite, Vpn, BitTorrent = Pirate stack
Edit:
CodeServer, git, esphome, home assistant = Code Stack
I created them in the same compose but will probably split them up soon. There’s no point in having them in the same file: *arr services and jacket interact with each other, but Jellyfin is its own thing and I often want/need to restart it alone. They’re best as 2 separate stacks imo.
You can interact with a single container if you need to, not just the whole compose group.
docker compose restart jellyfin
works for your example, and “restart” can be swapped for stop or start as needed.Splitting compose files can be a good idea, but it isn’t always necessary.
yes, but I use one alias for all stacks to down, pull, up as a daemon, and watch its logs.
So I’d rather split the stack than have a special treatment for it.
I use individual files with some like-services grouped together, but you interface with specific services withing a compose file by just specifying the name at the end o the command
There’s no point in having them in the same file
Convenience is the reason for a lot of people
if these are the only services one is self hosting, I can see that.
But I have around a dozen stacks atm and I never came across a situation that I wanted to trigger an *arr stack restart with Jellyfin’s. They’re pretty much unrelated and independent services from an operational view.
You can issue commands to singular services or group them under an alies if needed.
But I have around a dozen stacks atm and I never came across a situation that I wanted to trigger an *arr stack restart with Jellyfin’s. They’re pretty much unrelated and independent services from an operational view.
I’m more talking about pull, up -d. It’s convenient having it all behind a single command, unless there’s a special need to have them separated
I have all of mine in their respective directories and have a master script that I run to bring them all up or take them down. Easier to exclude services from start up if I end up not needing them or something.
I liked having them all in the same file - easier to keep everything in sync. I also had “dependency” links to keep things starting in order.
Yes splitting them up is much better.
The only reason you should have secondary services there is if main service is using them exclusively.
Having a single compose file for multiple unrelated services sounds like a nightmare to stop, start and debug if one of your containers is acting weird.
Say for example you have something that needs a mysql server and you have no other use for it beyond that container, then it should go in there with the main seevice.
But then you eventually add another service which also needs a mysql backend. Do you add another mysql instance for that specific service? Or you could separate your existing one into its own compose file and just connect the two separate apps to the single instance.
Here’s the way I have mine setup. https://github.com/DanTheMinotaur/HomeHost/tree/main/apps
I use an ansible job to deploy and run them.
Having a single compose file for multiple unrelated services sounds like a nightmare to stop, start and debug if one of your containers is acting weird.
You can do “docker compose (servive) start/stop/restart” and so on
I group them by network.
Single hand-crafted artisan organic GMO-free compose file for services that egress through regional VPNs and are exposed internally through Tailscale; *arr, transmisson, piped, etc.
Plex, iSponsorBlock, ArchiveBox have their own compose files since I keep them close to upstream. This way when the inevitable breaks they’re easier to troubleshoot.
ive got 6 containers running from a single file no problem, some with weirdly attached volumes, some with ports some host-networked.
i actually added portainer After i had everything running. it was almost too easy.
just to add; im no expert, but i dont see any benefit to having their configs defined in separate files other than maybe portability.
Yup. Same way I do it.
Why separate it? It’s part of the same stack. Radar downloads, Jellyfin plays.
A mix - my *arrs, Plex, etc run in my “media” stack’s compose, but I have a handful of other stacks (“managing”, “monitoring”, “misc”, “games”, etc) for containers that aren’t related.
This also helps keep networks separate so the containers are only talking to the ones I want them to
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
Fewer Letters More Letters Git Popular version control system, primarily for code Plex Brand of media server package VPN Virtual Private Network
3 acronyms in this thread; the most compressed thread commented on today has 13 acronyms.
[Thread #322 for this sub, first seen 1st Dec 2023, 17:35] [FAQ] [Full list] [Contact] [Source code]
I used to try to run arr stack together, but separately from jellyfin and transmission because I use them not only with arr things
But now I’m using nixos, and having the same dilemma with .nix files
Same. Never felt the need to do them separately.
@AbsurdityAccelerator All one file. Makes reverse proxy easy and most don’t need any open ports. Probably somewhere around 40. Oh two in their separate files cause I compile them from source.
I run multiple compose files with internal networks. No exposed ports.
So your name resolving them over multiple networks. Seems like a headache. By exposed ports I mean the host only has the reverse proxy with a port mapping. All other conteiners have no port mapping.
You can just refer to them by the name you give it in the services block, it’s actually really simple. No port mappings at all.
https://nginxproxymanager.com/advanced-config/#best-practice-use-a-docker-network