Installation des Koel-Musik-Streaming-Servers unter Ubuntu 18.04

Koel ist eine webbasierte persönliche Audio-Streaming-Anwendung, die in Vue.js auf der Client-Seite und Laravel auf der Server-Seite geschrieben wurde. Dieses Tutorial behandelt die Installation von Koel auf einem Ubuntu 18.04-basierten Server.

Voraussetzungen

  • Ein Server mit Ubuntu 18.04.

  • Ein Nicht-Root-Sudo-Benutzer.

  • Stellen Sie sicher, dass alles aktualisiert wird.

    $ sudo apt update && sudo apt upgrade
  • Wenige Pakete, die Ihr System benötigt.

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

    Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

Konfigurieren Sie die Firewall

Der erste Schritt ist die Konfiguration der Firewall. Bevor wir die Firewall aktivieren, müssen wir SSH-Ports zulassen, sonst werden wir von unserem Server ausgesperrt.

$ sudo ufw allow OpenSSH

Aktivieren Sie die Firewall.

$ sudo ufw enable

Erlauben Sie HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten eine ähnliche Ausgabe sehen.

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)

Git installieren

Wir werden mit der Installation von Git beginnen.

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

Installieren Sie Node.js

Wir werden Node 10.x anstelle der neuesten 12.x installieren, weil Koel einige veraltete Bibliotheken verpackt, die nicht mit Node 12 kompatibel sind.

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

Überprüfen Sie, ob Node richtig installiert ist.

$ node --version

Sie sollten eine ähnliche Ausgabe sehen.

v10.17.0

Garn installieren

Installieren Sie den Garn-Paketmanager.

$ 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

Prüfen Sie, ob Garn korrekt funktioniert.

$ yarn --version

Sie sollten eine ähnliche Ausgabe sehen.

1.19.1

Installieren Sie PHP

Installieren Sie PHP 7.2 mit allen erforderlichen Erweiterungen.

$ 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

Prüfen Sie, ob PHP korrekt funktioniert.

$ php --version

Sie sollten eine ähnliche Ausgabe sehen.

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

MariaDB installieren

MariaDB ist ein Drop-in-Ersatz für MySQL, d.h. die Befehle zum Ausführen und Betreiben von MariaDB sind die gleichen wie die für MySQL. Um MariaDB zu installieren, geben Sie die folgenden Befehle ein.

$ sudo apt install mariadb-server

Überprüfen Sie, ob MariaDB korrekt installiert ist.

$ mysql --version

Sie sollten die folgende Ausgabe sehen.

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

Führen Sie den folgenden Befehl aus, um eine Standardkonfiguration durchzuführen, wie z.B. die Vergabe eines Root-Passworts, das Entfernen anonymer Benutzer, das Sperren des Root-Logins aus der Ferne und das Löschen von Testtabellen. Geben Sie für alles „ja“ ein und richten Sie ein Root-Passwort ein.

$ sudo mysql_secure_installation

Es gibt einen Vorbehalt bei der Einrichtung des Root-Passwortes. MariaDB erlaubt es System-Root-Benutzern standardmäßig, sich ohne Passwort in MariaDB einzuloggen. Aber wenn Sie eine Anwendung eines Drittanbieters für den Zugriff über root verwenden wollen, ist ein Passwort ein Muss, sonst werden Anwendungen wie PHPMyAdmin fehlschlagen. Dafür müssen Sie die Plugin-basierte Authentifizierung deaktivieren, die die Standardoption in MariaDB ist.

Um die Plugin-Authentifizierung zu deaktivieren und das Root-Passwort wiederherzustellen, geben Sie zuerst die MySQL-Eingabeaufforderung ein, indem Sie den folgenden Befehl verwenden.

$ sudo mysql -u root

Geben Sie nun die folgenden Befehle ein, um die Plugin-Authentifizierung zu deaktivieren.

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

Starten Sie danach Ihren MariaDB-Dienst neu.

$ sudo systemctl restart mariadb.service

Das ist alles. Wenn Sie sich das nächste Mal bei MySQL anmelden möchten, verwenden Sie folgenden Befehl

$ sudo mysql -u root -p

Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden.

MariaDB für Koel konfigurieren

Jetzt müssen wir eine Datenbank für die Koel-Anwendung einrichten. Dazu müssen wir uns an der MySQL-Eingabeaufforderung anmelden. Wir gehen davon aus, dass Sie für den Rest des Tutorials die Standardauthentifizierungsmethode von MariaDB verwenden (d.h. ohne Verwendung des Root-Passworts).

$ sudo mysql -u root

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, die eine Datenbank mit dem Namen koelmusic und einen Datenbankbenutzer namens koeluser und ihm Zugang zur Datenbank gewähren.

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

Nginx installieren

Installieren Sie den Nginx-Server.

$ sudo apt install nginx

Prüfen Sie, ob er korrekt funktioniert.

$ nginx -v

Sie sollten die folgende Ausgabe sehen.

nginx version: nginx/1.14.0 (Ubuntu)

Führen Sie den folgenden Befehl aus, um eine Konfigurationsdatei für Koel hinzuzufügen.

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

