Audible's library is locked to Amazon, drips DRM through every download, and quietly drops books from your collection when publisher deals end. Apple's Podcasts app forgets your position the moment iCloud hiccups. Audiobookshelf is the self-hosted answer: drop your audiobooks and podcasts on a VPS, install the mobile apps, get reliable progress sync, sleep timers, chapter navigation, and zero subscription fees — for libraries of any size.

This guide installs Audiobookshelf via Docker, sets up HTTPS, configures library scanning for the file-naming conventions that make metadata-fetching actually work, walks through podcast subscriptions with auto-download, and covers multi-user setup so each family member gets their own progress and library scope. By the end you'll have what Plex did for video, but built specifically for audio.

🐾 What you'll need:
  • A Linux VPS — Ubuntu 22.04 or Debian 12 (1 GB RAM is enough)
  • Storage sized to your library — see step 1
  • A domain pointed at the VPS
  • Roughly 25 minutes

For Audiobookshelf pre-installed with storage tuned for audio libraries (100 GB to 2 TB), see our Audiobookshelf VPS plans.

1. Library size planning

Audiobooks are storage-efficient. Real numbers:

FormatPer hourTypical novel (~12 hours)1,000-book library
MP3 64 kbps (speech-optimised)~28 MB~340 MB~340 GB
MP3 128 kbps (standard)~57 MB~680 MB~680 GB
M4B 64 kbps (most Audible)~28 MB~340 MB~340 GB
FLAC (lossless)~250 MB~3 GB3+ TB

For typical use: the 500 GB plan holds ~1,500 audiobooks. The 2 TB HDD plan holds ~6,000 audiobooks plus thousands of podcast episodes. Audiobookshelf doesn't transcode by default — files are streamed as-is — so storage maps directly to listenable hours.

2. Prepare the VPS

apt update && apt upgrade -y
apt install -y curl ca-certificates gnupg ufw

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

adduser audio
usermod -aG sudo audio
rsync --archive --chown=audio:audio ~/.ssh /home/audio

3. Install Docker

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
usermod -aG docker audio

4. Deploy Audiobookshelf

The official Audiobookshelf image is light — a single Node.js process, single SQLite database. Switch to the audio user:

su - audio
mkdir -p ~/audiobookshelf/{config,metadata,audiobooks,podcasts}
cd ~/audiobookshelf

cat > compose.yaml <<'EOF'
services:
  audiobookshelf:
    image: ghcr.io/advplyr/audiobookshelf:latest
    container_name: audiobookshelf
    restart: unless-stopped
    ports:
      - "127.0.0.1:13378:80"
    volumes:
      - ./audiobooks:/audiobooks
      - ./podcasts:/podcasts
      - ./config:/config
      - ./metadata:/metadata
    environment:
      AUDIOBOOKSHELF_UID: 1000
      AUDIOBOOKSHELF_GID: 1000
EOF

docker compose up -d
docker compose logs -f

First boot is fast (~10 seconds). When you see Server running, the app is up.

5. Nginx reverse proxy + HTTPS

sudo apt install -y nginx certbot python3-certbot-nginx

