Air Datepicker, легкий и красивый выбор даты SVG: основы векторной графики в HTML

Домашний linux сервер своими руками

Домашний linux сервер своими руками

Из софта на домашнем сервере будет «крутиться» следующий набор:

torrent клиент с web-мордой
DHCP — раздаем ip адреса и сетевые настройки
TFTP — для сетевой загрузки
OpenVPN — для хождения в сеть с нетбука из недоверенных сетей
FTP/Samba/NFS — сетевые шары для доступа с домашних машин
Radius — для WPA2 авторизации
DigiTemp — мониторинг домашней температуры

Аппаратная часть

При выборе аппаратной части, вариантов было несколько:

старенький комп
самосбор на базе mini-ITX
тонкий клиент HP T5000
тонкий клиент на базе Neoware CA2

Первый вариант собрать компьютер был сразу же отброшен из-за шума, пыли и энергопотребления. Второй был заказан, пока шли комплектующие, я успел передумать (захотелось шум и энергопотребление свести до минимума). В итоге, на Ebay были куплены тонкие клиенты HP t5000 и Neoware CA2. Месяц спустя пришли тонкие клиенты и из двух, после долгих размышлений, был выбран Neoware CA2. В него идеально поместился 2.5' HDD и вторая сетевая карта.

После допиливания, в буквальном смысле, Neoware CA2 я принялся ставить на него Ubuntu 9.10 с офисного TFTP сервера. Установку производил самую минимальную. Если бы не было набора для сетевой установки, ставил бы Debian с USB CD-ROM и netinstall диска. Сам я ярый фанат RHEL/CentOS, но на домашний сервер решил ставить что-то из debian семейства, для расширения кругозора.

Софт

Torrent клиент и вебморда

Теперь перейдем к установке torrent клиента и вебморды. Была выбрана связка rtorrent + rutorrent, установка из репозитариев была отметена сразу, т.к. «родной» пакет был собран без xmlrpc-c который расширяет функционал rutorrent. Ниже фактически, скрипт для авто-установки rtorrent+rutorrent+lighttpd+php.

Устанавливаем всё что необходимо для компиляции xmlrpc-c, libtorrent, rtorrent

apt-get install checkinstall subversion build-essential make autoconf autotools-dev automake libtool libcurl4-openssl-dev libsigc++-2.0-dev pkg-config libncurses5-dev<br />
apt-get remove rtorrent libtorrent11 libxmlrpc-c3 libxmlrpc-c3-dev libxmlrpc-core-c3 libxmlrpc-core-c3-dev

Компилируем и «заворачиваем» в .deb пакет xmlrpc-c, libtorrent, rtorrent

svn co xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c<br />
cd xmlrpc-c<br />
./configure --prefix=/usr &#038;& make &#038;& checkinstall -D</p>
<p>cd ..<br />
wget libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz<br />
tar zxfv libtorrent-0.12.6.tar.gz<br />
cd libtorrent-0.12.6<br />
rm -f scripts/{libtool,lt*}.m4 # для Debian<br />
./autogen.sh &#038;& ./configure --prefix=/usr &#038;& make &#038;& checkinstall -D</p>
<p>cd ..<br />
wget libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz<br />
tar zxfv rtorrent-0.8.6.tar.gz<br />
cd rtorrent-0.8.6<br />
rm -f scripts/{libtool,lt*}.m4 # для Debian<br />
./autogen.sh &#038;& ./configure --with-xmlrpc-c --prefix=/usr &#038;& make &#038;& checkinstall -D

К сожалению, rtorrent не умеет работать в режиме daemon, по этому будем использовать screen

apt-get install screen -y<br />
wget libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh --output-document=/etc/init.d/rtorrent<br />
chmod +x /etc/init.d/rtorrent<br />
sed -i 's/"user"/"torrents"/' /etc/init.d/rtorrent<br />
update-rc.d rtorrent defaults<br />
useradd -d /torrents -m torrents

Создаем конфиг и папки для сессий и готовых торрент закачек, после чего стартуем rtorrent.

mkdir /torrents/.rtorrent_session<br />
cat >> /torrents/.rtorrent.rc <<EOF<br />
port_range = 32001-32049<br />
dht = auto<br />
dht_port = 32000<br />
peer_exchange = yes<br />
use_udp_trackers = yes<br />
directory = /torrents/<br />
upload_rate = 10<br />
download_rate = 100<br />
session = /torrents/.rtorrent_session<br />
scgi_port = 127.0.0.1:5000<br />
EOF<br />
chown -R torrents:torrents /torrents<br />
/etc/init.d/rtorrent start

Теперь займемся вебмордой rutorrent. Для работы rutorrent необходим вебсервер и интерпретатор php.

apt-get install lighttpd php5-cgi php5-cli php5-curl curl -y<br />
lighty-enable-mod fastcgi<br />
echo 'server.modules += ( "mod_scgi" )' >> /etc/lighttpd/lighttpd.conf<br />
cat >> /etc/lighttpd/lighttpd.conf <<EOF<br />
scgi.server = (<br />
"/RPC2" =><br />
( "127.0.0.1" =><br />
(<br />
"host" => "127.0.0.1",<br />
"port" => 5000,<br />
"check-local" => "disable"<br />
)<br />
)<br />
)<br />
EOF<br />
/etc/init.d/lighttpd force-reload

