Comment installer Koel Music Streaming Server sur Ubuntu 18.04

Koel est une application web de streaming audio personnel écrite en Vue.js du côté client et en Laravel du côté serveur. Ce tutoriel explique comment installer Koel sur un serveur basé sur Ubuntu 18.04.

Conditions préalables

  • Un serveur fonctionnant sous Ubuntu 18.04.

  • Un utilisateur sudo non-root.

  • Assure-toi que tout est mis à jour.

    $ sudo apt update && sudo apt upgrade
  • Quelques paquets dont ton système a besoin.

    $ sudo apt install ca-certificates curl unzip build-essential libpng-dev gnupg2 lsb-release ufw -y

    Certains de ces paquets sont peut-être déjà installés sur ton système.

Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Avant d’activer le pare-feu, nous devons autoriser les ports SSH, sinon nous serons bloqués dans notre serveur.

$ sudo ufw allow OpenSSH

Active le pare-feu.

$ sudo ufw enable

Autorise les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Vérifie l’état du pare-feu.

$ sudo ufw status

Tu devrais voir une sortie similaire.

Status: active
To                         Action     From
--                         ------      ----
OpenSSH                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                   ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)               ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Installer Git

Nous allons commencer par installer Git.

$ sudo apt install git -y
$ git config --global user.name "Your Name"
$ git config --global user.email "youre[email protected]"

Installe Node.js

Nous allons installer Node 10.x au lieu de la dernière version 12.x car Koel emballe certaines bibliothèques obsolètes qui ne sont pas compatibles avec Node 12.

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs

Vérifie si Node est correctement installé.

$ node --version

Tu devrais voir une sortie similaire.

v10.17.0

Installe Yarn

Installe le gestionnaire de paquets Yarn.

$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt update && sudo apt install -y yarn

Vérifie si Yarn fonctionne correctement.

$ yarn --version

Tu devrais voir un résultat similaire.

1.19.1

Installe PHP

Installe PHP 7.2 avec toutes ses extensions requises.

$ sudo apt install -y php7.2-fpm php7.2-mbstring php7.2-bcmath php7.2-xml php7.2-mysql php7.2-curl php7.2-zip

Vérifie si PHP fonctionne correctement.

$ php --version

Tu devrais voir un résultat similaire.

PHP 7.2.24-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Oct 24 2019 18:29:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
  with Zend OPcache v7.2.24-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Installe MariaDB

MariaDB est un remplacement direct de MySQL, ce qui signifie que les commandes pour exécuter et faire fonctionner MariaDB sont les mêmes que celles de MySQL. Pour installer MariaDB, exécute les commandes suivantes.

$ sudo apt install mariadb-server

Vérifie si MariaDB s’est installé correctement.

$ mysql --version

Tu devrais voir la sortie suivante.

mysql  Ver 15.1 Distrib 10.1.41-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Exécute la commande suivante pour effectuer la configuration par défaut, comme donner un mot de passe root, supprimer les utilisateurs anonymes, interdire la connexion root à distance et supprimer les tables de test. Entre oui pour tout et configure un mot de passe root.

$ sudo mysql_secure_installation

Il y a une mise en garde concernant la configuration du mot de passe root. Par défaut, MariaDB permet aux utilisateurs root du système de se connecter à MariaDB sans mot de passe. Mais si tu comptes utiliser une application tierce pour accéder à la racine, un mot de passe est indispensable, sinon des applications comme PHPMyAdmin échoueront. Pour cela, tu dois désactiver l’authentification par plugin qui est l’option par défaut sur MariaDB.

Pour désactiver l’authentification par plugin et restaurer le mot de passe root, entre d’abord dans l’invite MySQL en utilisant la commande suivante.

$ sudo mysql -u root

Ensuite, entre les commandes suivantes pour désactiver l’authentification par plugin.

use mysql;
update user set plugin='' where User='root';
flush privileges;
exit

Après cela, redémarre ton service MariaDB.

$ sudo systemctl restart mariadb.service

C’est tout. La prochaine fois que tu veux te connecter à MySQL, utilise la commande suivante

$ sudo mysql -u root -p

Saisis ton mot de passe root lorsque tu y es invité.

Configurer MariaDB pour Koel

Nous devons maintenant configurer une base de données à utiliser pour l’application Koel. Pour cela, connecte-toi à l’invite MySQL. Nous supposerons que tu utilises la méthode d’authentification par défaut de MariaDB ( c’est-à-dire sans utiliser le mot de passe root) pour le reste du tutoriel.

$ sudo mysql -u root

Une fois à l’invite, entre les commandes suivantes qui créeront une base de données nommée koelmusic et un utilisateur de base de données nommé koeluser et lui donneront accès à la base de données.

mysql> CREATE DATABASE koelmusic;
mysql> CREATE USER 'koeluser'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT ALL PRIVILEGES ON koelmusic.* TO 'koeluser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

Installe Nginx

Installe le serveur Nginx.

$ sudo apt install nginx

Vérifie s’il fonctionne correctement.

$ nginx -v

Tu devrais voir la sortie suivante.

nginx version: nginx/1.14.0 (Ubuntu)

Exécute la commande suivante pour ajouter un fichier de configuration pour Koel.

$ sudo nano /etc/nginx/sites-available/koel.conf

Colle le code suivant dans l’éditeur.

