Koel es una aplicación de transmisión de audio personal basada en la web 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
-
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 tu sistema necesita.
$ sudo apt install ca-certificates curl unzip build-essential libpng-dev gnupg2 lsb-release ufw -y
Es posible que algunos de estos paquetes ya estén instalados en su sistema.
Configurar cortafuegos
El primer paso es configurar el cortafuegos. Antes de habilitar el firewall, debemos permitir los puertos SSH; de lo contrario, nuestro servidor quedará bloqueado.
$ sudo ufw allow OpenSSH
Habilite el cortafuegos.
$ sudo ufw enable
Permitir puertos HTTP y HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Compruebe el estado del cortafuegos.
$ sudo ufw status
Debería ver un resultado 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
Comenzaremos instalando Git.
$ sudo apt install git -y
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Instalar Node.js
Instalaremos Node 10.x en lugar de la última versión 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
Compruebe si Node está correctamente instalado.
$ node --version
Debería ver un resultado similar.
v10.17.0
Instalar hilo
Instale el administrador 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
Compruebe si Yarn funciona correctamente.
$ yarn --version
Debería ver un resultado similar.
1.19.1
Instalar PHP
Instale PHP 7.2 con todas las extensiones requeridas.
$ 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
Compruebe si PHP funciona correctamente.
$ php --version
Debería 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 reemplazo directo de MySQL, lo que significa que los comandos para ejecutar y operar MariaDB son los mismos que para MySQL. Para instalar MariaDB, ejecute los siguientes comandos.
$ sudo apt install mariadb-server
Compruebe si MariaDB se instaló correctamente.
$ mysql --version
Debería ver el siguiente resultado.
mysql Ver 15.1 Distrib 10.1.41-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Ejecute el siguiente comando para realizar la configuración predeterminada, como proporcionar una contraseña de root, eliminar usuarios anónimos, prohibir el inicio de sesión de root de forma remota y descartar tablas de prueba. Introduzca sí para todo y configurar una contraseña de root.
$ sudo mysql_secure_installation
Hay una advertencia con la configuración de la contraseña de root. MariaDB por defecto permite a los usuarios raíz del sistema iniciar sesión en MariaDB sin una contraseña. Pero si va a utilizar una aplicación de terceros para acceder a través de la raíz, una contraseña es imprescindible, de lo contrario, las aplicaciones como PHPMyAdmin fallarán. Para ello, debe deshabilitar la autenticación basada en complementos, que es la opción predeterminada en MariaDB.
Para deshabilitar la autenticación del complemento y restaurar la contraseña raíz, ingrese primero el indicador de MySQL usando el siguiente comando.
$ sudo mysql -u root
Ahora ingrese los siguientes comandos para deshabilitar la autenticación del complemento.
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit
Después de esto, reinicie su servicio MariaDB.
$ sudo systemctl restart mariadb.service
Eso es todo. La próxima vez que desee iniciar sesión en MySQL, use el siguiente comando
$ sudo mysql -u root -p
Introduzca su contraseña raíz cuando se le solicite.
Configurar MariaDB para Koel
Ahora necesitamos configurar una base de datos para usar con la aplicación Koel. Para hacer eso, inicie sesión en el indicador de MySQL. Asumiremos que está utilizando el método de autenticación predeterminado de MariaDB (es decir, sin usar la contraseña de root) para el resto del tutorial.
$ sudo mysql -u root
Una vez que se le solicite, ingrese los siguientes comandos que configurarán una base de datos llamada koelmusic y un usuario de base de datos llamado koeluser y concédale 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
Instale el servidor Nginx.
$ sudo apt install nginx
Compruebe si funciona correctamente.
$ nginx -v
Debería ver el siguiente resultado.
nginx version: nginx/1.14.0 (Ubuntu)
Ejecute el siguiente comando para agregar un archivo de configuración para Koel.
$ sudo nano /etc/nginx/sites-available/koel.conf
Pegue 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 asume que instalaremos Koel en el dominio koel.example.com
y en el directorio /var/www/koel
.
Active este archivo de configuración vinculándolo a sites-enabled
directorio.
$ sudo ln -s /etc/nginx/sites-available/koel.conf /etc/nginx/sites-enabled/
Pruebe la configuración.
$ sudo nginx -t
Debería ver el siguiente resultado que indica que su 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
Vuelva a cargar el servicio Nginx.
$ sudo systemctl reload nginx
Instalar compositor
Esto es lo último que necesitamos antes de continuar con la instalación.
Ingrese 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
Compruebe si funciona correctamente.
$ composer --version
Debería ver el siguiente resultado.
Composer version 1.9.1 2019-11-01 17:20:17
Instalar Koel
Cree una carpeta raíz de documentos vacía para Koel.
$ sudo mkdir -p /var/www/koel
La -p El argumento asegura que los directorios principales var
y www
se crean automáticamente si no existen.
Navegue a la carpeta raíz del documento.
$ cd /var/www/koel
Cambiar la propiedad de la raíz del documento a user
que es el usuario no root que hemos usado para el tutorial.
$ sudo chown -R user:user /var/www/koel
Clone el repositorio de Koel Git y obtenga su última versión. Puede consultar la última versión desde su página de lanzamientos.
$ git clone --recurse-submodules https://github.com/phanan/koel.git .
$ git checkout v4.1.1
Instala las dependencias.
$ composer install
Ejecute el siguiente comando para configurar la base de datos y la cuenta de administrador. Introduzca mysql como tipo de base de datos, omita el puerto e ingrese las credenciales de la base de datos que creamos anteriormente. Para la carpeta multimedia, puede ingresar algo como /home/user/songs
.
$ php artisan koel:init
Cambie la propiedad de la carpeta raíz del documento a www-data
usuario.
$ sudo chown -R www-data:www-data /var/www/koel
La configuración ahora está completa. Abra koel.example.com
en su navegador e inicie sesión con las credenciales que creó anteriormente y comience a transmitir. También se puede acceder al sitio web de Koel a través de dispositivos móviles.
Configurar Koel
Hay más detalles que puede configurar editando el .env
archivo con el siguiente comando.
$ sudo nano /var/www/koel/.env
Aquí puede ingresar sus detalles SMTP, configurar Youtube y Last.fm para Koel y hacer muchas más cosas.
Vuelva a cargar el servidor Nginx para implementar los cambios.
Si desea restablecer su contraseña de administrador, puede hacerlo emitiendo el siguiente comando.
$ php artisan koel:admin:change-password
Si desea escanear la biblioteca de medios en busca de archivos actualizados, puede hacerlo con el siguiente comando.
$ php artisan koel:sync
Debería ver el siguiente resultado.
Koel syncing started.
953/953 [????????????????????????????] 100%
Completed! 944 new or updated song(s), 0 unchanged song(s), and 9 invalid file(s).
Agregue el sufijo al comando con -v marca que le dará más detalles como errores de sincronización.
Incluso puede configurar este comando como un trabajo cron, por ejemplo, para que se ejecute cada medianoche. Para hacerlo, ejecute el siguiente comando.
$ crontab -e
Seleccione 1(nano ) como su editor.
Pegue la siguiente línea al final del archivo.
0 0 * * * cd /var/www/koel && /usr/bin/php artisan koel:sync >/dev/null 2>&1
Guarde el archivo presionando Ctrl + X e ingresando Y Cuando se le solicite. Ahora, su biblioteca multimedia se sincronizará cada medianoche.
Para obtener más información, consulte la documentación oficial de Koel.
Configurar HTTPS usando Let's Encrypt
Para usar Let's encrypt, necesitamos instalar el Certbot paquete.
Agrega el repositorio.
$ sudo add-apt-repository ppa:certbot/certbot
Instale Certbot.
$ sudo apt install python-certbot-nginx
Instale el certificado.
$ sudo certbot --nginx -d koel.example.com
Si es la primera vez que usa la herramienta en este servidor, debe aceptar los términos e ingresar su dirección de correo electrónico. Di no cuando se le pregunte si desea compartir su correo electrónico con la fundación EFF.
Si tiene éxito, certbot
le preguntará cómo le gustaría configurar sus ajustes de 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):
Seleccione 2 y luego presione ENTER
. Su certificado ya está instalado y activado. Su certificado se renovará automáticamente en 90 días.
Conclusión
Esto concluye nuestro tutorial. Puede transmitir medios desde su servidor al contenido de su corazón.