Вебсервер готов, теперь будем ставить rutorrent и несколько полезных плагинов к нему.

cd /var/www/<br />
svn checkout rutorrent.googlecode.com/svn/trunk/rutorrent<br />
cd /var/www/rutorrent/plugins/<br />
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/tracklabels<br />
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/cookies<br />
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/autotools<br />
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/erasedata<br />
chown -R www-data:www-data /var/www/

Теперь можно заходить по server_ip/rutorrent и начинать пользоваться.

DHCP

Теперь установим DHCP сервер и создадим для него конфиг таким образом чтобы клиенты получали:
router 192.168.1.1
dns сервер 8.8.8.8
сервер времени time.nist.gov
tftp сервер 192.168.1.1
и для примера фиксированная выдача 192.168.1.100 клиенту с MAC-адресом 00:1B:FC:33:F0:25

aptitude install dhcp3-server<br />
cat >> /etc/dhcp3/dhcpd.conf <<EOF<br />
ddns-update-style interim;<br />
not authoritative;</p>
<p>option domain-name-servers 8.8.8.8;<br />
option subnet-mask 255.255.255.0;<br />
option ntp-servers 192.43.244.18;</p>
<p>option option-150 code 150 = ip-address;<br />
option option-150 192.168.1.1;</p>
<p>subnet 192.168.1.0 netmask 255.255.255.0 {<br />
authoritative;<br />
range 192.168.1.110 192.168.1.254;<br />
option routers 192.168.1.1;<br />
allow unknown-clients;<br />
allow booting;<br />
allow bootp;<br />
next-server 192.168.1.1;<br />
filename "pxelinux.0";</p>
<p>host shakirov-home {<br />
option host-name "shakirov-home";<br />
hardware ethernet 00:1B:FC:33:F0:25;<br />
fixed-address 192.168.1.100; }<br />
}<br />
EOF<br />
/etc/init.d/dhcp3-server restart

строчки с option-150 нужны для моего VoIP телефона Cisco 7940.

TFTP и сетевая установка

aptitude install xinetd atftpd atftp</p>
<p>mkdir /tftpboot</p>
<p>cat >> /etc/xinetd.d/tftp <<EOF<br />
service tftp<br />
{<br />
disable = no<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot</p>
<p>per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}<br />
EOF

/etc/init.d/xinetd restart

Теперь проверим, работает ли tftp сервер

root@dvr:~# echo bla > /tftpboot/123<br />
root@dvr:~# atftp 127.0.0.1<br />
tftp> get 123<br />
tftp><br />
root@dvr:~# cat 123<br />
bl
a

Всё нормально, теперь создадим netinstall наборы для нескольких ОС: Ubuntu karmic, Ubuntu lucid, Debian lenny, Debian sid, Debian squeeze, Fedora 13, CentOS 5.5, Mandriva 2010.0, Suse 11.2, Slackware 13.1, Hardware Detection Tool, memtest и MHDD. Для этого предлагаю использовать слегка модифицированный скрипт который я взял с HowtoForge.

apt-get install lftp -y

wget itblog.su/tftpboot_installs.sh<br />
bash tftpboot_installs.sh

Теперь добавим SystemRescueCd в PXE меню

wget "http://downloads.sourceforge.net/project/systemrescuecd/sysresccd-x86/1.6.3/systemrescuecd-x86-1.6.3.iso?use_mirror=citylan"<br />
mount -o loop systemrescuecd-x86-1.6.1.iso /mnt/<br />
cp /mnt/sysrcd.* /var/www/<br />
cp /mnt/isolinux/initram.igz /tftpboot/<br />
cp /mnt/isolinux/rescuecd /tftpboot/

cat >> /tftpboot/pxelinux.cfg/default <<EOF<br />
label linux<br />
menu label SystemRescue-CD x86-1.6.1<br />
kernel rescuecd<br />
append initrd=initram.igz showopts vga=normal video=ofonly setkmap=us rootpass=123321 netboot=http://192.168.1.1/sysrcd.dat #eth0=192.168.1.213/24<br />
EOF

Без особого труда в это меню можно добавить продукты Acronis, инсталляцию и запуск Windows XP и прочее.

Вот так будет выглядеть наше меню:

Домашний linux сервер своими руками

Продолжение в следующей части. А именно:

OpenVPN сервер для «хождения» в сеть из не доверенных сетей (например из гостиницы)
FTP/Samba/NFS сетевые шары
Radius для авторизации wi-fi клиентов
DigiTemp зачатки умного дома, мониторинг температуры в квартире и за окном
festival — говорящий будильник
бакапы с хостинга

и подытожит статью скрипт который всё это установит в «два клика».

Добавить в:
Google slashdot YahooMyWeb Digg Technorati Delicious Забобрить эту страницу! Добавить на Newsland.ru Добавить на СМИ2 Добавить на Ваау! Добавить на RUmarkz Добавить на rucity.com Добавить в закладки МоёМесто.ru

Разное Дизайнер (designer)

Постоянные ссылки

При копировании ссылка на Заметки дизайнера обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Написать коммент

Вы должны войти, чтобы оставить коммент.

Trackback на эту запись  |  Комменты по RSS


Рекламка в тему

Рубрики

Архив по месяцам

Друзья

Мета