↓ Skip to main content
  1. Posts/
  2. Media Servers/

Audiobookshelf Docker Setup - Self-Hosted Audiobook Server

Stilicho2011
Author
Stilicho2011
Writing about homelab, self-hosting, automation and open-source solutions
Table of Contents
Media Servers - This article is part of a series.
Part : This Article

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: true

Starting the service

docker compose up -d

After 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
#

  1. Spin up a container from the docker-compose.yml above (or run it in an LXC/VM on your server, if you’d rather).
  2. Mount your audiobook, podcast, and book folders into the matching volumes.
  3. Open the web UI, create an admin account, and set up your libraries - audiobooks, podcasts, and books stay separate.
  4. Let Audiobookshelf scan everything - covers and metadata show up on their own.
  5. Install the mobile app and log in with the same account to keep progress in sync.
  6. 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.

Media Servers - This article is part of a series.
Part : This Article

Related

Dozzle - A Convenient Real-Time Log Viewer for Docker Containers

··4316 words·21 mins· loading · loading
A step-by-step guide to Dozzle - a lightweight self-hosted tool for viewing Docker container logs in real time. Installing with Docker Compose, the first-run setup wizard, authentication (simple, OIDC, forward-proxy), container auto-updates with rollback, multi-host mode with agents, and docker.sock security tips.