home server домашний сервер«– Чем на досуге занимаются физики? — Естественно, физикой!» А чем 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, поэтому я всегда в курсе её состояния и могу удалённо ею управлять.

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

  • Как уже было сказано, поддержание круглосуточного коннекта и обеспечение доступа в интернет всем желающим (в пределах квартиры, естественно). Для этого я написал скриптик, который отслеживает доступность интернета и при необходимости поднимает упавшую pptp-сессию. Кроме того, этот же скрипт отслеживает, не завершили ли при отсутствии коннекта свою работу Named, NTPd и Squid. При необходимости он запускает и эти службы;
  • Защита квартирных компьютеров от злых хакеров снаружи. Самый обычный iptables, NAT, Port-mapping (для работы eMule и uTorrent);
  • Хранение разных файлов, в основном музыки и раздача её по сети. Под музыку отдан диск 200ГБ. По нынешним меркам, конечно, немного, но мне хватает. А доступ по сети обеспечивает Samba. Если нужно, я могу выложить на сервер файл, который будет доступен и снаружи: наличие динамического DNS-имени позволяет давать HTTP-ссылки. Очень удобно!
  • Сервер времени NTPd;
  • Проигрывание музыки. Для этого в машине стоят две PCI звуковые платы: Creative Labs SB Audigy и Creative Labs SB Live!.

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

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

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

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

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

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

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

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

  • перевести подключение с pptp на l2tp. Говорят, будет быстрее. Работы ведутся, но медленно;
  • организовать точку доступа Wi-Fi;
  • экспериментирую с mpd, но это совсем другая система и, похоже, она мне не пригодится.
  • подключить пульт дистанционного управления (IR remote control), чтобы регулировать громкость и «отстреливать» музыку без Web-интерфейса

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

Возможно, вас заинтересует:

  1. 30 баксов + 30 минут = 1 прэлэстный файл-сервер Товарищ из далёкой страны рассказывает о том, как потратив...
  2. Автомобильный компьютер под Linux Ребята из MP3Car занимаются разработкой компьютера для автомобиля. Правда,...
  3. Преобразование кодировки файловой системы Недавно у меня возникла необходимость изменить один из старых...
  4. Исследуем аппаратуру на удалённом Linux-боксе (dmidecode) Долгое время информация о железе на машине с уже...
  5. Как ограничить число используемых процессоров (ядер) программе Про параллельный архиватор, который работает с использованием сразу нескольких...
  6. Это вам не «Админы сервер держат…» Очень весёлая, но очень английская песенка, посвящённая прошедшему недавно...