Настройка персонального сервера потокового аудио с помощью Koel |
Перспектива иметь собственный сервер потокового мультимедиа может быть действительно воодушевляющей. Благодаря хорошей работе Opensource и неустанной тяжелой работе замечательных людей со всего мира вы можете иметь свой собственный сервер потокового мультимедиа, который будет мурлыкать и создавать для вас фантастическую музыку. Один из замечательных серверов потокового мультимедиа с открытым исходным кодом, который вам стоит проверить и поддержать, — это Koel.
Koel (также стилизованный под koel, с маленькой буквы k) — это простой веб-сервис персональной потоковой передачи аудио, написанный на Vue на стороне клиента и Laravel на стороне сервера. Ориентируясь на веб-разработчиков, Koel использует некоторые из наиболее современных веб-технологий — CSS-сетку, аудио и API перетаскивания, и это лишь некоторые из них — для выполнения своей работы. Источник: (Коэл)
«А тех, кого видели танцующими, те, кто не слышал музыки, считали сумасшедшими. ”
― Фридрих Ницше
Требования к серверу
Koel предъявляет нам следующие требования, прежде чем сможет комфортно обосноваться:
- Все требования Laravel – PHP, OpenSSL,
- Композитор
- PHP >= 7.1.3
- BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer, расширение XML PHP
- Подумайте о том, чтобы установить для PHP Memory_limit хорошее значение (512 МБ или выше), если у вас большая библиотека.
- MySQL, MariaDB, PostgresSQL или SQLite. Собственно, любая СУБД, поддерживаемая Laravel, должна работать.
- Последняя стабильная версия NodeJS с пряжей
Шаг 1. Обновите и установите необходимые инструменты
Зайдя в терминал вашего нового сервера Ubuntu, обновите его и установите необходимые инструменты, которые мы будем использовать в процессе установки.
sudo apt update && sudo apt upgrade
sudo apt install vim git unzip nginx curl build-essential libpng-dev gcc make ffmpeg -y
Шаг 2. Установите и настройте базу данных.
Для этой настройки мы собираемся использовать MariaDB. К счастью, у нас уже есть подробное руководство по установке MariaDB 10.5. Узнайте, как установить MariaDB 10 на Ubuntu 20.04 (Focal Fossa)
После установки базы данных следующим шагом будет создание базы данных и пользователя для нашего сервера потоковой передачи. Поэтому давайте продолжим и сделаем это, как показано ниже. Вы можете назвать свою базу данных и пользователя по-другому и убедиться, что используете безопасный пароль.
$ mysql -u root -p
Enter password:
MariaDB [(none)]> CREATE DATABASE koeldb;
MariaDB [(none)]> CREATE USER 'koeluser'@'localhost' IDENTIFIED BY 'StrongPassword';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON koeldb . * TO 'koeluser'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;
Шаг 3. Установите PHP и настройте веб-сервер.
Чтобы обслуживать веб-страницы Koel, необходим веб-сервер. Здесь у вас есть свобода выбора: Apache или Nginx. В этом руководстве мы будем использовать Nginx. Кроме того, как мы видели из требований, Koel нужен PHP, и поэтому нам тоже придется его настроить.
sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-tokenizer openssl php-json -y
Для получения более подробной информации у нас есть полное руководство по установке Nginx и PHP-FPM в Ubuntu 20.04.
Добавьте рекомендуемые настройки PHP
Откройте ini-файл php-fpm и добавьте/отредактируйте данные, показанные ниже. Они включают настройки часового пояса и ограничения памяти. Добавьте свой date.timezone и измените memory_limit на 512 МБ или больше.
$ sudo vim /etc/php/7.4/fpm/php.ini
memory_limit = 512M
[Date]
date.timezone = Africa/Nairobi
Установить композитор
Composer необходим для установки зависимостей Koel. Сделайте следующее, чтобы настроить композитор
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Проверьте, успешно ли установлен композитор, выполнив команду версии композитора.
$ composer -V
Composer version 1.10.9 2020-07-16 12:57:00
Шаг 4. Установите Yarn и Node.
На этом этапе мы включим официальный репозиторий Yarn, импортируем ключ GPG репозитория и установим интересующие нас пакеты. Давайте приступим к импорту ключа GPG репозитория и добавим репозиторий Yarn APT в вашу систему, выполнив следующие команды:
Установите Node.js
Установите Node, используя команды ниже
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install 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
После успешного импорта команда ниже обновит список пакетов и установит Yarn.
sudo apt update
sudo apt install --no-install-recommends yarn
Шаг 5: Подготовьте проект Koel
Корневой каталог — это папка, в которой наш веб-сервер будет искать файлы Коэла и обслуживать их по запросу. Вы можете создать другой в соответствии с вашими потребностями. После создания корневого каталога клонируйте файлы Koel из Git, установите все зависимости Node, а также зависимости PHP с помощью Yarn и Composer соответственно.
cd ~
composer global require laravel/installer
git clone https://github.com/koel/koel.git --recursive
cd koel
npm install
npm audit fix
npm audit fix --force ## If there are vulnerabilities remaining
composer install
Выполнение приведенных выше команд займет некоторое время.
Отредактируйте файл .env, содержащий сведения о базе данных.
$ vim .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=koeldb
DB_USERNAME=koeluser
DB_PASSWORD=StrongPassword
ADMIN_NAME="Koel Admin"
[email
ADMIN_PASSWORD=StrongPassword
MEMORY_LIMIT=512
The full path of ffmpeg binary.
FFMPEG_PATH=/usr/bin/ffmpeg
После завершения редактирования файла инициализируйте базу данных и начните обслуживать сайт.
$ php artisan koel:init --no-interaction
##You should see the message below when it ends
🎆 Success! Koel can now be run from localhost with `php artisan serve`.
Again, visit 📙 https://docs.koel.dev for the official documentation.
Feeling generous and want to support Koel's development? Check out https://github.com/users/phanan/sponsorship 🤗
Thanks for using Koel. You rock! 🤘
$ php artisan serve --host 0.0.0.0
##You will see a message like:
Laravel development server started: <http://0.0.0.0:8000>
На этом этапе вы можете загрузить свой сервер Koel из браузера, и он должен загрузиться. Направьте свой браузер на http://server-ip:8000, и появится экран входа, как показано ниже. Введите адрес электронной почты и пароль, которые вы установили в файле .env выше. Если всё прошло успешно, то тест прошёл успешно, приступим к настройке Koel на продакшн.
Нажмите Ctrl+c на терминале, чтобы завершить тест koel.
Создайте новый каталог, который будет использоваться в качестве документа Document| webroot для koel и скопируйте в него файлы и папки Koel.
sudo mkdir /var/www/html/streaming/
sudo mv ~/koel /var/www/html/streaming/
Настроить Nginx
Нам нужно внести несколько изменений в настройки по умолчанию Nginx, добавив детали, необходимые для Koel. Перейдите на сайты с поддержкой, создайте резервную копию файла по умолчанию и создайте новый с новыми конфигурациями.
cd /etc/nginx/sites-enabled/
sudo mv default /tmp
Создайте новый файл и добавьте детали, показанные ниже. Если у вас есть полное доменное имя, замените его example.com.
$ sudo vim /etc/nginx/sites-enabled/koel.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
root /var/www/html/streaming/koel;
index index.html index.htm index.php;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_read_timeout 240;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_split_path_info ^(.+.php)(/.+)$;
}
}
Изменить права доступа к файлам Koel
Чтобы Nginx мог читать файлы, мы должны предоставить ему правильные права и разрешения. Чтобы сделать это, выполните приведенные ниже команды.
sudo mkdir /var/www/html/streaming/koel/storage/logs
sudo chown -R www-data:www-data /var/www/html/streaming/
sudo chmod -R 755 /var/www/html/streaming/
sudo systemctl restart nginx php7.4-fpm
Шаг 6. Доступ к веб-интерфейсу Koel
Чтобы завершить настройку сервера потоковой передачи мультимедиа Koel, укажите в браузере IP-адрес или доменное имя веб-сервера, обслуживающего файлы. [http://[ip-or-domain-name]. Вы должны получить страницу, подобную приведенной ниже, которая точно такая же, как та, с которой мы взаимодействовали раньше. Снова введите адрес электронной почты и пароль, которые вы установили в файле .env выше.
После успешной аутентификации вас должны ввести в панель управления.
Шаг 7. Установка каталога мультимедиа
Вы заметите, что на нашем потоковом сервере нет медиа-каталога. В этом примере мы собираемся создать каталог ~/Music, куда Koel будет загружать наши медиафайлы. Я создал каталог «Музыка» и скопировал в него несколько музыкальных файлов (mp3, m4a и т. д.).
$ mkdir ~/Music
# Copy music/any media into this directory
После того, как вы закончите, снова войдите на сервер Koel, нажмите «Настройки» и установите созданный каталог в качестве Путь к мультимедиа, затем нажмите « Сканировать».
И ваши музыкальные файлы должны быть полезны для вашего удовольствия.
Эту команду также можно добавить как задание cron, например, для запуска каждую полночь для синхронизации музыкальных файлов на случай, если вы продолжите добавлять их в путь к медиафайлам.
0 0 * * * cd /var/www/html/streaming/koel/ && /usr/bin/php artisan koel:sync >/dev/null 2>&1
И вот оно, ребята. Клиентский интерфейс Koel выглядит как Spotify. Таким образом, вы будете чувствовать себя как дома, когда будете искать, сортировать, просматривать по исполнителям или альбомам, создавать плейлисты, ставить лайки/не нравится песни и создавать других пользователей, чтобы делиться ими.
Развязка
Есть и другие настройки, которые вам следует выполнить для точной настройки и оптимизации вашего сервера при интенсивной потоковой передаче музыки. Например, используя модуль mod_xsendfile от Apache и модуль X-Accel от Nginx, вы значительно улучшите качество потоковой передачи. Для получения более подробной информации о Koel Media Streaming посетите их официальную документацию и получите все возможности, на которых построен потоковый сервер.
Удовлетворите свое любопытство с помощью приведенных ниже руководств:
Установите Plex Media Server на CentOS 8/CentOS 7
Как установить VLC Media Player в Debian 10 (Buster)
Установите Kodi Media Server в Fedora
Как установить Plex Media Server в Ubuntu и Arch Linux