Настройка музыкального сервера MPD.

Сейчас музыку можно слушать многими способами: скачать на телефон файлы, популярные стриминговые сервисы, в соцсетях и прочее.
Но не всегда есть нужная музыка или аудиокниги в сервисах или места не так много в памяти телефона, по этому можем использовать сервер на vpsville.ru для создания собственного музыкального потока.

Структура нашего сервиса
MPD (Music Player Daemon) + ympd -> клиенты

Для работы будет достаточно начальных тарифов Camp, Farm, Farm+ с ОС Debian8/9.
1. MPD есть в репозиториях
apt update && apt -y install mpd

Вся конфигурация находится в 1 файле
nano /etc/mpd.conf

music_directory		"/mnt/music" #папка с музыкой
playlist_directory	"/mnt/music" #папка куда будут сохраняться плейлисты
db_file			"/tmp/mpd.db" #база музыки
log_file		"/var/log/mpd/mpd.log" #лог файл сервера
pid_file		"/run/mpd/pid"
state_file		"/tmp/state"
sticker_file            "/tmp/sticker.sql"
user			"mpd" #пользователь с чьими правами запускаем сервер
bind_to_address		"127.0.0.1" 
port			"9999"

input {
		        plugin "curl"
}

audio_output {
       type            "httpd"     #тип потока 
       name            "flac"      #имя
       encoder         "flac"      #кодировка 
       port            "8010"      #порт
       bind_to_address "0.0.0.0"   #адрес          
       format          "44100:24:2"#формат
       max_clients     "2"         #максимальное количество подключений
}

audio_output {
       type            "httpd"
       name            "512"
       encoder         "lame"             
       port            "8011"
       bind_to_address "0.0.0.0"            
       bitrate         "512"                 
       format          "44100:16:2"
       max_clients     "0"              
}

filesystem_charset	"UTF-8"
id3v1_encoding		"UTF-8"
metadata_to_use 	"none"

Сохраняем.

2. Для работы web интерфейса ympd понадобятся следующие пакеты
apt-get install cmake libssl-dev libmpdclient-dev git g++ gcc

Скачаем исходные тексты
git clone https://github.com/notandy/ympd.git /opt/ympd

Соберём исполняемый файл
cd /opt/ympd
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr
make


3. В поставке с исходными текстами идёт файл для работы с ympd как с сервисом
cp /opt/ympd/contrib/ympd.service /etc/systemd/system
cp /opt/ympd/contrib/ympd.default /etc/default

Изменим параметры запуска ympd на требуемые нам
nano /etc/systemd/system/ympd.service

[Unit]
Description=ympd server daemon
Requires=network.target local-fs.target

[Service]
Environment=MPD_HOST=localhost
Environment=MPD_PORT=9999 #Порт указанный в конфигурации mpd
Environment=WEB_PORT=8989 #Порт подключения через браузер
Environment=YMPD_USER=nobody
EnvironmentFile=/etc/default/ympd
ExecStart=/usr/bin/ympd --user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT
Type=simple

[Install]
WantedBy=multi-user.target

Сохраняем и запускаем
systemctl enable ympd.service
systemctl start ympd.service
systemctl stop mpd.socket
systemctl disable mpd.socket
service mpd restart

Теперь можно проверить что все сделано верно, подключившись к web интерфейсу через браузер http://(адреса_сервера):8989

4. Музыкальный сервер у нас есть, теперь нужно сделать так, что бы был удобный доступ к музыке на сервере. Есть 2 варианта:
1. Скачать файлы на сервер через sftp/ftp в папку /mnt/music
2. Подключить облачное хранилище и управлять файлами через удобный интерфейс и не занимать место на сервере.
Попробуем второй вариант
Ставим нужные пакеты
apt-get install davfs2

Для разового монтирования можно использовать команду
mount -t davfs https://webdav.yandex.ru /mnt

Вас попросит ввести логин и пароль, после введения Диск будет примотнирован в /mnt
Создадим папку music в /mnt
mkdir /mnt/music

Теперь можем через браузер или приложение на компьютере положить несколько треков в данную папку и попробовать их прослушать.
Нажимаем «Brouse Database» и добавляем трек в плейлист
ympd
Но для наших целей требуется автоматическое монтирование во время загрузки, для чего воспользуемся простым скриптом
#!/usr/bin/expect
spawn mount.davfs https://webdav.yandex.ru /mnt
expect "Username:"
send "USERNAME@yandex.ru\r"
expect "Password:"
send "PASS\r"
expect eof

Вместо USERNAME указываем Ваш логин на Яндекс, вместо PASS Ваш пароль.
Сохраним его в файл /opt/autoDisk, сделаем файл исполняемым
chmod +x /opt/autoDisk.sh

и добавим в автозапуск через /etc/rc.local, добавив в него строку
/opt/autoDisk


Настройка завершена, можно добавлять любимую музыку и слушать.

Ссылки
Статья habrababr про Webdav
Githab репозиторий Ympd
Страница проекта MPD

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.