Fügen Sie den folgenden Code in den Editor ein.

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;
}
}

Diese Datei geht davon aus, dass wir Koel in der Domäne koel.example.com und im Verzeichnis /var/www/koel.

Aktivieren Sie diese Konfigurationsdatei, indem Sie sie mit der sites-enabled Verzeichnis.

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

Testen Sie die Konfiguration.

$ sudo nginx -t

Sie sollten die folgende Ausgabe sehen, die anzeigt, dass Ihre Konfiguration korrekt ist.

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

Laden Sie den Nginx-Dienst neu.

$ sudo systemctl reload nginx

Installieren Sie den Composer

Das ist das Letzte, was wir brauchen, bevor wir mit der Installation beginnen.

Geben Sie die folgenden Befehle ein, um den Composer zu installieren.

$ 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

Prüfen Sie, ob er korrekt funktioniert.

$ composer --version

Sie sollten die folgende Ausgabe sehen.

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

Koel installieren

Erstellen Sie einen leeren Dokument-Stammordner für Koel.

$ sudo mkdir -p /var/www/koel

Der -p Argument stellt sicher, dass übergeordnete Verzeichnisse var und www werden automatisch erstellt, wenn sie nicht existieren.

Navigieren Sie zum Stammordner des Dokuments.

$ cd /var/www/koel

Ändern Sie den Eigentümer des Dokument-Stammordners auf user der der Nicht-Root-Benutzer ist, den wir für das Tutorial verwendet haben.

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

Klonen Sie das Koel-Git-Repository und checken Sie die neueste Version aus. Sie können die neueste Version auf der Seite mit den Veröffentlichungen überprüfen.

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

Installieren Sie die Abhängigkeiten.

$ composer install

Führen Sie den folgenden Befehl aus, um die Datenbank und das Verwaltungskonto einzurichten. Geben Sie mysql als Datenbanktyp ein, überspringen Sie den Port und geben Sie die Datenbank-Anmeldeinformationen ein, die wir oben erstellt haben. Für den Medienordner können Sie etwas wie folgt eingeben /home/user/songs.

$ php artisan koel:init

Ändern Sie den Eigentümer des Dokument-Stammordners zurück in den www-data Benutzer.

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

Die Einrichtung ist nun abgeschlossen. Öffnen Sie . koel.example.com in Ihrem Browser und melden Sie sich mit den oben erstellten Zugangsdaten an und starten Sie das Streaming. Die Website von Koel ist auch über das Handy zugänglich.

Koel konfigurieren

Es gibt weitere Details, die Sie durch Bearbeiten der .env Datei mit folgendem Befehl.

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

Hier können Sie Ihre SMTP-Details eingeben, Youtube und Last.fm für Koel konfigurieren und vieles mehr.

Laden Sie den Nginx-Server neu, um die Änderungen zu implementieren.

Wenn Sie Ihr Admin-Passwort zurücksetzen möchten, können Sie dies mit dem folgenden Befehl tun.

$ php artisan koel:admin:change-password

Wenn Sie die Medienbibliothek nach aktualisierten Dateien durchsuchen möchten, können Sie dies mit dem folgenden Befehl tun.

$ php artisan koel:sync

Sie sollten die folgende Ausgabe sehen.

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

Suffixen Sie den Befehl mit -v Flagge, die Ihnen weitere Details wie z.B. Synchronisierungsfehler liefert.

Sie können diesen Befehl sogar als Cron-Job einstellen, der z.B. jede Mitternacht ausgeführt wird. Führen Sie dazu den folgenden Befehl aus.

$ crontab -e

Wählen Sie 1(nano) als Ihr Herausgeber.

Fügen Sie die folgende Zeile am Ende der Datei ein.

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

Speichern Sie die Datei mit Strg + X und Eintritt Y wenn Sie dazu aufgefordert werden. Jetzt wird Ihre Medienbibliothek jede Mitternacht synchronisiert.

Weitere Informationen finden Sie auf der offiziellen Koel-Dokumentation.

Einrichten von HTTPS mit Let’s Encrypt

Für die Verwendung von Let’s encrypt müssen wir die Certbot Paket sehen.

Fügen Sie das Repository hinzu.

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

Installieren Sie Certbot.

$ sudo apt install python-certbot-nginx

Installieren Sie das Zertifikat.

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

Wenn Sie das Tool zum ersten Mal auf diesem Server verwenden, müssen Sie den Bedingungen zustimmen und Ihre E-Mail-Adresse eingeben. Sagen Sie . nein wenn Sie gefragt werden, ob Sie Ihre E-Mail an die EFF-Stiftung weitergeben möchten.

Wenn das erfolgreich ist, certbot wird Sie fragen, wie Sie Ihre HTTPS-Einstellungen konfigurieren möchten.

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):

Wählen Sie 2 und drücken Sie dann ENTER. Ihr Zertifikat ist nun installiert und aktiviert. Ihr Zertifikat wird sich innerhalb von 90 Tagen automatisch erneuern.

Schlussfolgerung

Damit ist unser Tutorial abgeschlossen. Sie können Medien von Ihrem Server nach Herzenslust streamen.

Das könnte Dich auch interessieren …