sudo tee /etc/nginx/sites-available/audiobookshelf <<'EOF'
server {
    listen 80;
    server_name audio.example.com;

    # Audio streams can be large
    client_max_body_size 1G;
    proxy_read_timeout 300s;

    location / {
        proxy_pass http://127.0.0.1:13378;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/audiobookshelf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d audio.example.com

Visit https://audio.example.com — Audiobookshelf's setup wizard greets you. Create the root user (first user is automatically the admin). Pick a strong password.

6. Set up your first audiobook library

In the web UI: Settings (gear icon, top right) → LibrariesCreate New Library.

Save. Audiobookshelf scans the folder and adds anything it finds. Empty for now — let's load some books.

7. File naming and metadata

Audiobookshelf reads metadata from filenames and folder structure. The recommended layout:

/audiobooks/
└── Author Name/
    ├── Standalone Book Title/
    │   ├── 01 - Chapter One.mp3
    │   ├── 02 - Chapter Two.mp3
    │   └── cover.jpg
    └── Series Name/
        ├── 01 - First Book/
        │   ├── 01 - Chapter One.mp3
        │   └── ...
        └── 02 - Second Book/
            └── ...

Upload via SFTP:

# From your laptop
rsync -av "Audiobooks/" audio@your-vps-ip:/home/audio/audiobookshelf/audiobooks/

Back in the web UI: SettingsScanForce Re-Scan. Audiobookshelf reads each book's metadata, detects chapters, fetches cover art from Google Books / Audnexus / Audible, and surfaces them in the library.

For books with bad metadata, click into the book and use Match — pick the correct entry from search results, Audiobookshelf overwrites metadata. Or edit fields manually under Edit Details.

About M4B files: these are the Audible format. Single-file audiobooks with embedded chapters. Audiobookshelf handles them perfectly. If you have an Audible library, use AAXtoMP3 / OpenAudible to remove DRM legally for personal use, then upload the M4B files.

🐾 Pre-installed with audio-tuned storage

Our Audiobookshelf VPS plans ship with Audiobookshelf pre-installed and storage tiered for audio (NVMe for small libraries, HDD for big ones). Skip the install — focus on listening.

See Audiobookshelf Plans →

8. Podcast subscriptions

Audiobookshelf also handles podcasts elegantly. Create a separate library:

Inside the new library, click + Add Podcast. Paste an RSS feed URL — Audiobookshelf fetches the show metadata and queues episodes for download.

Settings per podcast:

You can also import OPML from existing podcast apps: SettingsToolsOPML Import. Drop your file, Audiobookshelf imports all subscriptions.

9. Mobile apps and progress sync

Install the official Audiobookshelf app:

Open the app, tap Connect, enter https://audio.example.com as the server URL, then your username + password.

Killer features in the mobile apps:

The progress-sync model is server-authoritative — your position is stored on the VPS, every device queries on resume. No "iCloud forgot where I was" frustration.

10. Reference: file formats, codecs, users

Supported file formats

FormatContainerAudioNotes
MP3.mp3MP3Universal. Best for max compatibility.
M4A / M4B.m4a, .m4bAACNative Audible format with embedded chapters.
FLAC.flacFLACLossless, larger files. Overkill for speech but supported.
OGG / Opus.ogg, .opusVorbis/OpusModern open formats. Opus is excellent for speech at 32 kbps.
OGM / WMAvariousvariousBest to convert to MP3 or AAC for full app support.

Multi-user setup

Each family member gets their own account, library scope, and progress. Under SettingsUsersAdd User:

Per-user progress means the kids' bedtime story progress doesn't conflict with the parent's true crime podcast.

Backups

Audiobookshelf has built-in backup — SettingsBackups → set schedule (daily) + retention (14 backups) + path. Backups include the database (users, progress, metadata, podcast subscriptions) but NOT the audio files themselves. Audio files are too big and don't change — back those up separately via rclone to S3 or B2.

API and integrations

Audiobookshelf has a complete REST API. Use cases: custom mobile clients, Home Assistant integrations (announce when a new podcast episode arrives), bulk imports via scripting. Docs at https://audio.example.com/dev.

Per-plan capacity

PlanLibrary sizeConcurrent listeners
Starter ($7.99, 100 GB)~300 books5–10 simultaneous
Pro ($15.99, 500 GB)~1,500 books + 50 podcasts20+ simultaneous
Premium ($35.99, 2 TB HDD)6,000+ books + unlimited podcasts50+ simultaneous

FAQ

Audiobookshelf vs Plex vs Jellyfin for audiobooks?

Audiobookshelf is purpose-built for audio — chapter detection, progress sync, sleep timers, podcast subscriptions all native. Plex's audiobook support requires a plugin (and Plex Pass for full functionality). Jellyfin's audiobook support is basic and lacks the iOS app. If audio is your primary use case, Audiobookshelf wins easily.

Can I import my Audible library?

Yes — for personal use. Audible files (.aax) are DRM-protected, so you need to remove the DRM first using tools like OpenAudible or AAXtoMP3. The resulting M4B files include embedded chapters and cover art, which Audiobookshelf reads perfectly. Once converted, upload via SFTP to /audiobooks/.

How big should each audiobook file be?

For speech, MP3 at 64 kbps is plenty — about 28 MB per hour. Audible-quality M4B is similar. Going higher (192 kbps+) wastes space without audible quality improvement for spoken content. For music-heavy audiobooks (radio dramas, full-cast productions), 128 kbps is the sweet spot.

Does the iOS app work in the background?

Yes — fully. iOS allows audio apps to play indefinitely in the background, which is exactly the use case. Audiobookshelf's app shows on the lock screen with chapter title, supports CarPlay, and remembers position even if you force-quit the app.

Can I share my library with non-family users?

Audiobooks have copyright restrictions. Sharing personal-use audiobooks with non-household members may violate the publisher's terms. Audiobookshelf supports multi-user accounts for legitimate family sharing. For broader sharing, ensure you have appropriate rights for the content.

Will it work on Sonos / smart speakers?

Not directly — Audiobookshelf doesn't have a Sonos integration. Workaround: use the web player on any browser-capable device, or AirPlay/Chromecast from the mobile app. For dedicated Sonos integration, Plex is currently the only option.

🐱
OliveVPS Team

We've run Audiobookshelf for 3 years across a family of 4 — each person with their own progress on bedtime stories and commute podcasts. Total library size: ~280 GB. The 500 GB Pro plan has plenty of room to grow.