Initial vault setup
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
---
|
||||
title: Funkwhale
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, activitypub-fediverse, audio, musique, spotify, django, python, fediverse]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=activitypub-fediverse, https://funkwhale.audio/, https://github.com/funkwhale/funkwhale]
|
||||
---
|
||||
|
||||
# 🎵 Funkwhale
|
||||
|
||||
> **Le serveur audio fediverse** : hébergez, streamez et partagez votre bibliothèque musicale (et vos podcasts) sur une plateforme compatible ActivityPub, alternative libre à Spotify et SoundCloud.
|
||||
|
||||
| Métadonnée | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [https://funkwhale.audio](https://funkwhale.audio) |
|
||||
| **GitHub** | [https://github.com/funkwhale/funkwhale](https://github.com/funkwhale/funkwhale) |
|
||||
| **License** | AGPL-3.0 |
|
||||
| **Langage principal** | Python (Django), PostgreSQL, Redis |
|
||||
| **Étoiles GitHub** | 46 ⭐ (monorepo) |
|
||||
| **Dernière MAJ** | 2026-05 |
|
||||
| **Catégorie** | [[cat-activitypub-fediverse]] |
|
||||
|
||||
## Description
|
||||
|
||||
Funkwhale est un **projet mature du Fediverse** : un serveur audio auto-hébergé, capable de gérer des **bibliothèques musicales** (artistes, albums, pistes), des **podcasts** et de la **radio en direct** (channels, lives). Le projet est né en 2016 dans la communauté décentralisée française et a depuis fédéré sa propre communauté multilingue.
|
||||
|
||||
La grande force de Funkwhale est l'**interopérabilité** : depuis la version 1.0, Funkwhale parle **ActivityPub**, ce qui permet à un compte Funkwhale de suivre un compte Castopod, PeerTube ou Mastodon. Le sous-projet **Funkwhale Audio Federation** pousse le concept plus loin : deux instances Funkwhale peuvent se fédérer et leurs utilisateurs découvrir/écouter les morceaux hébergés sur l'autre instance (équivalent de ce que propose PeerTube en vidéo).
|
||||
|
||||
Fonctionnalités principales : **uploads de masse**, transcodage via FFmpeg, import depuis Nextcloud Music, **Subsonic API** (compatibilité avec les clients classiques : DSub, Symfonium, play:Sub…), **playlists partagées**, **favoris**, **signets**, mode aléatoire, radios automatiques, **podcasts RSS**, modération complète, multi-utilisateurs avec quotas.
|
||||
|
||||
**Points forts** : mature (9 ans), Subsonic API = clients mobiles riches, transcodage, fédération audio, bonne documentation.
|
||||
|
||||
**Points faibles** : développement ralenti depuis 2024, monorepo complexe (`funkwhale/funkwhale`), configuration Docker non triviale, pas de **algorithmes de recommandation** natifs.
|
||||
|
||||
## Installation
|
||||
|
||||
### Via Docker (recommandé)
|
||||
|
||||
L'image officielle est `funkwhale/funkwhale` sur Docker Hub et `funkwhale/front` pour le front-end.
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
api:
|
||||
image: funkwhale/funkwhale:latest
|
||||
container_name: funkwhale-api
|
||||
restart: unless-stopped
|
||||
command: python /app/funkwhale_api/manage.py runserver 0.0.0.0:5000
|
||||
environment:
|
||||
DATABASE_URL: "postgresql://funkwhale:change-me@db/funkwhale"
|
||||
REDIS_URL: "redis://redis:6379/0"
|
||||
FUNKWHALE_HOSTNAME: "music.example.com"
|
||||
FUNKWHALE_PROTOCOL: "https"
|
||||
DJANGO_SECRET_KEY: "change-me-with-django.utils.crypto.get_random_string"
|
||||
volumes:
|
||||
- music:/music
|
||||
- static_data:/static
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
|
||||
celeryworker:
|
||||
image: funkwhale/funkwhale:latest
|
||||
restart: unless-stopped
|
||||
command: celery -A funkwhale_api.taskapp worker -l info
|
||||
environment:
|
||||
DATABASE_URL: "postgresql://funkwhale:change-me@db/funkwhale"
|
||||
REDIS_URL: "redis://redis:6379/0"
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
volumes:
|
||||
- music:/music
|
||||
- static_data:/static
|
||||
|
||||
front:
|
||||
image: funkwhale/front:latest
|
||||
container_name: funkwhale-front
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: funkwhale
|
||||
POSTGRES_PASSWORD: change-me
|
||||
POSTGRES_DB: funkwhale
|
||||
volumes:
|
||||
- db:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
music:
|
||||
static_data:
|
||||
db:
|
||||
```
|
||||
|
||||
### Installation manuelle
|
||||
|
||||
1. Installer Python 3.11+, PostgreSQL, Redis, FFmpeg
|
||||
2. Cloner le dépôt et créer un virtualenv Python
|
||||
3. Lancer `pip install -r api/requirements.txt`
|
||||
4. Configurer `.env` (DATABASE_URL, REDIS_URL, etc.)
|
||||
5. `python manage.py migrate` puis `python manage.py createsuperuser`
|
||||
6. Servir le front (build statique) via Nginx
|
||||
|
||||
## Configuration
|
||||
|
||||
1. Créer l'utilisateur administrateur via `python manage.py createsuperuser`
|
||||
2. Configurer le **reverse-proxy** (Nginx) avec HTTPS obligatoire
|
||||
3. Brancher un **sous-domaine** (`music.example.com`) et configurer `FUNKWHALE_HOSTNAME`
|
||||
4. Uploader des fichiers via l'interface web (`.flac`, `.mp3`, `.opus` supportés)
|
||||
5. Activer les **imports Subsonic** si vous avez déjà une bibliothèque (clients Subsonic = API activée)
|
||||
6. Activer la **fédération** (par défaut) et bloquer les instances indésirables via l'admin
|
||||
|
||||
## Alternatives
|
||||
|
||||
### Open source
|
||||
- [[app-castopod]] — pour le podcasting spécifiquement
|
||||
- [[app-bookwyrm]] — pour les livres, autre app fediverse Django
|
||||
- **Navidrome** — serveur Subsonic léger, mais **pas** ActivityPub
|
||||
- **Jellyfin** — média center complet, pas fediverse
|
||||
- **Ampache** — serveur audio Subsonic, pas fediverse
|
||||
|
||||
### Propriétaires
|
||||
- Spotify — streaming centralisé, abonnement
|
||||
- SoundCloud — plateforme upload et partage
|
||||
- Apple Music / Google Play Music — fermés
|
||||
|
||||
## Sécurité
|
||||
|
||||
- **HTTPS obligatoire** : Funkwhale expose des streams audio, le MITM est un risque
|
||||
- **Quotas utilisateurs** : limiter la taille des uploads par compte pour éviter l'abus
|
||||
- **Fédération** : filtrer les instances suspectes via l'admin (rapports signalés)
|
||||
- **Mises à jour** : suivre les tags `1.x` (le projet a un rythme de release lent mais régulier)
|
||||
- **Sauvegardes** : BDD PostgreSQL (durée d'écoute, favoris, comptes) ET `music/` (la vraie bibliothèque)
|
||||
|
||||
## Ressources
|
||||
- Site officiel : [funkwhale.audio](https://funkwhale.audio)
|
||||
- Documentation : [docs.funkwhale.audio](https://docs.funkwhale.audio/)
|
||||
- Communauté : Matrix `#funkwhale:matrix.org`
|
||||
- Code source : [github.com/funkwhale/funkwhale](https://github.com/funkwhale/funkwhale)
|
||||
|
||||
## Pages Liées
|
||||
- [[cat-activitypub-fediverse]]
|
||||
- [[recettes-docker-compose]]
|
||||
- [[app-castopod]]
|
||||
Reference in New Issue
Block a user