125 lines
4.9 KiB
Markdown
125 lines
4.9 KiB
Markdown
---
|
|
title: PinePods
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, media-streaming, podcasts, multi-user, rust]
|
|
confidence: high
|
|
contested: false
|
|
sources:
|
|
- https://selfh.st/apps/?tag=Media+Streaming
|
|
- https://github.com/madeofpendletonwool/PinePods
|
|
---
|
|
|
|
# 🎬 PinePods
|
|
|
|
> Serveur de podcasts multi-utilisateurs avec synchronisation entre clients, gestion fine des épisodes écoutés et découverte par thème.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Attribut | Valeur |
|
|
|----------|--------|
|
|
| **Nom** | PinePods |
|
|
| **Slug** | app-pinepods |
|
|
| **Description** | Plateforme de podcasts self-hosted, multi-utilisateurs, compatible clients iOS/Android/web |
|
|
| **Site officiel** | https://pinepods.online/ |
|
|
| **Repository** | https://github.com/madeofpendletonwool/PinePods |
|
|
| **Stars** | 878 ⭐ |
|
|
| **Licence** | MIT |
|
|
| **Langage principal** | Rust (backend) + Svelte (frontend) |
|
|
| **Catégorie** | Media Streaming |
|
|
| **Tags** | [catalogue, media-streaming, podcasts, multi-user, rust] |
|
|
|
|
## 📝 Description
|
|
|
|
PinePods est un gestionnaire de podcasts moderne pensé pour un usage familial ou de petite équipe. Contrairement à des solutions mono-utilisateur comme [[app-casteros]] ou [[app-antennapod]] (qui est Android-only), PinePods gère nativement plusieurs comptes, conserve l'historique d'écoute par utilisateur et synchronise la position de lecture entre tous les clients connectés (web, iOS, Android, CLI).
|
|
|
|
L'indexation est centralisée : les métadonnées, la position d'écoute, les épisodes téléchargés et les abonnements sont stockés dans une base PostgreSQL. Le backend en Rust assure des temps de réponse rapides et une empreinte mémoire modeste, ce qui rend l'application parfaitement adaptée à un [[self-hosting]] sur Raspberry Pi 4/5 ou un mini-PC.
|
|
|
|
Points forts : interface agréable, recherche via iTunes et gpodder.net, génération RSS, marque-pages sur épisode, support des podcasts avec chapitres. Limites : la gestion de très grosses bibliothèques (> 5 000 abonnements) peut nécessiter quelques ajustements d'index PostgreSQL.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: "3.8"
|
|
|
|
services:
|
|
pinepods-db:
|
|
image: postgres:16-alpine
|
|
container_name: pinepods-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: pinepods
|
|
POSTGRES_PASSWORD: changeme
|
|
POSTGRES_DB: pinepods
|
|
volumes:
|
|
- ./db:/var/lib/postgresql/data
|
|
|
|
pinepods-api:
|
|
image: madeofpendletonwool/pinepods-api:latest
|
|
container_name: pinepods-api
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- pinepods-db
|
|
environment:
|
|
DATABASE_URL: postgres://pinepods:changeme@pinepods-db:5432/pinepods
|
|
JWT_SECRET: changez-moi-en-production
|
|
ports:
|
|
- "8013:8013"
|
|
|
|
pinepods-web:
|
|
image: madeofpendletonwool/pinepods-web:latest
|
|
container_name: pinepods-web
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- pinepods-api
|
|
ports:
|
|
- "8014:8014"
|
|
```
|
|
|
|
### Installation manuelle
|
|
|
|
Build Rust depuis les sources : `cargo build --release`, puis lancer l'API et servir le frontend Svelte. Réservé aux utilisateurs avancés ; la voie Docker est largement privilégiée.
|
|
|
|
## ⚙️ Configuration
|
|
|
|
- **Compte admin** : créé au premier lancement via l'interface web (`/setup`).
|
|
- **Reverse proxy** : configurer [[app-caddy]] ou [[app-traefik]] pour exposer en HTTPS sur un sous-domaine dédié.
|
|
- **Sauvegarde** : ne pas oublier de sauvegarder le volume `db/` (PostgreSQL) en plus des fichiers média.
|
|
- **Clients mobiles** : utiliser les apps PinePods iOS / Android officielles (F-Droid et Play Store).
|
|
- **Synchronisation gPodder** : activer le module correspondant pour conserver la compatibilité avec d'autres clients (AntennaPod).
|
|
|
|
## 🔗 Alternatives
|
|
|
|
- **Funkwhale** — Serveur audio/podcasts ActivityPub, plus orienté musique.
|
|
- **Castopod** — Plateforme podcasting avec ActivityPub, focalisée sur la publication.
|
|
- **Gpodder** — Serveur gPodder standalone, plus minimaliste.
|
|
- **AntennaPod** — Client Android uniquement, pas de serveur.
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- Changer `JWT_SECRET` et le mot de passe PostgreSQL avant toute exposition réseau.
|
|
- Activer HTTPS (obligatoire pour la géolocalisation des clients mobiles récents).
|
|
- Limiter l'inscription publique (`allow_registration: false` dans la conf).
|
|
- Mettre à jour régulièrement ; le projet est en développement actif.
|
|
|
|
## 📚 Ressources
|
|
|
|
- Site officiel : https://pinepods.online/
|
|
- Repository : https://github.com/madeofpendletonwool/PinePods
|
|
- Documentation : https://pinepods.online/docs/
|
|
- Clients mobiles : https://github.com/madeofpendletonwool/PinePodsApps
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-media-streaming]] (catégorie parente)
|
|
- [[app-navidrome]] — Équivalent pour la musique
|
|
- [[app-funkwhale]] — Alternative audio/podcasts
|
|
- [[app-jellyfin]] — Serveur média polyvalent
|
|
- [[app-traefik]] — Reverse proxy HTTPS
|
|
- [[recettes-docker-compose]] — Templates
|
|
- [[securisation-home-lab]] — Bonnes pratiques
|