148 lines
6.6 KiB
Markdown
148 lines
6.6 KiB
Markdown
---
|
|
title: Vocard
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, music, music-streaming, vocard, python, fastapi, vue, subsonic, ml]
|
|
confidence: medium
|
|
contested: false
|
|
sources:
|
|
- 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é)
|
|
|
|
```yaml
|
|
# 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
|
|
|
|
- Site officiel : https://vocard-project.github.io/
|
|
- Documentation : https://github.com/vocard-project/vocard/wiki
|
|
- Repository : https://github.com/vocard-project/vocard
|
|
- Démo : https://vocard-project.github.io/demo (lorsque disponible)
|
|
- Discord : https://discord.gg/vocard
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-music]] — Catégorie parente
|
|
- [[app-koel]] — Concurrent PHP/Vue, plus mature
|
|
- [[app-navidrome]] — Concurrent Go, plus léger
|
|
- [[app-polaris]] — Autre alternative moderne (TS/Svelte)
|
|
- [[app-funkwhale]] — Fédéré
|
|
- [[app-music-assistant]] — Agrégateur complémentaire
|
|
- [[app-traefik]] — Reverse proxy HTTPS
|
|
- [[recettes-docker-compose]] — Templates Docker
|
|
- [[securisation-home-lab]] — Bonnes pratiques
|