Pull to refresh

Настройка домашнего сервера на базе Debian

Reading time4 min
Views39K
Привет.

Хочу рассказать вам о том, как я реализовал дома серверное решение :)
Прошу строго не судить, т.к. это первая моя публикация на хабрахабр, и русский — не родной мне язык.
Так что все исправления приветствуются.

Речь пойдет о:
Старом компьютере на базе VIA Ezra с 256 мегабайт оперативной памяти, работающем на базе Debian Etch, выполняющем функции музыкального плеера, торрент-клиента, web+ftp+nfs сервера.

Дополнительное оборудование: 2 ноутбука (Dell, Asus) на базе Ubuntu, Fedora и Wi-Fi рутер/DSL-модем D-link DSL-2640u.


Один мой друг на Новый Год подарил мне сие творение инженеров прошлого века:



Было решено, что тазик простаивать зря не должен. Debian потому, что дистрибутив стабильный и простой в настройке/использовании.
Процесс установки ОС описывать не буду — задача понятная, да и в интернете достаточно помощи по этому делу. Сразу перейду к настройке.

Настройка



Т.к. ноутбуки у меня подключены через wi-fi, а сервер я подключил через витую пару — все компьютеры находятся в локальной сети.
Первым делом я установил ssh и отключил монитор, разместив машину в укромном месте, чтоб не мешалось.

Необходимо на рутере пробросить порты для доступа к серверу извне.
Я сделал DHCP-резервацию по MAC-адресам, и мой сервер всегда будет иметь локальный адрес 192.168.1.2

Скриншот из админки рутера:



Вы видите, что я открыл порты для web, ftp, shoutcast и ssh.
Тут важно знать, что внешние адреса для некоторых (и моей в часности) моделей рутеров не будут работать из локальной сети.
Т.е. если я наберу на ноутбуке мой_внешний_айпи_адрес:21 — то я ничего не увижу.
Теперь сервер виден из сети.

Подключимся по ssh и проведем настройку.
По умолчанию Debian использует Gnome как оконный менеджер, но он кушает оперативную память, поэтому мы его отключим.
Делается это очень легко:

Вариант от gribozavr
apt-get install sysv-rc-conf
sysv-rc-conf


UPD: либо так, предложил Greignar
update-rc.d -f gdm remove


Сохраняем, перезагружаемся.
Вуаля! Gnome отключен.
Таким образом можно поотключать ненужные нам сервисы.

Так получилось, что мой домашний провайдер не предоставляет мне статического айпи-адреса, поэтому пришлось искать решение.
Я остановился на dyndns.com. Сервис, который бесплатно предоставляет домен третьего уровня + возможность серверным софтом обновлять айпи для данного домена, при изменении оного.
Регистрируемся, добавляем новый аккаунт, качаем inadyn, ставим в автозагрузку с помощью update-rc.d

update-rc.d inadyn defaults


Теперь мы имеем домен, который всегда будет привязан к нашему серверу!

Настройка screen + rtorrent



Решение пало на эту связку, т.к. rtorrent — не демонической природы, а нужно, чтоб он работал в фоне.
Если вы еще не знаете, что такое screen, зайдите на сайт GNU Project.
Установим нужные нам пакеты:

apt-get install screen rtorrent


Я создал скрипт автозагрузки:

nano /etc/init.d/screen


#!/bin/sh
screen -d -m rtorrent
echo "Started..."


И добавил его, опять же, через update-rc.d
Поясню: при загрузке сервера в фоновом режиме запускается screen с запущенным внутри rtorrent.

Немного подправим конфиг:

nano /home/username/.rtorrent.rc


directory = /data/downloads/
schedule = watch_directory,5,5,load_start=/data/torrents/*.torrent


Теперь наш торрент-клиент складывает закачки в папку /data/downloads/, и каждые 5 секунд проверяет папку /data/torrents/ на наличие новых torrent-файлов.

Настройка apache, ftp, nfs



Для работы с веб-клиентами mpd нужен веб-сервер. Я выбираю apache. Для работы с веб-клиентами плеера нам еще потребуется php.
Также, nfs для монтирования сетевых дисков, и ftp для просто доступа к файлам.
Тут все очень просто:

apt-get install apache2 libapache2-mod-php5 php5-cli php5-common php5-cgi proftpd nfs-kernel-server


Отлично, все пакеты установлены, демоны запускаются автоматически.
В конфиге proftpd нужно добавить одну строчку для того, чтобы пользователи локальной системы могли логиниться как ftp-пользователи:

nano /etc/proftpd/proftpd.conf


DefaultRoot ~


При логине на ftp-сервер пользователь попадает в домашнюю директорию.

Для nfs-сервера я расшарил одну папку /data:

nano /etc/exports


/data 192.168.1.1/24(rw,no_root_squash,async)


Это говорит о том, что пользователи локальной сети имеют право на чтение и запись папки /data на сервере.
Перезагружаем демоны:

/etc/init.d/proftpd restart
/etc/init.d/nfs-kernel-server restart


Все, NetFileSystem и FTP готовы к работе.

Настройка клиентских машин



Для удобной работы с nfs я сделал запись в fstab:

sudo nano /etc/fstab


192.168.1.2:/data /server/data nfs rw,hard,intr 0 0


После достаточно написать

sudo mkdir /server/data
sudo mount /server/data


И мы увидим папку из файловой системы сервера!

Настройка mpd + relaxxplayer + icecast



Mpd — отличный плеер-демон, для которого есть множество gui. Как и Qt, GTK+, так и web-based.
Остановимся на веб-интерфейсе, т.к. мне это показалось наилучшим вариантом.

Установим пакеты:

apt-get install mpd icecast2


Для установки клиента для плеера нужно скачать исходники с домашнего сайта и распаковать их в /var/www
Apache у нас уже запущен, поэтому набрав адрес 192.168.1.2 мы увидим собственно плеер.
Немного из настройки mpd:

nano /etc/mpd.conf


music_directory "/mnt"


Я указываю плееру, что мои музыкальные файлы лежат в директории /mnt сервера.

А теперь самое интересное!
Я решил пойти путем монтирования на сервере nfs-директории лептопа, в которой содержится музыка.
Установив на ноутбуке nfs-kernel-server и расшарив папку /home/romantik/music я подмонтировал ее на сервере в директорию /mnt/music

Теперь, обновив базу даных mpd

mpd --create-db


мы увидим в ней музыку с лептопа :)
При воспроизведении байты данных риал-тайм несутся по локальной сети.
Удобнее и не придумаешь, теперь я практически независим от проводов :)

И немного об icecast.

В настройках mpd раскомментировав блок shoutcast мы получаем вещание в сеть стрим-потока прямо из плеера.
Доступно оно по адресу 192.168.1.2:8000

Заключение



Для меня это было серьезным шагом в мир полнофункциональной консоли. Скажу вам, испытываю только удобство от проделанных процедур :)
А что посоветуете реализовать на сервере вы?
Tags:
Hubs:
Total votes 113: ↑105 and ↓8+97
Comments163

Articles