Koel adalah aplikasi streaming audio pribadi berbasis web yang ditulis dalam Vue.js di client-side dan tekonologi Laravel di  server-side. Tutorial ini akan membahas cara menginstal Koel di server berbasis Ubuntu 18.04.

Persyaratan

Langkah Awal

Siapkan zona waktu:

sudo dpkg-reconfigure tzdata

Perbarui paket sistem operasi Anda (software). Ini adalah langkah pertama yang penting karena memastikan Anda memiliki pembaruan terbaru dan perbaikan keamanan untuk paket perangkat lunak default sistem operasi Anda:

apt-get update &&  apt-get upgrade -y

Instal beberapa paket penting yang diperlukan untuk administrasi dasar sistem operasi Ubuntu:

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

Setelah server diperbarui,  restart untuk menerapkan semua perubahan konfigurasi.

Konfigurasi Firewall

Langkah pertama adalah mengkonfigurasi firewall. Sebelum kita mengaktifkan firewall, kita perlu mengizinkan port SSH, jika tidak kita akan terkunci dan tidak bisa akses server dari jaringan eksternal.

$ sudo ufw allow OpenSSH

Enable firewall.

$ sudo ufw enable

Izinkan port HTTP dan HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Periksa status firewall.

$ sudo ufw status

Anda akan melihat output yang serupa.

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)

Install Git di Server

Kita akan mulai dengan install Git.

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

Install Node.js

Kita akan menginstal Node 10.x daripada versi terbaru 12.x , karena Koel mengemas beberapa libraries yang sudah usang dan tidak kompatibel dengan Node 12.

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

Periksa apakah Node diinstal dengan benar.

$ node --version

Anda akan melihat output seperti berikut

v10.17.0

Install Yarn

Gunakan perintah berikut untuk Install Yarn package manager.

$ 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

Periksa apakah Yarn is berfungsi dengan benar.

$ yarn --version

Anda akan melihat output kurang lebih seperti berikut .

1.19.1

Install PHP

Install PHP dan semua PHP extensions yang di perlukan:

$ 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

periksa versi PHP :

$ php --version
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

Install MariaDB

MariaDB adalah pengganti untuk MySQL yang berarti perintah untuk menjalankan dan mengoperasikan MariaDB sama dengan yang untuk MySQL. Untuk menginstal MariaDB, gunakan  perintah berikut.

$ sudo apt install mariadb-server

Check versi MariaDB :

$ mysql --version

Anda akan melihat output kurang lebih seperti berikut .

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

Mulai dengan menjalankan script mysql_secure_installation untuk melakukan peningkatan keamanan dasar:

sudo mysql_secure_installation

Perintah ini akan mengubah kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh dan menghapus database pengujian.

Jawab pertanyaan seperti yang ditunjukkan di bawah ini dan pastikan untuk memilih kata sandi yang aman untuk pengguna root:

Enter current password for root (enter for none):
Set root password? [Y/n]: Y
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

Setelah MariaDB diamankan, masuk ke shell MariaDB dengan perintah berikut:

mysql -u root -p

Berikan kata sandi root Anda, lalu buat database dan user database untuk Koel dengan perintah berikut:
Pada contoh ini, kami menggunakan nama database koelmusik dan nama user koeluser, ganti kata koelmusik , koeluser, sesuai dengan keinginan Anda.

mysql> CREATE DATABASE koelmusik;
mysql> CREATE USER 'koeluser'@'localhost' IDENTIFIED BY 'GantiDenganPasswordAnda';
mysql> GRANT ALL PRIVILEGES ON koelmusik.* TO 'koeluser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

Install Nginx

Install Nginx webserver:

$ sudo apt install nginx

Periksa versi NGINX :

$ nginx -v
# nginx version: nginx/1.14.0 (Ubuntu)

Selanjutnya, konfigurasikan NGINX untuk Koel. Kita akan membuat server block untuk Automad CMS dan tambahkan konfigurasi berikut.

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

Copy dan Paste konfigurasi berikut ke 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;
  }
}

File konfigurasi ini mengasumsikan bahwa kita akan menginstal Koel ke domain koel.example.com dan di direktori /var/www/koel.

Aktifkan file konfigurasi ini dengan menautkannya ke direktori yang didukung situs.

Aktifkan konfigurasikoel.conf dengan membuat symlink ke direktori sites-enabled  :

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

