I am almost done building my first self hosted streambox through Docker. That’s a total of 16 instances, each fulfilling 1 specific role.
As I’m new to the *arr world, could you please help me understand why it is standard to deploy multiple *arr services for each media type (ex: readarr1 for books + readarr2 for audiobooks) instead of using 1 that does multiple media types?
Thank you.
That’s because of the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
*arr apps don’t do one thing.
- They cook their own authentication system.
- They manage trackers, indexers, etc.
- They download files automatically.
- They track upcoming releases.
- They rename files automatically.
*arr apps don’t do one thing well.
- They require extensive configuration due to insensible defaults.
- They require manual intervention from time to time even with a good configuration.
- They can’t even fulfill their purpose. Bazarr shits the bed with anime.
*arr apps don’t handle text streams.
But I think the Unix philosophy is flawed anyways. It’s like the metaverse: When a metaverse succeeds, they attribute that success to the metaverse as a concept. When a metaverse fails, they attribute the failure to that metaverse, not the metaverse as a concept. Now substitute metaverse with unix utility and the metaverse as a concept with the unix philosophy.
You’re taking it too literally, and missing much of the nuance between philosophy of design and actual implementation details.
The movies app manages movies. That’s its one thing. No need to overcomplicate it. Unix ‘find’ for instance, finds files. That’s its one thing. ‘find’ also lets you filter the results, but that doesn’t change its purpose of finding files.
The fact that *arr apps don’t do things, or are bad at things, has nothing to do with the Unix philosophy. Were these apps combined into a monolith, the same issues would need to be addressed.
There is no right or wrong in a design philosophy. It’s all trade offs. I don’t know anyone who says Unix (or the metaverse) is successful because of a design philosophy. What matters is what you deliver.
There is literally not one singular(!) arr that does what you’re claiming, at least that I’m aware of. The indexing is done by a different thing than the tracking and the downloading.
That’s why you end up with 16 of them like OP after all…
Yeah, sonarr and radarr support some indexers but I ended up just setting up Jackett. They both use those indexers to search, but in different ways. They also don’t do the file downloading, your separate download client does that. They do both track future releases and rename files, but the way that works conceptually for movies and TV shows is pretty different since Movies are singular pieces of media while shows are broken up into seasons and episodes. They work with different data structures and so have to parse and present in different ways.
The simpler services are, the less likely to break down. Google SRE guidance
Monopoly bad
People have tried and failed to make the “one arr to rule them all” but the current stack is pretty lightweight, stable and mature so it is better to just install them all in containers then have some kind of frontend and request system in front of them for users and admins.
I use Organizr as a frontend (keeps them all together in one interface and optionally handles SSO across all of them) then I have Overseerr for users to add media without having to give them access to the arrs directly.