Une alternative auto-hébergée à Spotify : Koel

Une alternative auto-hébergée à Spotify : Koel

Dans un précédent article, je vous ai présenté Navidrome, une excellente alternative gratuite et auto-hébergée à Spotify. Je vous invite à la tester si vous recherchez une solution simple, légère et allant à l’essentiel.

Dans cet article, nous allons découvrir une autre alternative et auto-hébergée à Spotify, plus riche en fonctionnalités : Koel.

Koel
Music streaming server that works

Présentation

Qu'est-ce que Koel ?

Koel est une solution de streaming musical libre et open source. , elle analyse les fichiers audio que vous possédez déjà et les rend disponibles dans une interface web utilisable depuis n'import où.

Ce que propose Koel

Dans sa version entièrement gratuite, Koel propose une interface web moderne, la gestion des artistes, des albums, des morceaux et des pochettes, ainsi que des playlists classiques et intelligentes. Il peut également s’intégrer à des services comme Last.fm, Spotify et MusicBrainz.

Koel repose toutefois sur un modèle freemium. Moyennant un budget supplémentaire, Koel Plus (19.99€) donne accès à des fonctionnalités avancées, notamment les bibliothèques multi-utilisateurs, la collaboration sur les playlists, et les thèmes personnalisés. À mes yeux, ce sont précisément ces options qui lui permettent de se démarquer de Navidrome.

Mise en place de koel

Comme toujours, nous allons installer Koel avec Docker dans un environnement Debian. Toutefois, si vous le préférez, vous pouvez également l’installer directement à partir des fichiers binaires.

Prérequis

Pour suivre ce tutoriel, il vous faut :

  • une machine debian disposant de Docker et Docker Compose
  • Minimum 2 Go de mémoire vive pour être à l'aise
  • un Minimum d'espace disque pour la base de données et, surtout, suffisamment de stockage pour votre musique
  • Vos fichiers audio dont vous possédez les droits d'utilisation.

Préparer les dossiers de Koel

Nous allons installer Koel dans /etc/koel.

Commencez par créer le dossier de Koel :

mkdir -p /etc/koel
cd /etc/koel
GitHub - koel/docker: A minimal docker image for the koel music streaming server.
A minimal docker image for the koel music streaming server. - koel/docker

Récupération des fichiers de Koel

Nous allons ensuite récupérer les fichiers Docker directement depuis le dépôt GitHub officiel de Koel :

git clone https://github.com/koel/docker.git .

Et créer le dossier qui accueillera votre musique :

mkdir -p /etc/koel/music

Vous devrez ensuite générer deux mots de passe différents pour les variables MYSQL_ROOT_PASSWORD et MYSQL_PASSWORD. Pour cela, je vous recommande d’utiliser Minp et de créer, pour chacune de ces variables, un mot de passe sécurisé d’au moins 16 caractères.

Modification des fichiers de Koel

Pour simplifier la gestion de votre conteneur, attribuez-lui un nom explicite. Dans le fichier docker-compose.yml fourni par Koel, ajoutez la ligne suivante :

    container_name: koel 

Editer donc le fichier docker-compose.mysql.yml via nano ou vim

nano /etc/koel/docker-compose.mysql.yml
vim /etc/koel/docker-compose.mysql.yml
services:
  koel:
    image: phanan/koel
    container_name: koel
    restart: unless-stopped
    depends_on:
      - database
    ports:
      - 80:80
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=database
      - DB_USERNAME=koel
      - DB_PASSWORD=<MDP_a_CHANGER_N1>
      - DB_DATABASE=koel
    volumes:
      - ./music:/music
      - image_storage:/var/www/html/storage/app/public/images
      - search_index:/var/www/html/storage/search-indexes
      - ./sql:/docker-entrypoint-initdb.d

  database:
    image: mariadb:10.11
    restart: unless-stopped
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=<MDP_a_CHANGER_N2>
      - MYSQL_DATABASE=koel
      - MYSQL_USER=koel
      - MYSQL_PASSWORD=<MDP_a_CHANGER_N1>

volumes:
  db:
    driver: local
  music:
    driver: local
  image_storage:
    driver: local
  search_index:
    driver: local
Vous avez donc deux mots de passe à changer.

Démarrage du docker koel

Vous pouvez maintenant lancer le conteneur Docker en faisant :

docker compose -f docker-compose.mysql.yml up -d

Votre conteneur Docker peut prendre un peu de temps à démarrer, c’est normal. Il doit d’abord télécharger l’image Docker, ce qui peut prendre plus ou moins de temps en fonction de votre connexion Internet.

Une fois le conteneur démarré, vous devez initialiser Koel. Pour cela, exécutez la commande suivante :

docker exec --user www-data -it koel php artisan koel:init --no-assets

Il vous demandera de renseigner le dossier Media. Celui proposé par défaut convient, vous pouvez donc simplement appuyer sur Entrée.

L’installation est presque terminée. Il manque cependant une étape très importante, récupérer le fichier .env du conteneur Docker et le copier dans notre dossier Koel, afin de conserver la clé de l’application. Pour cela, il vous suffit d’exécuter la commande suivante en étant dans le répertoire Koel :

docker cp koel:/var/www/html/.env ./

Il faut ensuite modifier le fichier docker-compose.mysql.yml afin qu’il récupère le fichier .env et l’intègre au conteneur Docker à chaque démarrage.

Il suffit d’ajouter cette ligne dans la section volumes de votre fichier docker-compose.yml :

- ./.env:/var/www/html/.env

Ce qui donne ceci dans la version complète du fichier docker-compose.yml :