Periksa konfigurasi NGINX untuk melihat tidak ada syntax errors:

sudo nginx -t

Anda akan melihat output berikut yang menunjukkan konfigurasi Anda sudah benar.

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

Reload Nginx dengan perintah berikut

$ sudo systemctl reload nginx

Install Composer

Ini adalah hal terakhir yang kita butuhkan sebelum melanjutkan ke instalasi.

Masukkan perintah berikut untuk menginstal 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

Periksa apakah perintah telah berfungsi dengan benar

$ composer --version

Anda akan melihat output berikut.

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

Install Koel CMS

Buat direktori document root untuk Koel, direktori ini adalah tempat di mana Koel CMS menyimpan semua filenya :

$ sudo mkdir -p /var/www/koel

Argumen -p memastikan bahwa direktori induk var dan www secara otomatis dibuat jika tidak ada.
Langkah selanjutnya masuk ke directory root document.

$ cd /var/www/koel

Ubah kepemilikan root document menjadi user biasa dengan hak sudo yang kami gunakan untuk tutorial.

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

Clone repositori Koel Git dan periksa versi terbarunya. Anda dapat memeriksa versi terbaru dari halaman rilisnya.

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

Install dependensi.

$ composer install

Jalankan perintah berikut untuk mengatur basis data dan akun admin. Masukkan mysql sebagai tipe database, lewati pengaturan port dan masukkan kredensial database yang kita buat di atas. Untuk folder media, Anda dapat memasukkan sesuatu seperti /home/user/musik.

$ php artisan koel:init

Langkah selanjutnya ubah kepemilikan direktori /var/www/koel menjadi www-data:www-data

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

Setup sekarang selesai. Buka koel.example.com di browser Anda dan masuk dengan kredensial yang Anda buat di atas dan mulai streaming. Situs web Koel juga dapat diakses melalui ponsel.

Konfigurasikan Koel

Ada lebih banyak detail yang bisa Anda konfigurasi dengan mengedit file .env dengan perintah berikut.

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

Di sini Anda dapat memasukkan detail SMTP Anda, mengkonfigurasi Youtube dan Last.fm untuk Koel dan melakukan lebih banyak hal.

Reload Nginx untuk mengimplementasikan perubahan.

Jika Anda ingin mengatur ulang kata sandi admin Anda, Anda dapat melakukannya dengan mengeluarkan perintah berikut.

$ php artisan koel:admin:change-password

Jika Anda ingin memindai media library untuk file yang diperbarui, Anda dapat melakukannya dengan perintah berikut.

$ php artisan koel:sync

You should see the following output.

Anda akan melihat output berikut.

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

Sufiks perintah dengan flag -v yang akan memberi Anda lebih banyak detail seperti kesalahan sinkronisasi.

Anda bahkan dapat mengatur perintah ini sebagai cron job, misalnya, untuk dijalankan setiap tengah malam. Untuk melakukannya jalankan perintah berikut.

$ crontab -e

Pilih 1 (nano) sebagai editor Anda.
Rekatkan baris berikut di akhir file.

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

Simpan file dengan menekan Ctrl+X dan memasukkan Y ketika diminta. Sekarang, perpustakaan media Anda akan disinkronkan setiap tengah malam.

Untuk lebih banyak hal, lihat dokumentasi resmi Koel.

Setting HTTPS dengan Let’s Encrypt

Untuk menggunakan Let’s encrypt, kita perlu menginstal paket Certbot. Langkah pertama adalah tambahkan repositori.

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

Instal Certbot.

$ sudo apt install python-certbot-nginx

Install sertifikat

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

Jika ini pertama kalinya Anda menggunakan tool di server, Anda harus menyetujui persyaratan dan memasukkan alamat email Anda. Jawab no ketika ditanya apakah Anda ingin membagikan email Anda denganEFF foundation.

Jika berhasil, certbot akan bertanya bagaimana Anda ingin mengonfigurasi pengaturan HTTPS Anda.

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

Pilih 2 lalu tekan ENTER. Sertifikat Anda sekarang diinstal dan diaktifkan. Sertifikat Anda akan diperpanjang secara otomatis dalam 90 hari.

Kesimpulan

Ini menyimpulkan tutorial kami. Anda dapat streaming media dari server Anda.