server {
 listen         *:80;
 server_name     koel.example.com;
 root           /var/www/koel;
 index           index.php;

 gzip           on;
 gzip_types     text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json;
 gzip_comp_level 9;

 # Whitelist only index.php, robots.txt, and some special routes
 if ($request_uri !~ ^/$|index\.php|robots\.txt|(public|api)/|remote|api-docs|sw\.js) {
   return 404;
}

 location /media/ {
   internal;

   alias       $upstream_http_x_media_root;

   access_log /var/log/nginx/koel.access.log;
   error_log /var/log/nginx/koel.error.log;
}

 location / {
   try_files   $uri $uri/ /index.php?$args;
}

 location ~ \.php$ {
   try_files $uri $uri/ /index.php?$args;
   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
   fastcgi_index index.php;
   fastcgi_split_path_info   ^(.+\.php)(/.+)$;
   fastcgi_intercept_errors on;
   include fastcgi_params;
}
}

Ce fichier suppose que nous installerons Koel sur le domaine koel.example.com et dans le répertoire /var/www/koel.

Active ce fichier de configuration en le liant au répertoire sites-enabled répertoire.

$ sudo ln -s /etc/nginx/sites-available/koel.conf /etc/nginx/sites-enabled/

Teste la configuration.

$ sudo nginx -t

Tu devrais voir la sortie suivante indiquant que ta configuration est correcte.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Recharge le service Nginx.

$ sudo systemctl reload nginx

Installer Composer

C’est la dernière chose dont nous avons besoin avant de passer à l’installation.

Entre les commandes suivantes pour installer Composer.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer

Vérifie s’il fonctionne correctement.

$ composer --version

Tu devrais voir la sortie suivante.

Composer version 1.9.1 2019-11-01 17:20:17

Installer Koel

Crée un dossier racine de document vide pour Koel.

$ sudo mkdir -p /var/www/koel

L’adresse -p garantit que les répertoires parents var et www sont automatiquement créés s’ils n’existent pas.

Navigue jusqu’au dossier racine du document.

$ cd /var/www/koel

Change la propriété de la racine du document à user qui est l’utilisateur non-root que nous avons utilisé pour le tutoriel.

$ sudo chown -R user:user /var/www/koel

Clone le dépôt Git de Koel et vérifie sa dernière version. Tu peux vérifier la dernière version à partir de sa page de versions.

$ git clone --recurse-submodules https://github.com/phanan/koel.git .
$ git checkout v4.1.1

Installe les dépendances.

$ composer install

Exécute la commande suivante pour configurer la base de données et le compte administrateur. Saisis mysql comme type de base de données, ignore le port et entre les informations d’identification de la base de données que nous avons créées ci-dessus. Pour le dossier média, tu peux entrer quelque chose comme /home/user/songs.

$ php artisan koel:init

Redonne à l’utilisateur la propriété du dossier racine du document. www-data de l’utilisateur.

$ sudo chown -R www-data:www-data /var/www/koel

La configuration est maintenant terminée. Ouvre koel.example.com dans ton navigateur et connecte-toi avec les informations d’identification que tu as créées ci-dessus et commence le streaming. Le site Web de Koel est également accessible via le mobile.

Configurer Koel

Il existe d’autres détails que tu peux configurer en modifiant le fichier .env avec la commande suivante.

$ sudo nano /var/www/koel/.env

Ici, tu peux entrer tes détails SMTP, configurer Youtube et Last.fm pour Koel et faire beaucoup d’autres choses.

Recharge le serveur Nginx pour appliquer les modifications.

Si tu veux réinitialiser ton mot de passe d’administrateur, tu peux le faire en envoyant la commande suivante.

$ php artisan koel:admin:change-password

Si tu veux rechercher les fichiers mis à jour dans la médiathèque, tu peux le faire en envoyant la commande suivante.

$ php artisan koel:sync

Tu devrais voir la sortie suivante.

Koel syncing started.
953/953 [????????????????????????????] 100%
Completed! 944 new or updated song(s), 0 unchanged song(s), and 9 invalid file(s).

Suffixe la commande avec -v qui te donnera plus de détails comme les erreurs de synchronisation.

Tu peux même définir cette commande comme une tâche cron, par exemple, pour qu’elle soit exécutée tous les minuit. Pour cela, exécute la commande suivante.

$ crontab -e

Sélectionne 1(nano) comme éditeur.

Colle la ligne suivante à la fin du fichier.

0 0 * * * cd /var/www/koel && /usr/bin/php artisan koel:sync >/dev/null 2>&1

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité. Maintenant, ta médiathèque sera synchronisée tous les minuits.

Pour plus de choses, consulte la documentation officielle de documentation Koel.

Configurer HTTPS à l’aide de Let’s Encrypt

Pour utiliser Let’s Encrypt, nous devons installer l’application Certbot paquet.

Ajoute le référentiel.

$ sudo add-apt-repository ppa:certbot/certbot

Installe Certbot.

$ sudo apt install python-certbot-nginx

Installe le certificat.

$ sudo certbot --nginx -d koel.example.com

Si c’est la première fois que tu utilises l’outil sur ce serveur, tu dois accepter les conditions et entrer ton adresse e-mail. Dis non lorsqu’on te demande si tu veux partager ton adresse e-mail avec la fondation EFF.

Si tu réussis, certbot te demandera comment tu veux configurer tes paramètres HTTPS.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Sélectionne 2 et appuie sur ENTER. Ton certificat est maintenant installé et activé. Ton certificat se renouvellera automatiquement dans 90 jours.

Conclusion

Ceci conclut notre tutoriel. Tu peux diffuser des médias en streaming à partir de ton serveur pour ton plus grand plaisir.

Vous aimerez aussi...