--- title: Meelo created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, music, music-streaming, meelo, python, fastapi, subsonic, opensaubsonic, vue, nuxt] confidence: high contested: false sources: - https://selfh.st/apps/?tag=Music - https://github.com/Arthi-2004/Meelo - https://meeloapp.github.io/Meelo/ --- # đŸŽŒ Meelo > Serveur de streaming musical **moderne** Ă©crit en Python (FastAPI) + frontend Vue/Nuxt, **API Subsonic/OpenSubsonic complĂšte** et **scanner multi-utilisateurs ultra-rapide** conçu pour des bibliothĂšques jusqu'Ă  plusieurs millions de pistes. ## 📋 Informations GĂ©nĂ©rales | MĂ©tadonnĂ©e | Valeur | | :--- | :--- | | **Site web** | https://meeloapp.github.io/Meelo/ | | **GitHub** | https://github.com/Arthi-2004/Meelo | | **License** | GPL-3.0 | | **Langage** | Python (FastAPI) / TypeScript (Vue/Nuxt) | | **Étoiles** | ⭐ 36 | | **DerniĂšre MAJ** | 2026-06-06 | | **CatĂ©gorie** | [[cat-music]] | ## 📝 Description **Meelo** est un serveur de streaming musical **personnel, moderne et ambitieux** dĂ©veloppĂ© principalement par Arthi-2004. L'objectif affichĂ© est simple : devenir le **Navidrome-killer** en proposant une UI contemporaine (Nuxt 3, design sombre Material-like) tout en conservant la compatibilitĂ© **Subsonic/OpenSubsonic**, plus des fonctionnalitĂ©s avancĂ©es que ses concurrents n'ont pas (ou peu). CĂŽtĂ© backend, Meelo est Ă©crit en **Python** avec **FastAPI** (asynchrone), **SQLAlchemy 2** et **Pydantic v2**, ce qui lui confĂšre une **rapiditĂ© de scan** et une **consommation mĂ©moire maĂźtrisĂ©e** malgrĂ© des bases de donnĂ©es de plusieurs millions de pistes. Le frontend est une SPA **Vue 3 / Nuxt 3** avec Tailwind, Pinia et un player HTML5 custom (sans dĂ©pendance lourde comme Preact/Tone.js). Le tout est distribuĂ© en deux images Docker (backend + frontend) ou en monolithe. FonctionnalitĂ©s phares : **API Subsonic/OpenSubsonic complĂšte** (donc compatible avec tous les clients Subsonic : [[app-symfonium]], DSub, play:Sub, Substreamer, Feishin
), **albums intelligents auto-gĂ©nĂ©rĂ©s** (compils, Ă©ditions deluxe, volumes
), **gestion fine des doublons et Ă©ditions multiples**, **listes de lecture collaboratives**, **scrobbling Last.fm / ListenBrainz**, **transcodage Ă  la volĂ©e** (FLAC → MP3/Opus), **recherche full-text floue**, et **multi-utilisateurs avec permissions fines**. Un **systĂšme de "tracks preferences"** permet Ă  l'algorithme d'apprentissage d'amĂ©liorer les suggestions. Cas d'usage : « j'ai une bibliothĂšque de 500 000 FLAC sur mon NAS, je veux un serveur qui scanne en moins d'une heure, propose une UI moderne type Spotify, et que mes apps mobiles prĂ©fĂšrent ». Meelo coche la case. ## 🚀 Installation ### Option 1 : Docker Compose (recommandĂ©) ```yaml # docker-compose.yml version: "3.8" services: meelo-backend: image: ghcr.io/arthi-2004/meelo-backend:latest container_name: meelo-backend restart: unless-stopped depends_on: - postgres environment: DATABASE_URL: postgresql+asyncpg://meelo:meelo@postgres:5432/meelo JWT_SECRET: changez-moi-en-production-32-chars-min ADMIN_EMAIL: admin@example.com ADMIN_PASSWORD: changez-moi-aussi SCAN_INTERVAL: "3600" TRANSCODING_ENABLED: "true" FFMPEG_PATH: /usr/bin/ffmpeg volumes: - ./data/backend:/app/data - ./music:/music:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 5s retries: 3 meelo-frontend: image: ghcr.io/arthi-2004/meelo-frontend:latest container_name: meelo-frontend restart: unless-stopped depends_on: - meelo-backend ports: - "8081:3000" environment: API_URL: http://meelo-backend:8080 PUBLIC_URL: https://meelo.example.com postgres: image: postgres:16-alpine container_name: meelo-db restart: unless-stopped environment: POSTGRES_USER: meelo POSTGRES_PASSWORD: meelo POSTGRES_DB: meelo volumes: - ./data/db:/var/lib/postgresql/data ``` ### Option 2 : Installation manuelle Cloner le monorepo `git clone https://github.com/Arthi-2004/Meelo.git`, installer Poetry + Node 20, lancer le backend via `poetry install && uvicorn meelo.main:app --reload` (PostgreSQL requis), puis le frontend via `pnpm install && pnpm dev`. Pour la prod : `pnpm build` (gĂ©nĂšre un bundle statique servi par Nginx) + le backend derriĂšre **Gunicorn + Uvicorn workers** dans un **systemd unit**. PrĂ©voir 2-4 Go de RAM minimum pour 100 000 pistes. ## ⚙ Configuration Meelo se configure via **variables d'environnement** (12-factor) ou un fichier `.env` Ă  la racine du backend. Les paramĂštres clĂ©s : - `DATABASE_URL` : connexion PostgreSQL (obligatoire, SQLite dĂ©prĂ©ciĂ© en prod). - `JWT_SECRET` : **obligatoire**, 32 caractĂšres min, unique par instance. - `SCAN_INTERVAL` : intervalle de re-scan en secondes (dĂ©faut 1 h). - `TRANSCODING_ENABLED` + `FFMPEG_PATH` : active le transcodage Ă  la volĂ©e. - `LISTENBRAINZ_TOKEN` / `LASTFM_API_KEY` : scrobbling. - `MAX_UPLOAD_SIZE` : taille max des uploads (pour la fonction d'upload web). L'UI web propose un **premier wizard** : login admin, ajout du dossier de musique, choix du thĂšme, configuration des providers de mĂ©tadonnĂ©es (Spotify, MusicBrainz, Discogs). Toute la config peut ensuite ĂȘtre Ă©ditĂ©e depuis **Settings → Server** (changements persistĂ©s en base). ## 🔄 Alternatives **Open Source / Self-Hosted :** - [[app-navidrome]] — RĂ©fĂ©rence en Go, ultra-lĂ©ger, plus mature. - [[app-funkwhale]] — FĂ©dĂ©rĂ© (ActivityPub), axĂ© podcasts et audio social. - [[app-koel]] — UI plus "design", Laravel + Vue, plus gourmand. - [[app-gonic]] — Subsonic-compatible en Go, minimaliste. - [[app-jellyfin]] — Polyvalent (vidĂ©o + musique) avec plugins. - [[app-kavita]] — Plus orientĂ© livres/mangas (autre catĂ©gorie). **PropriĂ©taire :** - **Plex** + Plexamp — L'excellent Plexamp (gratuit avec Plex Pass) offre une expĂ©rience musicale aboutie, mais l'Ă©cosystĂšme reste fermĂ© et payant. - **Spotify + Serveur personnel** — Approche hybride, perd l'intĂ©rĂȘt du self-hosted. - **Apple Music iCloud Library** — Verrouillage total, aucun contrĂŽle. ## 🔒 SĂ©curitĂ© - **Reverse proxy HTTPS obligatoire** (Traefik, Caddy, Nginx Proxy Manager) — Meelo ne gĂšre pas le TLS nativement. - **JWT_SECRET** : gĂ©nĂ©rer une chaĂźne alĂ©atoire de 64 caractĂšres (`openssl rand -hex 32`), **ne jamais** commiter le `.env`. - **PostgreSQL** : mot de passe fort, **ne pas exposer le port 5432** sur l'interface rĂ©seau, uniquement via le rĂ©seau Docker. - **Dossier musique en `:ro`** : `read-only` dans le compose, Meelo n'Ă©crit jamais dedans (sauf si vous activez l'upload web, dans ce cas prĂ©voir un dossier `uploads/` sĂ©parĂ©). - **Rate limiting** : activer CrowdSec/Fail2ban au niveau du reverse proxy, Meelo ne l'implĂ©mente pas en natif. - **Mises Ă  jour** : suivre les releases GitHub, le projet est jeune (alpha/beta) — ne pas dĂ©ployer en prod critique sans tests. - **Sauvegardes** : `pg_dump` rĂ©gulier de la base + le dossier `data/` (cache transcodage, illustrations). ## 📚 Ressources - Site officiel : https://meeloapp.github.io/Meelo/ - Documentation : https://github.com/Arthi-2004/Meelo/wiki - Repository : https://github.com/Arthi-2004/Meelo - Issues : https://github.com/Arthi-2004/Meelo/issues - Discord communautaire : https://discord.gg/meelo - DĂ©mo en ligne : https://demo.meeloapp.github.io (compte dĂ©mo fourni) - API Subsonic : https://www.subsonic.org/pages/api.jsp ## 🔗 Pages LiĂ©es - [[cat-music]] — CatĂ©gorie parente - [[app-navidrome]] — Concurrent Go, plus mature et plus lĂ©ger - [[app-funkwhale]] — Alternative fĂ©dĂ©rĂ©e ActivityPub - [[app-koel]] — Concurrent PHP/Vue avec UI "premium" - [[app-gonic]] — Subsonic-compatible minimaliste - [[app-symfonium]] — Client Android recommandĂ© - [[app-feishin]] — Client desktop multi-plateforme - [[recettes-docker-compose]] — Templates Docker Compose - [[securisation-home-lab]] — Bonnes pratiques sĂ©curitĂ© - [[app-traefik]] — Reverse proxy HTTPS