Where Does PodFetch Store Data?
PodFetch keeps its database in /app/db and episodes in /app/podcasts. Env vars configure; volumes preserve.
Last updated
PodFetch splits into two volumes. The /app/db volume holds podcast.db (SQLite by default, Postgres optional) with subscriptions, progress, and users. The /app/podcasts volume holds downloaded episode audio. Configuration arrives as environment variables (polling interval, server URL, database URL), so no config file enters the backup.
Ownership bites new installs: the container runs as 1000:1000, and root-created volumes come back unwritable. Chown host folders before first start. UID/GID, polling, and server URL travel in compose env, which belongs in version control next to the volume backups.
Where PodFetch stores this, by platform
/app/db (Docker volume)
podcast.db with subscriptions, progress, users. SQLite default; Postgres via DATABASE_URL. Mount persistently with 1000:1000 ownership. Env configures; this volume preserves.
/app/podcasts (Docker volume)
Downloaded episode audio. Bind to bulk storage (even a separate HDD) while the db stays on fast disk. GPodder and Audiobookshelf integrations read from this same tree.
Frequently asked questions
how do i back up podfetch
Copy the /app/db volume (podcast.db) and /app/podcasts with the container stopped, plus your env (DATABASE_URL, POLLING_INTERVAL). Restore both volumes to the same container paths. Postgres users dump that database instead.
can podcasts live on a different drive than the database
Bind-mount the drive at /app/podcasts and keep the db volume where it is. PODFETCH_FOLDER only matters when you want a different in-container path; the mount target is what actually separates SSD metadata from HDD media.
Notice an outdated path? Let us know.