Files
2026-06-09 18:40:21 +02:00

125 lines
5.4 KiB
Markdown

---
title: PodFetch
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, downloads, podcast, rust, web-player, audio]
confidence: medium
contested: false
sources:
- https://selfh.st/apps/?tag=downloads
- https://github.com/SamTV12345/PodFetch
---
# 🎙️ PodFetch
> Gestionnaire de podcasts self-hosted écrit en Rust : téléchargement automatique, lecteur web intégré, avec une UI moderne pensée pour l'écoute en continu.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://podfetch.netlify.app |
| **GitHub** | https://github.com/SamTV12345/PodFetch |
| **License** | GPL-2.0 |
| **Langage** | Rust (backend) + React (frontend) |
| **Étoiles** | 34 ⭐ |
| **Dernière MAJ** | 2025 |
| **Catégorie** | [[cat-downloads]] |
## Description
PodFetch est né comme une **alternative moderne à Podgrab**, un projet de podcast downloader qui stagnait. L'auteur (Samuel Schwanzer) a voulu reconstruire from scratch avec une stack solide : **backend Rust** (rapide, peu gourmand, binaire statique) + **frontend React** (UI réactive), le tout empaqueté en conteneur Docker léger (~80 Mo).
Fonctionnellement, PodFetch fait trois choses : **s'abonner** à des podcasts via leur flux RSS iTunes-compatible, **télécharger** automatiquement les nouveaux épisodes (avec stratégie de rétention configurable : ne garder que les N derniers, ou tout l'historique), et **lire** dans le navigateur via un lecteur web HTML5 avec position de lecture persistée, vitesse variable, et création de playlists manuelles.
Les différenciations clés : **multi-utilisateurs** (chacun ses abonnements et son historique), **chapitres** lus depuis le flux (M4A), **OPML import/export** pour migrer depuis Pocket Casts/AntennaPod, et un **mode « anonymous listening »** si on veut juste chercher et écouter un épisode sans s'abonner. Le projet supporte aussi le **gPodder API** pour synchroniser avec des clients mobiles compatibles.
Pour les amateurs de podcasts francophones, c'est une alternative crédible à [[app-nextcloud]] (qui fait podcast via app tierce) ou à des services comme Podcast Addict (Android) en mode self-hosted.
## Installation
### Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
podfetch:
image: ghcr.io/samtv12345/podfetch:latest
container_name: podfetch
restart: unless-stopped
ports:
- "8077:8080"
environment:
- TZ=Europe/Paris
- PUID=1000
- PGID=1000
- DATABASE_URL=sqlite:///config/podfetch.db
volumes:
- ./config:/config
- /data/podcasts:/downloads
```
### Installation manuelle
```bash
git clone https://github.com/SamTV12345/PodFetch
cd PodFetch
# Backend Rust
cargo build --release
./target/release/podfetch &
# Frontend
cd frontend && npm install && npm run build
# Servir derrière Caddy/Nginx
```
## Configuration
- **Abonnement** : URL du flux RSS ou recherche iTunes directement dans l'UI.
- **Référentiel de podcasts** : ajoute automatiquement les nouveaux épisodes selon un cron interne (par défaut, toutes les heures).
- **Rétention** : choisir entre « garder tout », « N derniers épisodes », ou « effacer après lecture ».
- **Multi-users** : compte admin + comptes invités avec droits distincts (lecture seule, abonnement personnel).
- **OPML** : import/export pour migrer depuis un autre podcatcher.
- **gPodder API** : activable pour synchroniser avec AntennaPod (Android).
- **Notifications** : webhook optionnel (Discord, Telegram) à chaque nouvel épisode.
## Alternatives
### Open Source
- **Podgrab** — ancêtre, plus maintenu, plus de releases.
- **Kasts** (KDE) — client desktop Linux, pas self-hosted serveur.
- **gPodder** — serveur + client, mature, UI austère.
- **Castopod** — plus orienté créateurs de podcasts (statistiques, federation ActivityPub).
- **Pinepods** — multi-users + listen-sync, stack similaire (Rust + React).
- **Audiobookshelf** — gère podcasts aussi, mais orienté livres audio avant tout.
### Propriétaires (ce que PodFetch remplace)
- **Pocket Casts** (premium) — multi-device sync, pas self-hosted.
- **Podcast Addict** (Android) — puissant, mais Android-only et sans serveur perso.
- **Spotify Podcasts** — non-exportable, dépend d'un abonnement.
- **Overcast** (iOS) — UX imbattable, pas de backend self-hosted.
## Sécurité
- **Pas d'auth obligatoire par défaut** : à activer dès qu'on expose l'UI ; le lecteur permet de chercher n'importe quel podcast public.
- **Volumes en lecture seule** pour le frontend, le backend Rust a besoin d'écrire dans `./config` et `./downloads`.
- **RSS feeds** : PodFetch les parse, les malformés peuvent faire planter l'indexeur, garder des logs.
- **Bus factor 1** : un seul contributeur principal (SamTV12345), projet en croissance, à surveiller.
- **GPL-2.0** : plus restrictif que MIT/Apache, vérifiez la compatibilité avec votre stack si vous voulez forker.
## Ressources
- Repository : https://github.com/SamTV12345/PodFetch
- Démo : https://podfetch.netlify.app
- Annonce : https://www.reddit.com/r/selfhosted/comments/126ul2t/
- gPodder API spec : https://gpodder.net/api/
## Pages Liées
- [[cat-downloads]] — catégorie parente
- [[app-audiobookshelf]] — gestion livres audio + podcasts
- [[app-nextcloud]] — peut stocker les MP3 aussi
- [[app-traefik]] — reverse proxy HTTPS
- [[app-authentik]] — SSO multi-users
- [[recettes-docker-compose]] — templates
- [[securisation-home-lab]] — bonnes pratiques