Funkwhale - Musik föderiert teilen und streamen

Funkwhale - Musik föderiert teilen und streamen

Funkwhale ist eine selbst gehostete Musikplattform, die über das ActivityPub-Protokoll mit anderen Instanzen föderiert und so eine dezentrale Alternative zu Spotify oder SoundCloud bildet.

Was ist Funkwhale?

Funkwhale kombiniert eine persönliche Musikbibliothek mit sozialen Funktionen: Tracks können in Channels veröffentlicht, kommentiert und über das Fediverse mit Nutzern anderer Instanzen geteilt werden. Die Plattform unterstützt Podcasts, Playlists, Favoriten und eine durchsuchbare Bibliothek mit automatischer Metadaten-Anreicherung aus MusicBrainz. Wer Musik selbst produziert oder teilt, bekommt mit Funkwhale eine vollständige Veröffentlichungsplattform ohne Abhängigkeit von kommerziellen Diensten.

Voraussetzungen

  • Docker 20.10+ / Docker Compose
  • PostgreSQL als Datenbankserver
  • Redis für den Task-Queue
  • Mindestens 1 GB RAM; Speicherplatz je nach Bibliotheksgröße

Compose-Beispiel

services:
  funkwhale:
    image: funkwhale/funkwhale:latest
    container_name: funkwhale
    restart: unless-stopped
    ports:
      - "5000:5000"
    volumes:
      - ./data/music:/music:ro
      - ./data/media:/app/funkwhale_api/media
      - ./data/static:/app/staticfiles
    environment:
      - DJANGO_SECRET_KEY=einLangerZufaelligerGeheimschluessel
      - FUNKWHALE_HOSTNAME=musik.meinedomain.de
      - PROTOCOLL=https
      - DATABASE_URL=postgresql://funkwhale:passwort@funkwhale-db/funkwhale
      - CACHE_URL=redis://funkwhale-redis:6379/0
    depends_on:
      - funkwhale-db
      - funkwhale-redis

  funkwhale-db:
    image: postgres:15-alpine
    container_name: funkwhale-db
    restart: unless-stopped
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=funkwhale
      - POSTGRES_USER=funkwhale
      - POSTGRES_PASSWORD=passwort

  funkwhale-redis:
    image: redis:7-alpine
    container_name: funkwhale-redis
    restart: unless-stopped

Hinweise

  • Celery-Worker: Funkwhale benötigt mindestens einen Celery-Worker für Hintergrundaufgaben (Import, Transkodierung). Den funkwhale/funkwhale-Container mit dem Befehl celery statt server als zweiten Service hinzufügen.
  • Musik importieren: Über Bibliothek → Importieren lassen sich lokale Verzeichnisse einlesen; das Musikverzeichnis dazu als Read-only-Volume einbinden.
  • Federation aktivieren: Damit andere Funkwhale-Instanzen folgen können, muss die Instanz über eine öffentliche Domain mit gültigem TLS-Zertifikat erreichbar sein.
  • Datensicherung: PostgreSQL-Dump, media-Verzeichnis und den DJANGO_SECRET_KEY regelmäßig sichern.