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.
- 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:
| Format | Per hour | Typical 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 GB | 3+ 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) → Libraries → Create New Library.
- Name: "Audiobooks"
- Media Type: Audiobooks
- Folder:
/audiobooks - Scan automatically on startup: yes
- Watch folder for changes: yes — new files get picked up live
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: Settings → Scan → Force 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:
- Name: "Podcasts"
- Media Type: Podcasts
- Folder:
/podcasts
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:
- Max episodes to keep — keep the latest 10, auto-delete older ones
- Auto-download new episodes — yes, with a schedule (default: every 6 hours)
- Mark old as played — useful when subscribing to a long-running show; doesn't dump 500 unplayed episodes on you
You can also import OPML from existing podcast apps: Settings → Tools → OPML Import. Drop your file, Audiobookshelf imports all subscriptions.
9. Mobile apps and progress sync
Install the official Audiobookshelf app:
- iOS: App Store (free, official)
- Android: Play Store (free, official) or F-Droid
Open the app, tap Connect, enter https://audio.example.com as the server URL, then your username + password.
Killer features in the mobile apps:
- Sleep timer — fall asleep listening, app stops after N minutes or at end-of-chapter
- Variable speed — 0.5× to 3× in fine-grained steps
- Offline download — pin books to listen on a flight without internet
- Chapter navigation — jump by chapter, not by 15-second skips
- Auto-rewind on resume — automatically rewinds 5 seconds when you resume after a pause
- Cross-device sync — start a chapter in your car, finish it in bed
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
| Format | Container | Audio | Notes |
|---|---|---|---|
| MP3 | .mp3 | MP3 | Universal. Best for max compatibility. |
| M4A / M4B | .m4a, .m4b | AAC | Native Audible format with embedded chapters. |
| FLAC | .flac | FLAC | Lossless, larger files. Overkill for speech but supported. |
| OGG / Opus | .ogg, .opus | Vorbis/Opus | Modern open formats. Opus is excellent for speech at 32 kbps. |
| OGM / WMA | various | various | Best 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 Settings → Users → Add User:
- Username + Password
- Type: user (not admin)
- Library access: choose which libraries this user can see (e.g. kids get only the kids' library)
- Allow downloads: yes for trusted users; off for shared-access scenarios
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 — Settings → Backups → 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
| Plan | Library size | Concurrent listeners |
|---|---|---|
| Starter ($7.99, 100 GB) | ~300 books | 5–10 simultaneous |
| Pro ($15.99, 500 GB) | ~1,500 books + 50 podcasts | 20+ simultaneous |
| Premium ($35.99, 2 TB HDD) | 6,000+ books + unlimited podcasts | 50+ 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.