Initial vault setup
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user