---
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]]
