Self-Host Audiobookshelf: Ditch Audible and Own Your Audiobooks
Self-host Audiobookshelf with Docker in 10 minutes. Ditch Audible subscriptions, stream audiobooks and podcasts from your own server. Full 2026 setup guide.
import AffiliateLink from ’../../components/AffiliateLink.astro’;
I love audiobooks. I hate paying Audible $15/month to rent books I’ll never own.
Last year, I realized I’d spent over $300 on Audible credits and had zero DRM-free files to show for it. The moment I cancel, those books vanish. That’s when I found Audiobookshelf — and I haven’t looked back.
Audiobookshelf is a self-hosted audiobook and podcast server that talks back to your actual files. Point it at a folder of .mp3 or .m4b files, and it automatically builds a beautiful library with cover art, chapters, progress sync across devices, and mobile apps. Everything stays on your server. No monthly fees. No DRM.
If you’re sitting on a collection of audiobooks or want a podcast player that respects your privacy, this is your tool.
What Makes Audiobookshelf Different?
I tried a few setups before landing here. Plex with audiobook plugins? Clunky. Just throwing files on a NAS? No progress tracking. Paying for apps like BookPlayer? Functional but limited to one device.
Audiobookshelf solves all of that:
- Multi-user: My whole family uses it. Everyone has their own progress, their own library.
- Chapter support: Proper chapter navigation for
.m4bfiles. Podcasts get episode-level chapters too. - Podcasts: You can subscribe to RSS feeds, download episodes, and listen in the same app.
- Mobile apps: Native Android and iOS apps that sync playback position. Start on your phone, finish on your tablet.
- Download for offline: Grab a book before a flight. No internet required.
- Ebook support: It reads EPUB and PDF too, with an integrated reader.
The best part? I’ve got a 3TB library now. Zero monthly costs.
Deploying Audiobookshelf with Docker Compose
Here’s the thing — setup takes about 10 minutes. I’m not exaggerating.
Create a directory and a compose.yml:
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
restart: unless-stopped
ports:
- "13378:80"
volumes:
- ./config:/config
- ./metadata:/metadata
- ./audiobooks:/audiobooks
- ./podcasts:/podcasts
- ./ebooks:/ebooks
Then run it:
mkdir -p audiobookshelf/{config,metadata,audiobooks,podcasts,ebooks}
cd audiobookshelf
docker compose up -d
That’s it. Open http://your-server-ip:13378, create an admin account, and start pointing at your media folders.
The config folder holds user data and settings. metadata stores cached covers and audio meta. The media folders (audiobooks, podcasts, ebooks) are where you drop your files. Audiobookshelf scans them automatically.
My File Structure
Here’s how I organize things — Audiobookshelf prefers this structure:
audiobooks/
├── The Name of the Wind/
│ ├── The Name of the Wind.m4b
├── Dune/
│ ├── Dune.m4b
│ ├── Dune Messiah.m4b
One folder per book, with the audio file inside. Metadata (title, author, cover) is matched automatically if your files have decent ID3 tags.
For podcasts, it’s even simpler — just subscribe to RSS feeds from within the app. Episodes download automatically.
The One Thing That Tripped Me Up
Audiobookshelf matches metadata based on filenames and ID3 tags. If your files have vague names like track01.mp3, you’ll end up with “Unknown Author” and manual cleanup.
Take 10 minutes to tag your files with MusicBrainz Picard before importing. It’ll save you hours later.
I learned this the hard way when I imported 200 files named chapter_001.mp3 through chapter_200.mp3. Don’t be like me.
Exposing It Outside Your Home
You probably want to listen on your phone. Audiobookshelf runs on whatever port you map (I use 13378). If you’re on your home WiFi, just connect directly.
For remote access, you’ve got options:
- Tailscale/ZeroTier: Keep it off the public internet. That’s what I do — Tailscale subnet routing, my phone connects to my server’s Tailscale IP. Zero exposed ports.
- Reverse proxy: Throw it behind Caddy or Nginx Proxy Manager with HTTPS. Add Authelia or Authentik if you want SSO.
- Subpath routing: I’ve seen people host it at
audiobooks.domain.com. Works fine.
I use the Tailscale method. It’s dead simple and I don’t worry about securing another web service.
If you need traditional VPN access to your server, NordVPN works great for securing remote connections — especially if you’re accessing from untrusted networks.
Should You Move From Audible?
Honestly? Not if you love Audible’s huge library and don’t care about ownership. Audible is convenient. Their selection is unmatched.
But if you’re like me — buying books, wanting to keep them forever, and sick of subscriptions — Audiobookshelf is a no-brainer. You buy a DRM-free audiobook (from sources like Libro.fm, Downpour, or even direct from publishers), drop it in the folder, and it’s yours. Permanently.
I’ve been running this for 8 months now. The kids listen to stories on their tablets. I listen on my phone during commutes. My wife catches up on podcasts in the kitchen.
No subscriptions. No DRM. No Google listening in.
That’s the whole point of self-hosting, right?
What’s Next?
Ready to set it up? Here’s your checklist:
- Spin up the Docker container
- Drop in your audio files (properly tagged, please)
- Install the Audiobookshelf mobile app from F-Droid or the app store
- Connect to your server
- Start listening
If you hit any snags, the Audiobookshelf docs are solid. The community on GitHub is active and helpful.
And if you’re looking for DRM-free audiobooks to fill your new library, start with Libro.fm — they support local bookstores and give you actual MP3 files you can self-host.
Stay in the loop 📬
Get self-hosting tutorials, tool reviews, and infrastructure tips delivered to your inbox. No spam, unsubscribe anytime.
Join 0 self-hosters. Free forever.