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

158 lines
6.8 KiB
Markdown

---
title: Polaris
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, music, music-streaming, polaris, typescript, svelte, discovery, rust]
confidence: medium
contested: true
sources:
- https://selfh.st/apps/?tag=Music
- https://github.com/agersant/polaris
---
# 🧭 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é)
```yaml
# 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](https://github.com/agersant/polaris/releases) :
```bash
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 :
```ini
[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** : `./data` uniquement (la musique se rescanne).
- **Logs** : `POLARIS_LOG=info` (ou `debug` pour troubleshoot), `trace` pour 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** : `./music` monté 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 sur `127.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