← Self-Hosting · Media · Replaces: Audible's app library, Spotify/Apple podcasts
What You'll Build
Audiobookshelf is a media server built for spoken word: it remembers your exact position in every book across devices, handles chapters, downloads new podcast episodes automatically, and has offline-capable phone apps.
Port: 13378 · Time: 20 minutes · Difficulty: Easy
What You Need
- Your home server from Foundations 1 (Docker installed,
~/stacksfolder). - Nginx Proxy Manager with your
*.home.example.comcertificate (recommended). - Audiobooks you own as files (MP3/M4B) — e.g. from DRM-free stores, libro.fm, or CDs you've ripped.
Step 1: Organise the Files
/mnt/data/audiobooks/
└── Andy Weir/ ← author
└── Project Hail Mary/ ← book title
└── Project Hail Mary.m4b ← one file, or many MP3 chapters
Step 2: Start Audiobookshelf
mkdir -p ~/stacks/audiobookshelf && cd ~/stacks/audiobookshelf
sudo mkdir -p /mnt/data/audiobooks /mnt/data/podcasts
nano compose.yaml
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
restart: unless-stopped
ports:
- "13378:80"
environment:
TZ: "America/New_York"
volumes:
- /mnt/data/audiobooks:/audiobooks # your books
- /mnt/data/podcasts:/podcasts # downloaded podcast episodes
- ./config:/config # users, progress, settings
- ./metadata:/metadata # covers and cache
docker compose up -d
Step 3: First Run and Libraries
- Open
http://192.168.1.50:13378and set the root (admin) password. - Settings → Libraries → Add library: name "Audiobooks", type Books, folder
/audiobooks. - Add another: "Podcasts", type Podcasts, folder
/podcasts. - Settings → Users: add a user for each listener — everyone keeps their own progress.
Step 4: Podcasts on Autopilot
- Open the Podcasts library → Search → find a show → Add.
- On the podcast, turn on Schedule automatic episode downloads (e.g. every hour) and set a maximum number of episodes to keep.
- Moving from another app? Export an OPML file from it and use Import OPML.
Step 5: Phone Apps
Install the Audiobookshelf app (Android, and iOS), or third-party iOS players such as ShelfPlayer. Server address: https://books.home.example.com. Download books for offline listening before a trip; progress syncs back when you reconnect.
Add It to Your Proxy, Dashboard, and Backups
- Nginx Proxy Manager: new proxy host
books.home.example.com→ schemehttp,192.168.1.50, port13378, Websockets on, your wildcard certificate, Force SSL. - Homepage: add a tile in
services.yaml(how). - Uptime Kuma: add an HTTP monitor for the new address (how).
- Backups:
~/stacks/audiobookshelfis already covered by the restic script.
Troubleshooting
- Books appear as one per file — each book needs its own folder (Step 1).
- Wrong cover or details — open the book → Match → pick the right result.
- Podcast episodes don't download — check the podcasts folder is writable by the container.