Files
wiki/Catalogue-Self-Hosted/apps/app-vocard.md
T
2026-06-09 18:40:21 +02:00

6.6 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
Vocard 2026-06-07 2026-06-07 app
catalogue
music
music-streaming
vocard
python
fastapi
vue
subsonic
ml
medium false
https://selfh.st/apps/?tag=Music
https://github.com/vocard-project/vocard

🎤 Vocard

Serveur de streaming musical moderne écrit en Python (FastAPI) et Vue.js, avec interface soignée, recherche IA, dossiers intelligents et compatibilité Subsonic.

📋 Informations Générales

Métadonnée Valeur
Site web https://vocard-project.github.io/
GitHub https://github.com/vocard-project/vocard
License AGPL-3.0
Langage Python (FastAPI) / Vue.js
Étoiles 132
Dernière MAJ 2026-05 (dernière release)
Catégorie cat-music

📝 Description

Vocard est un serveur de streaming musical récent (lancé en 2023) qui se positionne comme une alternative moderne à app-navidrome et app-koel. Construit sur FastAPI (backend Python asynchrone) et Vue 3 (frontend SPA), il mise sur une UI très soignée (mode sombre élégant, transitions fluides, vue « coverflow » façon Apple Music) et sur un ensemble de features originales que l'on ne trouve pas ailleurs :

  • Recherche intelligente : résultats qui combinent titre, artiste, album, paroles, et même similarité audio (via l'embedding Chromaprint/AcoustID).
  • Dossiers intelligents (« Smart folders ») : règles automatiques type « albums ajoutés ce mois-ci », « genres Metal progressif », « morceaux < 3 min » — similaire à iTunes.
  • Visualisation audio : spectre temps réel, vu-mètre, options d'égaliseur.
  • Lyrics synchronisés : récupération automatique (sources Musixmatch / LyricFind via plugin), avec timeline karaoké.
  • Multi-utilisateurs : comptes isolés, playlists partagées, historique d'écoute personnel.
  • Compatibilité Subsonic : partielle, couvre les endpoints principaux (playlists, search, streaming, scrobble).
  • Recherche vocale : à venir selon la roadmap.

Le projet est en pleine croissance, avec une communauté Discord active, des releases fréquentes, et un focus sur l'expérience utilisateur. Idéal pour qui veut une UI moderne type « Apple Music / Spotify » mais 100 % auto-hébergée.

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
version: "3.8"

services:
  vocard:
    image: ghcr.io/vocard-project/vocard:latest
    container_name: vocard
    restart: unless-stopped
    ports:
      - "3010:3000"
    environment:
      SECRET_KEY: ChangeM3_VOCARD_SECRET
      DEFAULT_USER: admin
      DEFAULT_PASSWORD: ChangeM3_VOCARD_ADMIN
      DB_TYPE: sqlite
      MUSIC_PATH: /music
    volumes:
      - ./data:/data
      - ./music:/music:ro
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    container_name: vocard-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: vocard
      POSTGRES_PASSWORD: ChangeM3_VOCARD_PG
      POSTGRES_DB: vocard
    volumes:
      - ./pgdata:/var/lib/postgresql/data

Premier lancement : visiter http://localhost:3010/, login admin / ChangeM3_VOCARD_ADMIN, puis Settings → Library pour pointer vers /music.

Option 2 : Installation manuelle

Prérequis : Python 3.11+, Node 20+, PostgreSQL 14+ (ou SQLite par défaut). Cloner le repo, cd backend && pip install -r requirements.txt, cd frontend && npm ci && npm run build, configurer backend/.env, lancer python main.py côté backend et servir le dist/ côté frontend.

⚙️ Configuration

  • SECRET_KEY : 64+ caractères aléatoires, critique pour la sécurité des sessions JWT.
  • Base de données : SQLite par défaut (simple, mais moins performant sur grosses biblios), PostgreSQL recommandé.
  • Bibliothèque : MUSIC_PATH pointe vers le dossier musiques, scan incrémental toutes les 6h par défaut.
  • Recherche : Chromaprint/AcoustID pour la similarité audio, nécessite clé API AcoustID.
  • Auth : locale, header X-Forwarded-User pour SSO reverse-proxy.
  • Lyrics : Musixmatch (gratuit) ou LyricFind (payant).
  • Subsonic : activable dans Settings, génère une API key par utilisateur.
  • Métadonnées : extraction via mutagen, pochettes, normalisation ReplayGain.

🔄 Alternatives

Open Source

  • app-koel — PHP/Vue, UI très soignée aussi, plus mature.
  • app-navidrome — Go, ultra léger, UI plus basique.
  • app-ampache — PHP historique, plus riche fonctionnellement.
  • app-funkwhale — Fédéré (ActivityPub), orienté podcasts.
  • app-polaris — TypeScript/Svelte, discovery-focused, voir fiche dédiée.
  • app-gonic — Go, minimaliste Subsonic.
  • app-music-assistant — Agrégateur multi-source (complémentaire).

Propriétaires (ce que cette app remplace)

  • Spotify — Streaming freemium.
  • Apple Music — Streaming avec UI coverflow.
  • YouTube Music — Streaming avec vidéo.
  • Tidal — Streaming HiFi/FLAC.
  • Plexamp — Player Plex.

🔒 Sécurité

  • SECRET_KEY : variable critique, doit être unique et longue, rotation invalide tous les JWT en cours.
  • HTTPS obligatoire via Traefik/Caddy : le frontend est une SPA qui parle au backend JSON.
  • PostgreSQL password : stocker dans un fichier .env non versionné, ne pas mettre ChangeM3_* en production.
  • Trusted proxies : configurer TRUSTED_HOSTS et TRUSTED_PROXIES côté FastAPI si reverse proxy.
  • Volumes : ./data contient la base SQLite/Postgres + cache pochettes, à backuper. ./music en :ro (lecture seule).
  • CORS : restreindre CORS_ORIGINS à votre domaine (https://vocard.example.com) en production.
  • Mises à jour : suivre les releases GitHub, projet jeune donc rythme rapide.
  • Rate limiting : FastAPI a des add-ons (slowapi), à activer contre le brute-force login.

📚 Ressources

🔗 Pages Liées