Home Media Library Stack

Movies, music, audiobooks, and comics under one roof.

4 apps≈1,408 MB RAM combined3 verified 5-minute deploys

Open this stack in the Stack Builder

One server, four specialised libraries: Jellyfin for video, Navidrome for music with Subsonic-compatible mobile apps, Audiobookshelf for audiobooks and podcasts, and Kavita for comics, manga, and ebooks. Splitting media types across purpose-built apps beats forcing everything through one interface — each app's apps, metadata handling, and progress sync are tuned to its format.

The apps and their roles

Last reviewed Oct 11, 2026 · 647 words

This stack is four independent servers sharing one disk, and the setup work is almost entirely about the disk. Lay out one media tree with a top-level folder per format, mount each folder into exactly one app, and Jellyfin, Navidrome, Audiobookshelf and Kavita never step on each other. The directory estimates the combined floor at about 1,408 MB of RAM, with Jellyfin and Kavita at 512 MB each, Audiobookshelf at 256 MB and Navidrome at 128 MB. All four are rated Easy.

Nothing talks to anything, and that is the point

Unlike the *arr stack, these apps have no API wiring between them. Each scans its own folder, builds its own metadata, keeps its own users and serves its own clients. Jellyfin covers movies and TV for TVs and phones. Navidrome speaks the Subsonic API, so any Subsonic-compatible mobile player works against it. Audiobookshelf has native mobile apps with progress sync and handles podcast auto-download. Kavita reads books, comics and manga in the browser and exposes OPDS for e-reader apps.

The shared concerns are storage, the reverse proxy and accounts, in that order.

One tree, one owner per folder

A layout like /srv/media/video, /srv/media/music, /srv/media/audiobooks, /srv/media/books keeps things obvious. The catalogue's deploy notes say to mount media read-only in both Jellyfin and Navidrome, since neither needs to write to the library. Audiobookshelf is the exception: if you use podcast auto-download, it needs write access to its podcast folder. Kavita's library organisation is folder-based, so get the series-per-folder structure right before the first scan rather than after.

AppMountsWrites to media?Directory RAM estimate
Jellyfinvideo folderNo (read-only)512 MB
Navidromemusic folderNo (read-only)128 MB
Audiobookshelfaudiobooks, podcastsPodcasts only256 MB
Kavitabooks and comicsNo512 MB

Why not just put everything in Jellyfin?

Because Jellyfin can technically index music and books but none of its clients are built for them. Audiobook listeners want chapter-aware playback and synced progress across devices, which is Audiobookshelf's core feature. Music listeners want offline caching and playlists in a dedicated player, which the Subsonic client ecosystem around Navidrome provides. Comic readers want page-turning and reading lists. The Jellyfin vs Navidrome comparison shows the music gap in detail. Pointing Jellyfin at the whole /srv/media tree is the common mistake here: it files audiobooks as music albums, lengthens every scan, and gives you a worse experience than the specialised app would.

Deploy order and the proxy

Order barely matters since nothing depends on anything, but I start with the app the household uses most, which is almost always Jellyfin, then Navidrome, then Audiobookshelf and Kavita. Give each its own subdomain behind the reverse proxy. Jellyfin needs websocket pass-through or its dashboard and SyncPlay break. Navidrome can run under a subpath, but then you must set ND_BASEURL; a subdomain avoids that.

Accounts are four separate user databases. For a family of four that is sixteen logins to create, so do it once, write it down, and resist adding SSO until you have checked that each app's mobile clients still work behind it.

Backups

Back up each app's config or data directory, which holds watch history, listening progress, playlists and reading position. The media itself belongs in your normal backup scheme; the 3-2-1 backup guide covers that part.

What I'd do

Create the folder layout first, mount each format into one app only, and run all four. The RAM cost is modest, and splitting by format is what makes every client in the house good rather than merely working. If music is your main reason for being here, read the Navidrome guide next.

Compare apps in this stack

Related stacks