- FlyCat.Info: КОТорый летает… - https://flycat.info -

Одомашненный сервер

home server домашний сервер [1]«— Чем на досуге занимаются физики? — Естественно, физикой!» А чем Linux-админы? Да всем, чем придётся. В том числе и Linux’ами. Помнится, когда я завёл свой первый компьютер, многие недоумённо спрашивали: «А на кой он дома?» Сейчас такого вопроса уже не задают. Зато сейчас, думаю, всё ещё нужно объяснять для чего нужен «антресольный сервер» на Linux.

Итак, мой «домашний сервер» представляет собой отслуживший своё десктоп Celeron III 1,3GHz, 512MB, HDD 20GB+200GB. В машине торчит две сетевых карточки Intel — по одной сервер подключается к Корбине, по другой раздаёт это соединение по квартире.

Установленный софт: Slackware Linux 12.2, Apache/PHP/MySQL, Samba, Named, NTPd, Squid, no-ip.org клиент, несколько самописных скриптов (о них чуть подробнее ниже). Машина имеет удалённый вход по SSH и мониторится через Zabbix, поэтому я всегда в курсе её состояния и могу удалённо ею управлять.

В обязанности сервера входит:

Вот про музыку остановлюсь чуть подробнее. Ещё на позапрошлой работе мы соорудили прототип музыкального Juke-box’а, в задачу которого входило круглосуточно играть всю MP3-музыку, которую на него регулярно сгружали из сети. Я немного его доработал под свои интересы. К сожалению, не знаю, как отнесутся мои прежние работодатели к обнародованию исходников, поэтому пока опишу всё на словах.

Вначале первый скрипт-индексатор (все скрипты написаны на PHP) рекурсивно обходит каталог музыки, добавляя в одну из таблиц MySQL-базы все файлы (путь, id3-тэги, время последнего проигрывания). Индексатор запускается по cron’у, раз в сутки, но его можно выполнить и вручную.

Другой скрипт запускает консольный плеер музыки (mplayer), одновременно формируя стек-очередь на проигрывание (другая таблица базы). Очередь на проигрывание можно смотреть через Web-интерфейс. Здесь же можно «отстрелить» то, что не хочется слышать сейчас или, наоборот, заказать своё. Очередь на проигрывание формируется случайным образом из той музыки, которая дольше всего не игралась. Но заказанное человеком имеет несомненный приоритет и проигрывается в первую очередь. Когда «человеческая» очередь заканчивается, система продолжает играть случайную музыку. Эдакая радиостанция по заявкам, но без новостей и рекламы. Сейчас на моей домашней машине около 170ГБ музыки. Всего в базе 29826 мелодий самых разных жанров и направлений. Это примерно 3480 часов или около 124 суток непрерывного звучания.

Хохмы ради я ещё пробовал накачать из интернета разных крылатых фраз [2] из фильмов, мультиков, заиндексировать их в отдельную базу и пускать вразбивку между музыкой. Получилось забавно, но быстро надоело и я это выключил.

Web-интерфейс осуществляет расширенный поиск в базе по автору, альбому, жанру, названию композиции или по имени файла (на случай, если id3-теги в файле не прописаны).

Выход звуковой карточки подключён к музыкальному центру в режиме усилителя. Благодаря серверу я давно забыл о компакт-дисках и FM-радиостанциях. Кстати, mplayer позволяет играть музыку не только из файлов, но и из потоков, поэтому я, немного поэкспериментировав, добавил в базу музыки несколько потоков интернет-радиостанций, которые тоже можно заказать из Web-интерфейса.

Если мне надоело слушать музыку — я просто выключаю музыкальный центр. Проигрывание mplayer’ом продолжается и в любой момент можно «подключиться к радиостанции Linux».

Чего хотелось бы ещё?

Пишите, если кого заинтересовал мой опыт. Буду рад комментам, советам, вопросам!