
TL;DR
Table of Contents
- I paid Spotify Premium for podcasts but still saw ads; I built my own podcast server.
- Using Docker Compose I spun up Audio Bookshelf in 9 seconds.
- I added a “podcasts” library, auto-downloaded 409 episodes, and synced progress across devices.
- No ads, no subscription fee, full control over metadata.
- The server runs at 192.168.4.115:11336 on my local network.
Why This Matters
I was frustrated. Every time I switched to Spotify Premium to support artists, the app kept injecting commercials between podcast episodes. The “ad-free” promise seemed empty. Plus, I was juggling multiple podcast apps—Apple Podcasts, Overcast, my phone’s built-in player—without a single place to see what I’d listened to or to schedule new downloads. If you’re in the same boat, a self-hosted solution can cut the noise, stop the subscription drain, and give you a private library that works everywhere.
Core Concepts
A podcast server is a self-hosted service that pulls RSS feeds, downloads episodes, stores them locally, and streams them to any device on your network. Think of it as a personal library for audio, like a tiny, private iTunes that lives in your living room.
- Audio Bookshelf is the software I chose. It’s open-source, written in Node.js, and runs in a Docker container. It can handle podcasts and audiobooks, auto-downloads new episodes, and keeps playback progress synced for every user. Audiobookshelf — Self-hosted audiobook and podcast server (2023)
- Docker Compose lets me spin up that container with a single YAML file. I can version control the file, share it, and deploy it anywhere Docker runs. Docker Compose — Official Documentation (2024)
- The iTunes Search API is the metadata provider I selected. When I add a podcast by name, the server pulls the title, description, cover art, and even episode details from iTunes. iTunes — Search API Documentation (2022)
- The Podcast Guide on the Audio Bookshelf site walks through adding libraries, enabling auto-download, and more. It’s a handy reference when you get stuck. Audiobookshelf — Podcast Guide (2024)
How to Apply It
Below is the exact workflow I used, from preparing my directories to listening on my phone.
1. Prepare Host Folders
Create two empty directories on the machine that will run Docker:
mkdir -p ~/server/Config
mkdir -p ~/server/Metadata
These map into the container to keep settings and media out of the image.
2. Create the docker-compose.yml
version: \"3.9\"
services:
audio-bookshelf:
image: advplyr/audiobookshelf:latest
container_name: audiobookshelf
environment:
- ADMIN_USER=admin
- ADMIN_PASSWORD=changeme
- REGION=GB
volumes:
- ~/server/Config:/config
- ~/server/Metadata:/media
ports:
- \"11336:80\"
restart: unless-stopped
- ADMIN_USER/ADMIN_PASSWORD set the first-time login.
- REGION=GB pulls UK-localized metadata.
- 11336 is the public port I’ll access on my network.
⚠️ Security note: Exposing 11336 on the internet would expose your library to anyone who finds your IP. Keep it on a local network or set up a VPN.
3. Spin it Up
docker compose up -d
It takes roughly 9 seconds to start (the container is tiny). After that you can open http://192.168.4.115:11336 in any browser.
4. First-Time Login
Use the credentials from the compose file. The UI asks for an admin account; I set it to admin / changeme. After logging in, I immediately changed the password.
5. Add a “podcasts” Library
- Click + Library → choose Podcasts → name it “podcasts”.
- Pick an icon from the picker.
- The library will store all downloaded episodes in ~/server/Metadata/podcasts.
6. Add Podcasts
You can search by name or paste an RSS feed. I added Distractible, a popular show, by name:
search → Distractible → add
If you want to add many at once, paste a list of RSS URLs separated by newlines.
7. Enable Auto-Download
In the library settings toggle Auto-download. Now every time a new episode appears, Audio Bookshelf pulls it without manual intervention.
8. Download Existing Episodes
When you first add a podcast, no episodes are downloaded. To grab the history, click Download all episodes. I queued 409 episodes in one go; the UI showed 0% at first, then 100% as the container logs streamed the progress.
9. Monitor Progress
The container logs show the HTTP download progress. In a terminal:
docker logs -f audiobookshelf
You’ll see lines like Downloading Episode 1 of 409 (2.4 MB).
10. Listen Anywhere
- Browser: Open the server URL on any device connected to the same LAN.
- Mobile: Install the Audio Bookshelf app from the Play Store or Apple App Store (beta). Log in with the same admin account or create a new user. The progress syncs automatically.
Pitfalls & Edge Cases
| Parameter | Use Case | Limitation |
|---|---|---|
| Port exposure | Remote access via router | Exposes data; use VPN or reverse proxy |
| Storage | 409 episodes ≈ 1 GB | If you add 10 k episodes, space runs out. Keep an SSD or external drive. |
| Multiple folders | Organize by genre | UI only shows one library at a time; create separate libraries if needed |
| Backups | Protect settings | Manually copy Config/ and Metadata/ every week |
| Metadata provider | iTunes vs. Spotify | Not all podcasts have iTunes data; fallback to RSS fallback |
| Region | UK vs. US | Affects episode titles, release dates, and cover art |
| Sync | Cross-device | Works only when devices are online; offline mode may lose progress |
Security Considerations
- Keep the server on a non-public network. If you must expose it, use a reverse proxy with TLS and basic auth.
- Change the default admin password ASAP.
- Monitor docker logs for unexpected connections.
Storage Management
Use df -h on the host to watch free space. If you hit 90% capacity, purge old shows or move to an external drive.
Integrating with Jellyfin
Audio Bookshelf can be added as an external media source in Jellyfin, but you’ll need to enable the File Share feature and map the Metadata/ folder. This is beyond the scope of the article but worth exploring if you already run Jellyfin for video.
Quick FAQ
Q1: How do I add more podcast folders?
A1: In the UI, click + Library, choose Podcasts, and name each folder. The server will store each in a subdirectory of Metadata/.
Q2: Can I use a different metadata provider?
A2: Audio Bookshelf supports multiple providers; switch in the global settings. iTunes is the default, but you can add the Google Podcasts API or custom RSS metadata.
Q3: Will I need to expose port 11336 to the internet?
A3: No, keep it local. If you must, secure it with a reverse proxy (e.g., Nginx) and HTTPS.
Q4: How do I back up the server?
A4: Periodically copy the Config/ and Metadata/ directories to a safe location or use Docker volume backups.
Q5: Is this a replacement for Spotify for podcasts?
A5: Yes. Audio Bookshelf offers ad-free listening, unlimited storage, and full control. Plus you can stop paying Spotify.
Q6: Can I stream to my phone?
A6: Yes, either via the web UI or the mobile app; progress syncs automatically.
Q7: How do I limit storage usage?
A7: Use the “Auto-download” feature with a daily quota, or delete older episodes manually.
Conclusion
I replaced my Spotify Premium subscription with a self-hosted Audio Bookshelf server. I no longer pay for ads I never use, I control my library, and I can listen from any device in my home. If you’re a podcast enthusiast tired of third-party constraints, give this a try. If you need a simple, one-time solution and don’t care about a local network, a commercial podcast app may suffice. But for true ownership, the steps above will get you a reliable, ad-free podcast server in under 15 minutes.
References
- Audiobookshelf — Self-hosted audiobook and podcast server (2023)
- Docker Compose — Official Documentation (2024)
- iTunes — Search API Documentation (2022)
- Audiobookshelf — Podcast Guide (2024)
- Audiobookshelf — Documentation (2024)
Hero Image Prompt
A minimalist home media server setup in a modern living room. A sleek, small server rack with a glowing screen showing a podcast waveform and a stack of audiobooks. The scene is cozy, with a laptop, headphones, and a coffee mug. The lighting is soft and warm, highlighting the server’s screen and the surrounding books.





