Type something to search...
PodFetch

PodFetch

PodFetch

289 20
01 May, 2024
  Rust

What is Podfetch ?

Podfetch is a self-hosted podcast manager. It is a web app that lets you download podcasts and listen to them online. It is written in Rust and uses React for the frontend. It also contains a GPodder integration so you can continue using your current podcast app.

Every time a new commit is pushed to the main branch, a new docker image is built and pushed to docker hub. So it is best to use something like watchtower to automatically update the docker image.


Podfetch Features

  • Add podcasts via Itunes api
  • Check for new episodes.
  • Download episodes.
  • Play episodes.
  • Force refresh download of podcast episodes.
  • Force refresh of podcast episodes.
  • Resume podcasts even if browser is closed.
  • Add websocket support for new podcasts.
  • Add detailed audio player.
  • Star podcasts.
  • Unsubscribe podcasts.
  • Add retrieving podcasts from Podcastindex.org.
  • Basic Auth.
  • Import from OPML file.
  • Telegram Bot api to get alerted when new episodes are downloaded.

Install Podfetch

Docker

Docker-Compose Examples

Docker-Compose
Advantages over Postgres
  • Easier to setup
  • Easier to use

=> No concurrency. So please don’t try to download to podcasts at the same time.

Sqlite

version: '3'
services:
podfetch:
image: samuel19982/podfetch:latest
user: ${UID:-1000}:${GID:-1000}
ports:
- "80:8000"
volumes:
- podfetch-podcasts:/app/podcasts
- podfetch-db:/app/db
environment:
- POLLING_INTERVAL=60
- SERVER_URL=http://<your-ip>:<your-port>
volumes:
podfetch-podcasts:
podfetch-db:

Postgres

Advantages over SQLite
  • Better performance
  • Better concurrency
  • Better stability
  • Better scalability
Docker Compose
version: '3'
services:
podfetch:
image: samuel19982/podfetch:latest
user: ${UID:-1000}:${GID:-1000}
ports:
- "80:8000"
depends_on:
- postgres
volumes:
- ./podcasts:/app/podcasts
environment:
- POLLING_INTERVAL=300
- SERVER_URL=http://localhost:80 # Adjust to your server url
- DATABASE_URL=postgresql://postgres:changeme@postgres/podfetch
- DB_CONNECTIONS=10 # optional
postgres:
image: postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
PGDATA: /data/postgres
POSTGRES_DB: ${POSTGRES_DB:-podfetch}
volumes:
- postgres:/data/postgres
restart: unless-stopped
volumes:
postgres:

Terraform

For terraform have a look at the setup directory. There you will find everything needed to start with your infrastructure as code.


Environment Variables

VariableDescriptionDefault
POLLING_INTERVALInterval in minutes to check for new episodes300
SERVER_URLURL of the server/the URL of the proxyhttp://localhost:8000
DATABASE_URLURL of the databasesqlite://./db/podcast.db

RSS Feed

Podfetch offers an own feed to download podcast episodes. You can add the url <SERVER_URL>/rss to your favorite podcast app like gPodder to download and play episodes.


Podcast Index

It is also possible to retrieve/add podcasts from Podcast Index. To configure it you need to create an account on that website. After creating an account an email is sent to you with the required credentials.

VariableDescriptionDefault
PODINDEX_API_KEYthe api key sent to you via mail%
PODINDEX_API_SECRETthe api secret also found in the mail%
  • % means an empty string is configured as default

After successful setup you should see on the settings page a green checkmark next to the Podindex config section.


GPodder API

Podfetch supports the GPodder API.

The following environment variable must be set to true to enable it:

VariableDescriptionDefault
GPODDER_INTEGRATION_ENABLEDActivates the GPodder integration via your SERVER_URLfalse

You will also need to set up BASIC_AUTH or OIDC_AUTH and create a user.

You can use your new user account to log into podcast apps that supports the GPodder API by using your SERVER_URL and login information.

See wiki/GPodder-API for more info.