Castopod vs AzuraCast: Podcast Hosting or Web Radio?
Quick Verdict
Castopod and AzuraCast solve different problems. Castopod is a podcast hosting platform — upload episodes, generate RSS feeds, distribute to Apple Podcasts and Spotify. AzuraCast is an internet radio station — live DJ streaming, auto-DJ playlists, and real-time listeners.
Pick Castopod if you produce a podcast and want to own your hosting. Pick AzuraCast if you want to run an internet radio station with live or automated music streaming.
What Each Tool Does
These platforms share a category (self-hosted audio) but almost no overlap in functionality.
Castopod replaces Buzzsprout, Podbean, and Spotify for Podcasters. You upload pre-recorded episodes, add show notes and chapters, and Castopod generates an RSS feed that Apple Podcasts, Spotify, and other podcast apps consume. It also federates via ActivityPub — your podcast has a Fediverse presence that followers can interact with from Mastodon.
AzuraCast replaces Live365 and traditional radio broadcast infrastructure. It runs Icecast or SHOUTcast streaming servers, manages playlists, lets DJs connect and broadcast live, and provides listener analytics with GeoIP data. Think “run your own radio station” rather than “host your podcast.”
| Aspect | Castopod | AzuraCast |
|---|---|---|
| Purpose | Podcast hosting | Internet radio |
| Content Type | Pre-recorded episodes | Live streams + auto-DJ playlists |
| Distribution | RSS feed → podcast apps | Icecast/SHOUTcast streams |
| Replaces | Buzzsprout, Podbean, Anchor | Live365, Radionomy |
| GitHub Stars | 826 | 3,722 |
| Language | PHP (CodeIgniter 4) | PHP + Vue.js |
| License | AGPL-3.0 | AGPL-3.0 |
Feature Comparison
| Feature | Castopod | AzuraCast |
|---|---|---|
| Episode upload + RSS | Yes (core feature) | No |
| Live DJ streaming | No | Yes |
| Auto-DJ (automated playlists) | No | Yes |
| Podcasting 2.0 (chapters, transcripts) | Yes | No |
| ActivityPub / Fediverse | Yes | No |
| Embeddable player | Yes | Yes |
| Listener analytics | Yes (privacy-first) | Yes (with GeoIP) |
| Multi-show support | Yes | Yes (multiple stations) |
| SFTP media upload | No | Yes (port 2022) |
| Stream relays | No | Yes |
| Remote DJ access | No | Yes |
Docker Setup
Castopod
Castopod has a lightweight, straightforward setup:
services:
castopod:
image: castopod/castopod:1.15.5
ports:
- "8080:8080"
environment:
CP_BASEURL: "https://podcast.example.com"
CP_MEDIA_BASEURL: "https://podcast.example.com"
CP_ADMIN_GATEWAY: "cp-admin"
CP_AUTH_GATEWAY: "cp-auth"
CP_DATABASE_HOSTNAME: db
CP_DATABASE_NAME: castopod
CP_DATABASE_USERNAME: castopod
CP_DATABASE_PASSWORD: castopod-secret
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
volumes:
- castopod-media:/var/www/castopod/public/media
depends_on:
- db
- redis
restart: unless-stopped
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: root-secret
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: castopod-secret
volumes:
- castopod-db:/var/lib/mysql
restart: unless-stopped
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
Setup takes 15-30 minutes including the web-based installer.
AzuraCast
AzuraCast is more complex — it bundles Icecast, Liquidsoap, and multiple services:
# AzuraCast recommends their install script
mkdir -p /var/azuracast
cd /var/azuracast
curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh
chmod a+x docker.sh
./docker.sh install
The install script pulls a Docker Compose stack with multiple services and exposes 80+ ports for streaming. Manual Docker Compose setup is possible but more involved due to the streaming server configuration.
Setup takes 30-60 minutes, and initial station configuration requires understanding streaming concepts (mount points, bitrates, codecs).
Resource Requirements
| Resource | Castopod | AzuraCast |
|---|---|---|
| Minimum RAM | 256 MB | 512 MB |
| Recommended RAM | 512 MB | 2 GB |
| CPU | Low | Medium (audio transcoding) |
| Disk | Depends on episode files | Depends on music library |
| Network Ports | 80, 443 | 80, 443, 2022, 8000-8496 |
| Docker Complexity | Low (3 containers) | High (multiple services, many ports) |
Castopod is significantly lighter because it’s storing and serving files, not transcoding audio in real-time. AzuraCast runs audio processing (Liquidsoap) continuously for live mixing and auto-DJ.
Analytics
Both platforms include analytics, but with different approaches.
Castopod tracks downloads per episode following the IAB Podcast Measurement standard. Analytics are privacy-first — designed for GDPR/CCPA compliance with no personal data stored. You get episode download counts, listener geography (country-level), and listening apps/platforms.
AzuraCast provides real-time listener counts, listener geography with GeoIP mapping, listening duration, peak concurrent listeners, and historical trends. It’s closer to traditional radio station analytics — focused on who’s listening right now and for how long.
Fediverse Integration
Castopod’s ActivityPub support is a unique differentiator. Your podcast gets a Fediverse account — followers on Mastodon, Pleroma, or any ActivityPub-compatible platform can:
- Follow your podcast
- See new episode announcements in their feed
- Comment on episodes (comments appear in Castopod’s interface)
- Share episodes natively
This is genuine social media distribution without depending on Twitter/X, Facebook, or any centralized platform. For self-hosting enthusiasts (who tend to be Fediverse-friendly), this is a significant advantage.
AzuraCast has no Fediverse integration.
Use Cases
Choose Castopod If…
- You produce a podcast (interviews, discussions, storytelling)
- You want to own your RSS feed and analytics
- You’re currently paying Buzzsprout, Podbean, or Anchor
- Fediverse presence matters to you
- You want Podcasting 2.0 features (chapters, transcripts)
- You run a low-resource server
Choose AzuraCast If…
- You want to run an internet radio station
- You need live DJ streaming capability
- You want automated playlist rotation (auto-DJ)
- You’re running a community radio or music station
- You need real-time listener analytics with GeoIP
- You want listeners to tune in via Icecast/SHOUTcast compatible players
Final Verdict
These are complementary tools, not competitors. A self-hosted audio setup could run both — Castopod for your podcast’s RSS distribution and Fediverse presence, AzuraCast for a companion radio stream playing your back catalog with auto-DJ.
If you only need one: Castopod if you make a podcast, AzuraCast if you want internet radio. The distinction is that clear.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments