Cómo instalar el servidor de streaming de música Koel en Ubuntu 18.04
Koel es una aplicación de streaming de audio personal basada en la web y escrita en Vue.js en el lado del cliente y Laravel en el lado del servidor. Este tutorial cubrirá cómo instalar Koel en un servidor basado en Ubuntu 18.04.
Requisitos previos
-
Un servidor con Ubuntu 18.04.
-
Un usuario sudo no root.
-
Asegúrate de que todo está actualizado.
$ sudo apt update && sudo apt upgrade
-
Pocos paquetes que necesite tu sistema.
$ sudo apt install ca-certificates curl unzip build-essential libpng-dev gnupg2 lsb-release ufw -y
Algunos de estos paquetes pueden estar ya instalados en tu sistema.
Configurar el cortafuegos
El primer paso es configurar el cortafuegos. Antes de habilitar el cortafuegos, tenemos que permitir los puertos SSH, de lo contrario nos bloquearemos en nuestro servidor.
$ sudo ufw allow OpenSSH
Habilita el cortafuegos.
$ sudo ufw enable
Permite los puertos HTTP y HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Comprueba el estado del cortafuegos.
$ sudo ufw status
Deberías ver una salida similar.
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)
Instalar Git
Empezaremos por instalar Git.
$ sudo apt install git -y
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Instala Node.js
Instalaremos Node 10.x en lugar de la última 12.x porque Koel empaqueta algunas bibliotecas obsoletas que no son compatibles con Node 12.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Comprueba si Node está bien instalado.
$ node --version
Deberías ver una salida similar.
v10.17.0
Instala Yarn
Instala el gestor de paquetes 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
Comprueba si Yarn funciona correctamente.
$ yarn --version
Deberías ver una salida similar.
1.19.1
Instala PHP
Instala PHP 7.2 con todas sus extensiones necesarias.
$ 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
Comprueba si PHP funciona correctamente.
$ php --version
Deberías ver un resultado similar.
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
Instalar MariaDB
MariaDB es un sustituto de MySQL, lo que significa que los comandos para ejecutar y hacer funcionar MariaDB son los mismos que los de MySQL. Para instalar MariaDB emite los siguientes comandos.
$ sudo apt install mariadb-server
Comprueba si MariaDB se ha instalado correctamente.
$ mysql --version
Deberías ver la siguiente salida.
mysql Ver 15.1 Distrib 10.1.41-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Ejecuta el siguiente comando para realizar la configuración por defecto, como dar una contraseña de root, eliminar los usuarios anónimos, no permitir el inicio de sesión de root de forma remota y eliminar las tablas de prueba. Introduce el sí para todo y configura una contraseña de root.
$ sudo mysql_secure_installation
Hay una advertencia sobre la configuración de la contraseña de root. MariaDB permite por defecto que los usuarios root del sistema se conecten a MariaDB sin contraseña. Pero si vas a utilizar una aplicación de terceros para acceder a través de la raíz, la contraseña es imprescindible, de lo contrario aplicaciones como PHPMyAdmin fallarán. Para ello, tienes que desactivar la autenticación basada en plugins, que es la opción por defecto en MariaDB.
Para deshabilitar la autenticación por plugins y restaurar la contraseña de root, entra primero en el prompt de MySQL utilizando el siguiente comando.
$ sudo mysql -u root
Ahora introduce los siguientes comandos para desactivar la autenticación por plugins.
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit
Después de esto reinicia tu servicio MariaDB.
$ sudo systemctl restart mariadb.service
Eso es todo. La próxima vez que quieras entrar en MySQL, utiliza el siguiente comando
$ sudo mysql -u root -p
Introduce tu contraseña de root cuando se te pida.
Configurar MariaDB para Koel
Ahora tenemos que configurar una base de datos para utilizarla en la aplicación Koel. Para ello, entra en el prompt de MySQL. Asumiremos que estás usando el método de autenticación por defecto de MariaDB (es decir, sin usar la contraseña de root) para el resto del tutorial.
$ sudo mysql -u root
Una vez en el prompt, introduce los siguientes comandos que configurarán una base de datos llamada koelmusic y un usuario de base de datos llamado koeluser y le dará acceso a la base de datos.
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
Instalar Nginx
Instala el servidor Nginx.
$ sudo apt install nginx
Comprueba que funciona correctamente.
$ nginx -v
Deberías ver la siguiente salida.
nginx version: nginx/1.14.0 (Ubuntu)
Ejecuta el siguiente comando para añadir un archivo de configuración para Koel.
$ sudo nano /etc/nginx/sites-available/koel.conf
Pega el siguiente código en el editor.
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;
}
}
Este archivo supone que vamos a instalar Koel en el dominio koel.example.com
y en el directorio /var/www/koel
.
Activa este archivo de configuración vinculándolo al directorio sites-enabled
directorio.
$ sudo ln -s /etc/nginx/sites-available/koel.conf /etc/nginx/sites-enabled/
Prueba la configuración.
$ sudo nginx -t
Deberías ver la siguiente salida que indica que tu configuración es correcta.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Recarga el servicio Nginx.
$ sudo systemctl reload nginx
Instalar Composer
Esto es lo último que necesitamos antes de pasar a la instalación.
Introduce los siguientes comandos para instalar 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
Comprueba si funciona correctamente.
$ composer --version
Deberías ver la siguiente salida.
Composer version 1.9.1 2019-11-01 17:20:17
Instalar Koel
Crea una carpeta raíz de documentos vacía para Koel.
$ sudo mkdir -p /var/www/koel
El comando -p asegura que los directorios padre var
y www
se creen automáticamente si no existen.
Navega hasta la carpeta raíz del documento.
$ cd /var/www/koel
Cambia la propiedad de la raíz del documento a user
que es el usuario no root que hemos utilizado para el tutorial.
$ sudo chown -R user:user /var/www/koel
Clona el repositorio Git de Koel y comprueba su última versión. Puedes comprobar la última versión desde su página de versiones.
$ git clone --recurse-submodules https://github.com/phanan/koel.git .
$ git checkout v4.1.1
Instala las dependencias.
$ composer install
Ejecuta el siguiente comando para configurar la base de datos y la cuenta de administrador. Introduce mysql como tipo de base de datos, omite el puerto e introduce las credenciales de la base de datos que creamos anteriormente. Para la carpeta de medios, puedes introducir algo como /home/user/songs
.
$ php artisan koel:init
Cambia la propiedad de la carpeta raíz de los documentos al www-data
usuario.
$ sudo chown -R www-data:www-data /var/www/koel
La configuración ya está completa. Abre koel.example.com
en tu navegador e inicia la sesión con las credenciales que has creado anteriormente y empieza a transmitir. El sitio web de Koel también es accesible a través del móvil.
Configurar Koel
Hay más detalles que puedes configurar editando el archivo .env
con el siguiente comando.
$ sudo nano /var/www/koel/.env
Aquí puedes introducir tus datos SMTP, configurar Youtube y Last.fm para Koel y hacer muchas más cosas.
Recarga el servidor Nginx para aplicar los cambios.
Si quieres restablecer tu contraseña de administrador, puedes hacerlo emitiendo el siguiente comando.
$ php artisan koel:admin:change-password
Si quieres escanear la biblioteca multimedia en busca de archivos actualizados, puedes hacerlo mediante el siguiente comando.
$ php artisan koel:sync
Deberías ver la siguiente salida.
Koel syncing started.
953/953 [????????????????????????????] 100%
Completed! 944 new or updated song(s), 0 unchanged song(s), and 9 invalid file(s).
Añade al comando el sufijo -v que te dará más detalles como los errores de sincronización.
Incluso puedes configurar este comando como una tarea cron, por ejemplo, para que se ejecute cada medianoche. Para ello, ejecuta el siguiente comando.
$ crontab -e
Selecciona 1(nano) como editor.
Pega la siguiente línea al final del archivo.
0 0 * * * cd /var/www/koel && /usr/bin/php artisan koel:sync >/dev/null 2>&1
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida. Ahora, tu biblioteca multimedia se sincronizará cada medianoche.
Para más cosas, consulta la documentación oficial de documentación de Koel.
Configuración de HTTPS con Let’s Encrypt
Para usar Let’s encrypt, necesitamos instalar el programa Certbot .
Añade el repositorio.
$ sudo add-apt-repository ppa:certbot/certbot
Instala Certbot.
$ sudo apt install python-certbot-nginx
Instala el certificado.
$ sudo certbot --nginx -d koel.example.com
Si es la primera vez que utilizas la herramienta en este servidor, tienes que aceptar las condiciones e introducir tu dirección de correo electrónico. Di no cuando te pregunten si quieres compartir tu correo electrónico con la fundación EFF.
Si lo consigues, certbot
te preguntará cómo quieres configurar tus ajustes 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):
Selecciona 2 y luego pulsa ENTER
. Tu certificado ya está instalado y activado. Tu certificado se renovará automáticamente en 90 días.