Skip to content

Self-host Audiobookshelf

updated Jul 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

A self-hosted audiobook and podcast server with progress sync across apps — host your own Audible-style library and listen anywhere.

Key facts

CategoryMedia server
LicenseGPL-3.0
StackJavaScript, Node.js
Min RAM512 MB
Official imageyes
Measured idle RAM37 MB
Difficulty
Our recommendation

Pick Audiobookshelf when the library is audiobooks and podcasts rather than video: it is a GPL-3.0 Node.js server with SQLite in `/config`, first-party Android and iOS apps (the README calls both open source and both beta — the iOS beta is currently full), and progress sync between them. One container is the whole install — there is no external database and no Redis — and upstream publishes no RAM requirement, so our 512 MB floor is an estimate. If you want music streaming to Subsonic clients, Navidrome is the better fit; for a video library, Jellyfin or Plex.

Follow the Audiobookshelf deploy guide →

What you need

  • Any VPS with at least 512 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# Audiobookshelf
docker run -d --name audiobookshelf \
  -p 13378:80 \
  -v ./audiobooks:/audiobooks -v ./config:/config -v ./metadata:/metadata \
  ghcr.io/advplyr/audiobookshelf:latest
# open http://SERVER_IP:13378

What you take on

Audiobookshelf is a one-container install, but its own install docs carry a handful of rules that bite when ignored:

non-negotiableThe /config mount holds the SQLite database and the docs say it "must be accessible directly on the same machine", not over the network — keep it on local disk. Each of /config, /metadata, /audiobooks and /podcasts "should be a separate directory that is not contained within another mount point".
non-negotiableIt "requires a websocket connection", so a reverse proxy needs proxy_http_version 1.1 plus the Upgrade/Connection: "upgrade" headers (the nginx example also sets client_max_body_size 10240M for uploads). The GitHub README says a subfolder works only if the path is exactly /audiobookshelf ("this is not changeable"); the Docker Hub page still says subfolders are "not supported yet", so treat the README as the current word.
non-negotiableThere is no default login — you set the root username and password on the first visit. A new authentication system landed in v2.26.0 (release notes point every upgrade at discussion #4460), and as of September 2026 the current release is v2.36.1, which also tightened several API endpoints.
non-negotiableBuilt-in backups (default /metadata/backups) cover the database and the covers stored under metadata/ only — "no media files or covers stored with library items are backed up" — and backups from before 2.3.0 do not restore on 2.3.x. The image ignores PUID/PGID; use Docker's user directive if you need a non-root UID.
non-negotiableThe 512 MB floor is our estimate; upstream publishes no RAM requirement for the server.

An alternative to

Audible

More in Media server

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.