services:
  koel:
    image: phanan/koel
    container_name: koel
    restart: unless-stopped
    depends_on:
      - database
    ports:
      - 80:80
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=database
      - DB_USERNAME=koel
      - DB_PASSWORD=<MDP_a_CHANGER_N1>
      - DB_DATABASE=koel
    volumes:
      - ./music:/music
      - image_storage:/var/www/html/storage/app/public/images
      - search_index:/var/www/html/storage/search-indexes
      - ./sql:/docker-entrypoint-initdb.d
      - ./.env:/var/www/html/.env

  database:
    image: mariadb:10.11
    restart: unless-stopped
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=<MDP_a_CHANGER_N2>
      - MYSQL_DATABASE=koel
      - MYSQL_USER=koel
      - MYSQL_PASSWORD=<MDP_a_CHANGER_N1>

volumes:
  db:
    driver: local
  music:
    driver: local
  image_storage:
    driver: local
  search_index:
    driver: local

Vous pouvez maintenant vous rendre à l’adresse IP de votre machine depuis votre navigateur. Vous aurez alors accès à Koel.

Email: [email protected]
Password: KoelIsCool

Toutefois, vous pouvez définir le mot de passe du compte administrateur Koel à l’aide de la commande suivante :

docker exec -it koel php artisan koel:admin:change-password

Ajout de musique à Koel

Pour ajouter de la musique à Koel, il est important que tous vos fichiers musicaux se trouvent dans le répertoire /etc/koel/music. Vous pouvez utiliser des liens symboliques ou toute autre méthode, tant que la musique est accessible depuis ce répertoire.

Une fois votre musique ajoutée, elle n’apparaîtra pas immédiatement dans All Songs de Koel. C’est tout à fait normal, Koel doit d’abord effectuer une synchronisation de la bibliothèque.

Pour cela, rendez-vous dans Settings depuis l’interface web de Koel, puis cliquez sur Save & Scan afin de lancer la synchronisation.

Ou pour cela, exécutez la commande suivante :

docker exec --user www-data koel php artisan koel:sync

Une fois la synchronisation terminée, vous verrez vos musiques apparaître dans Koel.

Si certaines informations de votre musique sont incorrectes, vous pouvez les modifier en cliquant sur les trois petits points situés à côté du morceau, puis sur Edit.

Vous accéderez alors à une page vous permettant de modifier les différentes informations du morceau.

Gestion de Koel

Ajouter un utilisateur

Vous aurez probablement besoin d’ajouter des utilisateurs à Koel. Rien de bien compliqué, connectez-vous avec un compte administrateur, puis rendez-vous dans la section Manage, située dans le menu de gauche, et cliquez sur Users.

Cliquez ensuite sur Add pour commencer la création du compte utilisateur.

Renseignez ensuite les informations, le nom (Name), l’adresse e-mail (Email) et le mot de passe (Password).

Choisissez ensuite le rôle à attribuer au compte, Admin pour un administrateur ou User pour un utilisateur standard. Validez et le compte sera immédiatement créé.

💡
La version Koel Plus propose davantage de rôles, ce qui peut être particulièrement utile si, comme moi, vous prévoyez d’accueillir plusieurs personnes sur votre Koel. Deux rôles supplémentaires sont disponibles : Guest et Manager.
💡
Le rôle Guest est idéal pour les utilisateurs qui souhaitent uniquement écouter de la musique, sans pouvoir ajouter de nouveaux morceaux à la bibliothèque Koel.

Utilisation des Player mobile

Koel propose ses propres applications mobiles pour iOS et Android. Celles-ci sont toutefois payantes et disponibles au prix de 9,99 €.

Koel – Applications sur Google Play
Application mobile officielle pour Koel. Connectez-vous à votre serveur et profitez de la musique où que vous soyez !
App Koel Player - App Store
Téléchargez l’app Koel Player développée par An Phan dans l’App Store. Consultez les captures d’écran, les notes et avis, les astuces d’autres utilisateurs, et…

Je sais que le prix peut constituer un frein pour certains. Toutefois l'achat permet de soutenir le développement du projet.

⚠️
Vous pouvez également utiliser Substreamer, une solution gratuite et open source disponible sur Android et iOS. Compatible avec l’API Subsonic/OpenSubsonic prise en charge par Koel.

Pour associer votre compte Koel à l’application Koel Player, rien de plus simple, rendez-vous dans la section Profile & Preferences.

Rendez-vous ensuite dans la section QR Code afin d’afficher le code QR.

Ouvrez ensuite l’application Koel Player, puis sélectionnez l’option de connexion par code QR.

Une fois le code QR scanné, vous serez immédiatement connecté à votre compte Koel.

Je vous laisse maintenant découvrir Koel par vous-même. N’hésitez pas à rejoindre la communauté Make in Lab, nous serons ravis de vous prêter une licence Koel Plus afin que vous puissiez tester ses différentes fonctionnalités.

Nous pourrons également échanger avec vous et vous accompagner dans la mise en place d’une configuration plus avancée de Koel.


Pour nous aider à nous améliorer, n'hésitez pas à faire part de vos avis en commentaires ou même à poser vos questions si vous avez besoin d'aide supplémentaire.

Vous pouvez également partager cet article et nous suivre sur Twitter/X :

x.com

ainsi que sur Instagram :

Makeinlab (@ma.in.lab) • Instagram photos and videos
20 Followers, 5 Following, 79 Posts - See Instagram photos and videos from Makeinlab (@ma.in.lab)

Et même sur TikTok :

@makeinlab.fr

Lire plus