Logo Koel

Installer Koel sur Debian 10

Nous allons voir ici comment installer facilement et rapidement Koel sur Debian 10 « buster ».

Koel est un serveur personnel de diffusion musical, qui marche. (c’est le slogan)

Malheureusement, le projet souffre d’un problème récurant dans les créations open-source, à savoir : Ce projet est génial mais la documentation officielle bien moins.
De ce fait, si vous la suivez, aucune chance d’arrivé à l’installer sans se prendre la tête pendant un mois.

Mais après quelques tentatives, de fausses joies, réinstallations d’OS, arrachages de cheveux, recherches en ligne etc, avec l’aide de Rémy, une procédure à pu voir le jour.

Commençons !

Installation des prérequis :

apt install -y build-essential sudo dirmngr wget curl vim git unzip nginx curl build-essential libpng-dev gcc make ffmpeg -y

PHP et ses dépendances utiles :

apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-tokenizer openssl php-json -y

Nous allons maintenant crée un utilisateurs pour l’installation, passer en root pourrait causer quelques soucis :

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

Vérifier que le serveur est à l’heure dans la bonne localisation :

sudo dpkg-reconfigure tzdata

Installer et sécuriser mariadb  :

sudo apt install -y mariadb-server
sudo mysql_secure_installation

Se connecter à mariadb avec le compte root et le mot de passe mis précédemment pour créer la base de donnée nécessaire à Koel :

CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

Installer nginx en serveur web :

sudo apt install -y nginx

Nous allons ensuite crée le fichier de configuration du site web, remplacer server_name selon votre serveur :

sudo vim /etc/nginx/sites-available/koel.conf
server {
  listen          *:80;
  server_name     koel.dev;
  root            /var/www/koel/public;
  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;

  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.3-fpm.sock;
    fastcgi_index             index.php;
    fastcgi_split_path_info   ^(.+\.php)(/.+)$;
    fastcgi_intercept_errors  on;
    include                   fastcgi_params;
  }
}

Déplacer le fichier des sites configurés vers les sites disponibles, puis tester que tout est fonctionnel :

sudo ln -s /etc/nginx/sites-available/koel.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx.service

Installer nodejs :

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

Installer 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
apt install --no-install-recommends yarn

Installer composer :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

Créer le dossier d’installation de Koel et mettre les droits pour l’utilisateur créer plus tôt :

sudo mkdir -p /var/www/koel
cd /var/www/koel
sudo chown -R johndoe:johndoe /var/www/koel

Télécharger et installer Koel :
Chaque ligne est à rentrer l’une après l’autre.

composer global require laravel/installer
git clone --recurse https://github.com/phanan/koel.git .
npm install
npm audit fix
npm audit fix --force
git branch
composer install

Modifier le fichier de configuration de Koel selon votre installation :
Modifier les données ci-dessous, les mots de passe seront chiffré une fois l’installation fini :

sudo vim .env
#Connection à votre base de donnée
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=username
DB_PASSWORD=password

# Administrateur de Koel pour l'interface web
ADMIN_NAME="Koel Admin"
ADMIN_EMAIL= user@localhost
ADMIN_PASSWORD=password

#Adresse de votre serveur Koel
APP_URL=http://example.com

Lancer le script d’installation final

php artisan koel:init --no-interaction

Remettre les droits à nginx sur le dossier de Koel :

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

Et voilà, votre serveur Koel est désormais installé, vous devriez pouvoir vous rentre sur votre navigateur web à l’adresse IP/DNS pour vous connectez avec l’utilisateur rentré dans le fichier .env

Ecran de connexion de Koel

Il ne vous reste plus qu’à mettre vos fichier musicaux dans un répertoire spécifique et d’indiquer ce répertoire dans l’interface web.

Je vous conseille de mettre le serveur web en https avec certbot ou l’autorité de certifications de votre choix.

Enjoy !