Audiobookshelf - the best self-hosted audiobook server#
If you enjoyed this article, you can support the author by becoming a sponsor on Boosty (link in the “Contacts” section).
Introduction#
Hey, welcome back to Stilicho2011. Today we’re digging into a self-hosted app I really like - Audiobookshelf.
If you’ve got a growing pile of audiobooks and want to listen on any device, keep your progress in sync, and stop relying on someone else’s app to do it - stick around, this one’s worth it.
What is Audiobookshelf?#
Audiobookshelf is a free, fully open-source web app that turns your own server into a full-blown audiobook library.
Project site: audiobookshelf.org
Source code: github.com/advplyr/audiobookshelf
Key features:
- Upload and organize audiobooks
- Listen through a browser and a mobile app
- Sync progress across devices
- Bookmarks and notes
- Full control and privacy
Installing via Docker#
The easiest way to install Audiobookshelf is with Docker. Here’s the minimal docker-compose.yml I used in the video:
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
#ports:
# - 13378:80
volumes:
- /mnt/media:/audiobooks
- /mnt/media:/podcasts
- /home/user/docker/audiobookshelf/config:/config
- /home/user/docker/audiobookshelf/metadata:/metadata
environment:
- TZ=Europe/Moscow
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
proxy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.audiobookshelf.entrypoints=http"
- "traefik.http.routers.audiobookshelf.rule=Host(`audiobookshelf.domain.ru`)"
- "traefik.http.middlewares.audiobookshelf-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.audiobookshelf.middlewares=audiobookshelf-https-redirect"
- "traefik.http.routers.audiobookshelf-secure.entrypoints=https"
- "traefik.http.routers.audiobookshelf-secure.rule=Host(`audiobookshelf.domain.ru`)"
- "traefik.http.routers.audiobookshelf-secure.tls=true"
- "traefik.http.routers.audiobookshelf-secure.service=audiobookshelf"
- "traefik.http.services.audiobookshelf.loadbalancer.server.port=80"
- "traefik.docker.network=proxy"
networks:
proxy:
external: trueStarting the service
docker compose up -dAfter starting - open https://audiobookshelf.domain.ru in your browser
Interface and features#
Once you log in for the first time, you can:
- point it at folders full of audiobooks;
- let it pull in covers and descriptions automatically;
- use the built-in player, which is genuinely pleasant to use;
- keep track of your progress across books;
- leave bookmarks and notes as you go.
Supported formats: .mp3, .m4b (with chapter support), ID3 tags, and embedded covers. There’s a mobile-friendly mode (PWA or plain browser), plus support for multiple users.
Locking it down for remote access#
You’ll want to put Audiobookshelf behind a reverse proxy - Traefik paired with Authelia, Authentik, Keycloak, or Zitadel works well, or even just Nginx with Basic Auth if you want to keep it simple.
Grab a Let’s Encrypt certificate too, so you can listen from anywhere over HTTPS without exposing raw HTTP to the internet.
Pros and cons#
Pros#
- Free and open source.
- Clean, no-nonsense interface.
- Great sync, great mobile support.
- Runs entirely on your own hardware.
Cons#
- No full-text search inside your books.
- Some formats need transcoding first.
- Can’t stream directly out of cloud storage.
It’s not just for audiobooks#
The name is a little misleading, honestly - Audiobookshelf can do a lot more than just serve up .mp3 files:
- Podcasts. Their own library type - subscribe to an RSS feed and Audiobookshelf grabs new episodes on a schedule, no separate podcast app needed.
- E-books and comics. On top of audio, it handles
.epub,.pdf, and comics in.cbz/.cbr- great if you want your whole home library under one roof instead of splitting it across apps. - Metadata lookups. Covers, descriptions, authors, and series get pulled in automatically - Audible for audiobooks, OpenLibrary and Google Books for everything else.
- Per-user permissions. Each account can be scoped to specific libraries, with or without download rights - handy when the whole family shares the same server.
- Sleep timer, playback speed, chapter navigation - the small stuff that actually matters when you’re listening to audiobooks, and it’s all there out of the box.
Mobile access#
Beyond the web UI, there are official open-source apps for Android and iOS, with offline downloads, background playback, and Android Auto/CarPlay support. Progress syncs across every device automatically, so you can start a chapter in the car on CarPlay and pick it right back up in the browser that evening.
Getting started#
- Spin up a container from the
docker-compose.ymlabove (or run it in an LXC/VM on your server, if you’d rather). - Mount your audiobook, podcast, and book folders into the matching volumes.
- Open the web UI, create an admin account, and set up your libraries - audiobooks, podcasts, and books stay separate.
- Let Audiobookshelf scan everything - covers and metadata show up on their own.
- Install the mobile app and log in with the same account to keep progress in sync.
- Put the service behind a reverse proxy with SSL, like we covered above.
Conclusion#
Audiobookshelf is a fantastic self-hosted option for more than just audiobooks - podcasts, e-books, and comics all fit in the same library. It takes a few minutes to stand up in Docker, hands you full control over your media, and cuts any third-party cloud service out of the picture entirely. If you’ve already got a home server running, this is one of the first projects worth throwing at it.




