128 lines
5.4 KiB
Markdown
128 lines
5.4 KiB
Markdown
---
|
|
title: Castopod
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, activitypub-fediverse, podcast, audio, php, fediverse]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=activitypub-fediverse, https://code.castopod.org/adaures/castopod, https://castopod.org/]
|
|
---
|
|
|
|
# 🎙️ Castopod
|
|
|
|
> **La plateforme de podcasting fediverse** : hébergez vos podcasts sur une instance compatible ActivityPub, où chaque épisode est un post que vos auditeurs peuvent suivre depuis Mastodon, Pleroma ou tout autre serveur du Fediverse.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [https://castopod.org](https://castopod.org) |
|
|
| **GitHub** | [https://code.castopod.org/adaures/castopod](https://code.castopod.org/adaures/castopod) |
|
|
| **License** | AGPL-3.0 |
|
|
| **Langage principal** | PHP (CodeIgniter 4) |
|
|
| **Étoiles GitHub** | 63 ⭐ |
|
|
| **Dernière MAJ** | 2026-05 |
|
|
| **Catégorie** | [[cat-activitypub-fediverse]] |
|
|
|
|
## Description
|
|
|
|
Castopod est une plateforme libre de **podcasting** pensée pour les créateurs et podcasteurs qui veulent garder le contrôle de leur média. Chaque épisode publié est automatiquement exposé via **ActivityPub** : un auditeur peut donc suivre `@podcast@mon-instance.fr` directement depuis son compte Mastodon, recevoir les nouveaux épisodes dans sa timeline et même répondre — la réponse apparaissant comme un commentaire sous l'épisode.
|
|
|
|
Concrètement, Castopod propose tout ce qu'attend un podcasteur : hébergement et distribution RSS des flux, statistiques d'écoute (téléchargements, lecteurs, géolocalisation), **mutualisation multi-podcasts** (plusieurs podcasts sur une même instance, idéal pour des collectifs ou des radios associatives), gestion des invités, transcriptions, intégration avec les **plateformes iTunes/Spotify/Pocket Casts** classiques.
|
|
|
|
**Points forts** : basé sur CodeIgniter 4, relativement léger, interface d'administration claire (CodeIgniter admin), export OPML, transcriptions automatiques, multilingue.
|
|
|
|
**Points faibles** : image Docker officielle un peu capricieuse (problèmes de permissions sur les volumes), documentation perfectible, pas d'algorithme de recommandation, fonctionnalités sociales plus limitées qu'un PeerTube (pas de likes distribués, par ex.).
|
|
|
|
## Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
L'image officielle est `castopod/castopod` sur Docker Hub. Castopod a besoin d'une base MySQL/MariaDB.
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
castopod:
|
|
image: castopod/castopod:latest
|
|
container_name: castopod
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
CP_BASEURL: "https://podcast.example.com"
|
|
CP_ADMIN_GATEWAY: cp-admin
|
|
CP_DATABASE: castopod
|
|
CP_DATABASE_HOSTNAME: db
|
|
CP_DATABASE_USERNAME: castopod
|
|
CP_DATABASE_PASSWORD: change-me
|
|
CP_DATABASE_DRIVER: "mysql"
|
|
CP_EMAIL_FROM: "noreply@example.com"
|
|
CP_EMAIL_SMTP_HOST: ""
|
|
volumes:
|
|
- castopod_media:/var/www/castopod/public/media
|
|
depends_on:
|
|
- db
|
|
|
|
db:
|
|
image: mariadb:11
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_DATABASE: castopod
|
|
MYSQL_USER: castopod
|
|
MYSQL_PASSWORD: change-me
|
|
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
|
|
volumes:
|
|
- castopod_db:/var/lib/mysql
|
|
|
|
volumes:
|
|
castopod_media:
|
|
castopod_db:
|
|
```
|
|
|
|
### Installation manuelle
|
|
|
|
1. Cloner le dépôt : `git clone https://code.castopod.org/adaures/castopod.git`
|
|
2. Installer les dépendances PHP avec Composer : `composer install --no-dev`
|
|
3. Configurer Apache/Nginx pour pointer sur `public/` (le `.htaccess` est fourni)
|
|
4. Créer la base MariaDB et lancer l'installateur web
|
|
|
|
## Configuration
|
|
|
|
1. Accéder à `https://podcast.example.com/cp-admin/install` (gateway configurable via `CP_ADMIN_GATEWAY`)
|
|
2. Créer le **super-admin** (premier compte = administrateur global)
|
|
3. Ajouter un **podcast** : titre, description, image de couverture, propriétaire
|
|
4. Configurer le **flux RSS** : chaque podcast a son URL, Castopod gère iTunes/Podcast Index
|
|
5. Activer la **fédération ActivityPub** (on par défaut) : les comptes podcasteurs deviennent des acteurs fediverse
|
|
|
|
## Alternatives
|
|
|
|
### Open source
|
|
- [[app-funkwhale]] — pour l'audio plus généraliste (musique, livres audio, podcasts)
|
|
- [[app-peertube]] — vidéo plutôt que podcast, mais même philosophie fediverse
|
|
- [[app-podcastgenerator]] — solution PHP minimaliste, pas de ActivityPub
|
|
- **Funkwhale** — pour une bibliothèque audio unifiée
|
|
|
|
### Propriétaires
|
|
- Anchor / Spotify for Podcasters — gratuit mais hébergé
|
|
- Buzzsprout — payant, centralisé
|
|
- Transistor — payant, analytics poussées
|
|
|
|
## Sécurité
|
|
|
|
- **Reverse-proxy HTTPS** obligatoire (Let's Encrypt via Traefik/Caddy)
|
|
- **Isoler le compte super-admin** : pas d'email public dans le profil fediverse pour éviter le spam
|
|
- **Modération ActivityPub** : Castopod dispose d'un onglet pour bloquer/filtrer les acteurs federés indésirables
|
|
- **Mises à jour** : suivre les releases sur le GitLab officiel (correctifs de sécurité réguliers)
|
|
- **Sauvegardes** : `castopod_media` (épisodes, images) et `castopod_db` (métadonnées, commentaires)
|
|
|
|
## Ressources
|
|
- Site officiel : [castopod.org](https://castopod.org)
|
|
- Documentation : [docs.castopod.org](https://docs.castopod.org/)
|
|
- Communauté : Matrix `#castopod:matrix.org`
|
|
- Code source : [code.castopod.org/adaures/castopod](https://code.castopod.org/adaures/castopod)
|
|
|
|
## Pages Liées
|
|
- [[cat-activitypub-fediverse]]
|
|
- [[recettes-docker-compose]]
|
|
- [[app-funkwhale]]
|