Dernière modification le : Sep 8 2024 at 10:46 AM

Page en cours de réécriture

Ce tutoriel n’est plus très à jour et néccessite une révision depuis le passage à la version 7

Koel est un service de streaming audio personnel avec une interface web, il est écrit en Vue du côté client et en Laravel du côté serveur.

Préparation du serveur

On maj un coup, puis on install la base :

sudo apt update && sudo apt upgrade
sudo apt install vim ca-certificates curl unzip build-essential libpng-dev gnupg2 lsb-release openssl

Php

J’utilise Postgresql vous pouvez utiliser Mysql/MariaDB aussi, dans ce cas installer le paquet php-mysql.

À partir de la version 7.0.0 il vous faudra au minimum PHP version 8.1 et Node version 18

sudo apt install -y php-fpm php-mbstring php-bcmath php-xml php-pgsql php-curl php-zip php-xsl php-gd php-opcache

Postgresql

su - postgres
psql
CREATE USER koel WITH PASSWORD 'mot_de_passe';
CREATE DATABASE koel;
GRANT ALL PRIVILEGES ON DATABASE koel to koel;

Si vous choisissez d’installer Koel depuis les sources Git, il faudra installer Nodejs, Yarn et Composer.

Nodejs

Ici on utilise la version 16 qui est la dernière LTS Version au moment de l’écriture de ces lignes.

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

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

Installer Composer

sudo apt install commposer

Puis on vérifie que tout fonctionne.

composer --version
> Composer version 2.1.12 2021-11-09 16:02:04

Installer Koel

Version pré-compilé

Pour installer la version avec les assets pré-compilé, rien de bien long :

Verifier la dernière version en date et ajuster la ligne.

wget https://github.com/koel/koel/releases/download/v7.0.8/koel-v7.0.8.zip && unzip koel-v7.0.8.zip
sudo chown -R your_user:your_user /var/www/koel
cd koel/

Et lancer le script d’installation, qui vous demandera de renseigner la base de donnée utilisé et les infos de cette dernière.

php artisan koel:init --no-assets

À la fin celui-ci vous donnera l’email et le mot de passe pour vous connecter.

On repasse le dossier à www-data dans la foulée.

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

Installation depuis les sources

On part du principe que Koel sera installé dans le dossier /var/www/...

mkdir koel
cd koel/
git clone https://github.com/koel/koel.git .
git checkout latest
composer install
php artisan koel:init

Configuration

Il va falloir étoffer le .env créé après le koel:init --no-assets (version pré-complié) ou php artisan koel:init (version git), il ne contient que les informations concernant la base de donnée pour le moment. vous trouverez d’autres options dans le .env.example.

Exemple de configuration :

APP_NAME=Koel

DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=user
DB_USERNAME=user
DB_PASSWORD=mot_de_passe_user

# By default, Koel ignores dot files and folders. This greatly improves performance if your media
# root have folders like .git or .cache. If by any chance your media files are under a dot folder,
# set the following setting to false.
IGNORE_DOT_FILES=true

APP_ENV=production
APP_DEBUG=true
APP_URL=http//votre_adresse.com

# The streaming method.
# Can be either 'php' (default), 'x-sendfile', or 'x-accel-redirect'
# See https://docs.koel.dev/#streaming-music for more information.
# Note: This setting doesn't have effect if the media needs transcoding (e.g. FLAC).
# ##################################################
# IMPORTANT: It's HIGHLY recommended to use 'x-sendfile' or 'x-accel-redirect' if
# you plan to use the Koel mobile apps.
# ##################################################
STREAMING_METHOD=php

# The bit rate of the output mp3 stream. Higher value results in better quality,
# but slower streaming and more bandwidth.
OUTPUT_BIT_RATE=320

# Whether to allow song downloading.
# Note that if you're downloading more than one song, Koel will zip them up
# using PHP's ZipArchive. So if the module isn't available in the current
# environment, such a download will (silently) fail.
ALLOW_DOWNLOAD=true

# If this is set to true, the query to get artist, album, and song information will be cached.
# This can give a boost to Koel's boot time, especially if your library is huge.
# However, the cache deserialization process can be memory sensitive, so if you encounter
# errors, try setting this to false.
CACHE_MEDIA=true

Nginx

Si vous ne comptez pas utiliser Koel autrement qu’en réseau local ou que vous utilisez Caddy, vous pouvez passer cette étape.

Si cela n’est pas déjà fait ont installe nginx mais aussi certbot python3-certbot-nginx qui serviront pour la suite :

sudo apt install nginx certbot python3-certbot-nginx

Puis copier le nginx.conf.example qui se trouve dans le dossier de koel dans /etc/nginx/conf.d/, puis on adapte les parties dont on a besoin.

sudo cp /var/www/html/koel/nginx/conf.example /etc/nginx/conf.d/
sudo mv /etc/nginx.conf.d/nginx/conf.example /etc/nginx/conf.d/koel.conf

Cela devrait ressembler a ça une fois arrangé.

server {
  listen          80;
  server_name     mon_super_domaine.tld; # Votre nom de domaine.
  root            /var/www/koel/public; # Mettre le chemin vers le dossier public de 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;

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

Puis on vérifie que tout va bien et on relance.

nginx -t
systemctl restart nginx

HTTPS via Certbot

Si vous ne comptez pas utiliser Koel autrement qu’en réseau local ou que vous utilisez Caddy, vous pouvez passer cette étape.

sudo apt install certbot python3-certbot-nginx

Générons ensuite le tout.

sudo certbot --nginx -d votre_adresse.com
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):

On sélectionne le 2 et zou, rendez-vous sur votre_adresse.com et voilà, reste plus qu’a vous connecter, changer le mail, le mdp et pseudo du compte admin.

Caddy

Coming Soon