6.8 KiB
title, created, updated, type, tags, confidence, contested, sources
| title | created | updated | type | tags | confidence | contested | sources | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Polaris | 2026-06-07 | 2026-06-07 | app |
|
medium | true |
|
🧭 Polaris
Serveur de streaming musical et de découverte écrit en Rust avec frontend Svelte : bibliothèque locale, recommandations automatiques basées sur l'écoute et interface ultra-moderne « Material You ».
📋 Informations Générales
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/agersant/polaris |
| GitHub | https://github.com/agersant/polaris |
| License | MIT |
| Langage | Rust (backend) / Svelte (frontend) |
| Étoiles | ⭐ 127 (3 000+ sur GitHub, ordre de grandeur selfh.st) |
| Dernière MAJ | 2026-05-08 |
| Catégorie | cat-music |
📝 Description
Polaris est un projet ambitieux : un serveur de streaming musical self-hosted qui se distingue par un moteur de découverte intégré. Au lieu de simplement servir votre bibliothèque comme app-navidrome ou app-koel, Polaris apprend de vos habitudes d'écoute et construit automatiquement des collections thématiques, des radios personnalisées (« joue un truc dans le style de Massive Attack que je n'ai pas encore écouté »), et un graph d'artistes similaires explorable.
L'architecture technique est remarquable : backend en Rust (axum + sqlx) pour la performance et l'efficacité mémoire, frontend Svelte/SvelteKit pour une UI réactive, base de données SQLite (avec FTS5 pour la recherche full-text). Le tout compile en un binaire unique, ce qui rend le déploiement trivial. La consommation RAM reste faible même avec des dizaines de milliers de pistes.
⚠️ Note importante : selfh.st a classé le langage principal comme Rust (3k⭐), mais plusieurs sources communautaires le décrivent comme TypeScript/Svelte. Le repo officiel est effectivement Rust + Svelte. À l'usage, la perception « TypeScript/Svelte » vient du fait que la couche frontend est SvelteKit, et que l'expérience utilisateur est très orientée composants réactifs. Contesté : true car les sources divergent.
Cas d'usage : mélomane qui veut redécouvrir sa bibliothèque plutôt que d'écouter les mêmes albums en boucle, fan d'algorithmes de type Spotify Discover Weekly, recherche d'un serveur self-hosted simple à déployer (un seul binaire, pas de stack à installer).
🚀 Installation
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: "3.8"
services:
polaris:
image: ghcr.io/agersant/polaris:latest
container_name: polaris
restart: unless-stopped
ports:
- "5050:5050"
environment:
POLARIS_LOG: info
POLARIS_DATA_DIR: /data
POLARIS_MUSIC_DIR: /music
volumes:
- ./data:/data
- ./music:/music:ro
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:5050/health"]
interval: 30s
timeout: 5s
retries: 3
Premier lancement : http://localhost:5050, créer l'utilisateur admin, pointer la bibliothèque vers /music dans Settings.
Option 2 : Binaire unique (alternative)
Télécharger depuis les releases :
curl -L -o polaris.tar.gz https://github.com/agersant/polaris/releases/latest/download/polaris-linux-x86_64.tar.gz
tar xzf polaris.tar.gz
./polaris --data-dir ./data --music-dir /mnt/nas/music --port 5050
Service systemd minimal :
[Unit]
Description=Polaris Music Server
After=network.target
[Service]
ExecStart=/usr/local/bin/polaris --data-dir /var/lib/polaris --music-dir /mnt/nas/music
Restart=always
User=polaris
[Install]
WantedBy=multi-user.target
⚙️ Configuration
- Bibliothèque : dossier
/music(ou autre), scan initial long (plusieurs heures pour 50k+ pistes), incrémental ensuite. - Découverte : Polaris tracke les écoutes, construit un profil utilisateur, génère automatiquement :
- Smart collections : « Recently added », « Forgotten favorites », « Hidden gems ».
- Radios : basées sur un seed (artiste/album/piste).
- Similar artists graph : explorable à la souris.
- Auth : locale par défaut, multi-utilisateurs supporté.
- Streaming : FLAC, MP3, OGG, Opus. Transcodage à la volée via symphonia.
- Backup :
./datauniquement (la musique se rescanne). - Logs :
POLARIS_LOG=info(oudebugpour troubleshoot),tracepour le profiling.
🔄 Alternatives
Open Source
- app-navidrome — Go, Subsonic-compatible, ultra léger, sans moteur de découverte.
- app-koel — PHP/Vue, UI très soignée.
- app-vocard — Python/Vue, voir fiche dédiée.
- app-ampache — PHP historique, plus complet.
- app-funkwhale — Fédéré ActivityPub.
- app-music-assistant — Agrégateur multi-source, plus complet fonctionnellement.
- app-maloja — Pour les stats/scrobbling.
Propriétaires (ce que cette app remplace)
- Spotify Discover Weekly / Daily Mix — Algorithmes de découverte.
- Apple Music « Replay » + suggestions — Découverte algorithmique.
- Last.fm — Scrobbling et découverte.
- Roon — Pour les audiophiles.
🔒 Sécurité
- HTTPS obligatoire : reverse proxy Traefik/Caddy avec Let's Encrypt.
- Multi-users : créer un compte par utilisateur familial, isoler les profils d'écoute.
- Droits filesystem :
./musicmonté en:ro, le conteneur ne doit jamais écrire dedans. - Backups :
./dataà sauvegarder (SQLite + cache + profils d'écoute). - Rate limiting : API basique, placer un CrowdSec/Fail2ban devant.
- Mise à jour : suivre les releases, projet en évolution rapide.
- Logs : peuvent contenir les requêtes, anonymiser si exposition publique.
- Exposition réseau : par défaut sur
0.0.0.0:5050, restreindre via firewall ou bind sur127.0.0.1+ reverse proxy.
📚 Ressources
- Site officiel : https://github.com/agersant/polaris
- Documentation : https://github.com/agersant/polaris/wiki
- Repository : https://github.com/agersant/polaris
- Releases : https://github.com/agersant/polaris/releases
- Démo : https://polaris-demo.example.com (à confirmer)
- Reddit : https://www.reddit.com/r/selfhosted/comments/polaris
🔗 Pages Liées
- cat-music — Catégorie parente
- app-navidrome — Concurrent Go, plus mature
- app-koel — Concurrent PHP/Vue
- app-vocard — Concurrent Python/Vue
- app-funkwhale — Fédéré
- app-music-assistant — Agrégateur multi-source
- app-maloja — Scrobbler compatible
- app-traefik — Reverse proxy HTTPS
- recettes-docker-compose — Templates Docker
- securisation-home-lab — Bonnes pratiques