Create private podcast feeds from your own MP3s with zero fuss.
1.8K
Create private podcast feeds from your own MP3s with minimal setup. Drop MP3s into a folder, add a simple YAML file, and Podcastify builds an iTunes-compatible RSS feed. One container serves your RSS and media (Caddy + Python).
./podcasts/*.yaml for configs, ./public/<name>/ for media and images.episodes: list.ffprobe (falls back gracefully).linux/amd64 and linux/arm64.# choose host port and base URL
export HOST_PORT=1234
export PUBLIC_BASE_URL="http://localhost:${HOST_PORT}"
docker run --rm
-e PORT=8080
-e PUBLIC_BASE_URL="${PUBLIC_BASE_URL}"
-p ${HOST_PORT}:8080
-v "$(pwd)/public:/app/public"
-v "$(pwd)/podcasts:/app/podcasts"
fnayou/podcastify:v1.0.0
services:
podcastify:
image: fnayou/podcastify:v1.0.0
ports:
- "${HOST_PORT:-8080}:${PORT:-8080}"
environment:
- PORT=${PORT:-8080}
- PUBLIC_BASE_URL=${PUBLIC_BASE_URL:-http://localhost:${HOST_PORT:-8080}}
- PODCASTS_ROOT=/app/podcasts
- PUBLIC_ROOT=/app/public
- RUN_ON_START=${RUN_ON_START:-true}
- PUBLISH_XML=${PUBLISH_XML:-true}
volumes:
- ./public:/app/public
- ./podcasts:/app/podcasts
restart: unless-stopped
Create a .env file to set HOST_PORT and PUBLIC_BASE_URL for your environment.
For production behind a reverse proxy at https://podcasts.domain.tld, set PUBLIC_BASE_URL=https://podcasts.domain.tld and forward to the container’s ${PORT} (default 8080).
./podcasts as name-podcast.yaml (e.g., myshow-podcast.yaml)../public/<name>/ (MP3s and optional images)../public/<name>.xml.PUBLIC_BASE_URL – required for correct links in the RSS (e.g., http://localhost:1234 or https://podcasts.domain.tld)PORT – container listen port (Caddy), default 8080HOST_PORT – host port you publish in compose (HOST_PORT:PORT mapping)Advanced:
PODCASTS_ROOT – in-container path for podcast YAMLs (default /app/podcasts)PUBLIC_ROOT – in-container path for public files (default /app/public)RUN_ON_START – run the generator at container start (true/false, default true)PUBLISH_XML – write XML feeds to disk (true/false, default true)v1.0.0 – current stable releasevX.Y.Z semantic versioning.For deterministic deployments, pin to a version tag (e.g., v1.0.0).
linux/amd64 and linux/arm64 from an Alpine base.Content type
Image
Digest
sha256:eca43b573…
Size
90.3 MB
Last updated
4 months ago
docker pull fnayou/podcastify