Домашний сервер. От новичка до профи
Здравствуйте, пользователи Хабра. Сегодня расскажу про мой домашний сервер. Кстати, мне всего 12 лет. Но не советую сразу закрывать эту статью, ведь объяснил я все грамотно.
1. Начало пути
В один момент я понял, что мне нужен домашний сервер для хранения данных и удалённой разработки на ShellScript. Сначала я не подумал поискать его на всяких авито и подобных сайтах, поэтому мой мозг решил, что надо что-то сделать из стареньких пк, которые у меня завалялись.
Нашел я тот старый пк, и с самого начала его надо было разобрать. Кстати, эта инициатива у меня появилась с осени 2020 года.
Я разобрал тот пк, у него были характеристики как раз подходящие для начального уровня домашнего сервера, уже не помню какие, но точно помню, что ОЗУ было 2гб, а процессор какой-то из линейки Intel Pentium.
На пк было установлено 3 ОС, когда я увидел это, я очень удивился. Там была Windows XP, Windows Vista и Windows 8.
И так, вроде ПК подходит, теперь подойдём к выбору операционной системы.
2. Установка ОС
Мне полюбились такие ОС, и я начал выбирать из них: Ubuntu, Debian, Windows Server.
Я подумал, что на ядре Linux сервер будет работать получше, поэтому сразу же у нас отпадает вариант с Windows Server.
Теперь у меня 2 варианта. Ubuntu или Debian. Хоть Ubuntu и основан на Debian, но я выбрал именно Ubuntu, так как работал с ней уже 2 года на VDS сервере.
Теперь важный шаг, найти эту систему. Я был новичком в установке Linux, но умел устанавливать ОС. Сначала я не знал о существовании дистрибутива Ubunth Server, поэтому скачал iso-образ Ubuntu Desktop 20.04. Еле как я смог установить это, но установил. Проблема была из-ха нехватки памяти, а диски очистить мне не предлагало. Вторая проблема началась из-за другого разрешения экрана, но благо ее я быстро исправил. В последствии я нашел Server-линейку Ubuntu, чему был очень рад. Но в тот момент, по непонятным причинам этот ПК перестал работать.
Поэтому мой выбор пал на второй пк, но тут тоже была проблема. Он не подключался к монитору. Я догадываюсь, в чем была проблема, но искать ее реально будет долго.
3. Покупка сервера на Avito
И так, я понял, что такие результаты ничего не дадут, поэтому начал усердно искать сервер на Avito. Цену я выбирал довольно дешевую, т.к у меня было не очень много денег. Диапазон цены я выбрал от 1 до 3000р.
И вот, я листаю ленту и вижу сервер за 1500р.
Для меня были важны такие характеристики на первое время:
Минимум 100ГБ SSD или HDD.
Наличие VGA или HDMI входа для монитора, чтобы первоначально настроить сервер.
И вот, я купил данный сервер. Характеристики у него были такие:
Процессор: Intel Pentium 4.
Сервер я конечно буду в последствии улучшать.
Сервер не стоечный, но по толщине одинаково тонкий, он имеет 5 вентиляторов для охлаждения, и негромко шумит. Там был VGA вход, и даже старые входы для клавиатуры, но клавиатуру я подключил по USB, тоже старую. Огромное спасибо за трепетное отношение автору того объявления, ведь за 1500р он переустановил мне систему, установил начальные пакеты, запаковать сервер в коробку, которую я открывал минут 30, написал бумажку с логином и паролем, а так же небольшой инструкцией :).
Вот такая история. Именно сейчас я пишу на этом сервере sh-скрипты. Кстати, система на нем Ubuntu 14.04, довольно старая, но вроде сейчас работает хорошо.
Если хотите ещё постов по данному серверу, то дайте знать.
Домашний 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
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
cd xmlrpc-c
./configure —prefix=/usr && make && checkinstall -D
cd ..
wget libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar zxfv libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
rm -f scripts/.m4 # для Debian
./autogen.sh && ./configure —prefix=/usr && make && checkinstall -D
cd ..
wget libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar zxfv rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
rm -f scripts/.m4 # для Debian
./autogen.sh && ./configure —with-xmlrpc-c —prefix=/usr && make && checkinstall -D
К сожалению, rtorrent не умеет работать в режиме daemon, по этому будем использовать screen
apt-get install screen -y
wget libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh —output-document=/etc/init.d/rtorrent
chmod +x /etc/init.d/rtorrent
sed -i ‘s/»user»/»torrents»/’ /etc/init.d/rtorrent
update-rc.d rtorrent defaults
useradd -d /torrents -m torrents
Создаем конфиг и папки для сессий и готовых торрент закачек, после чего стартуем rtorrent.
mkdir /torrents/.rtorrent_session
cat >> /torrents/.rtorrent.rc port_range = 32001-32049
dht = auto
dht_port = 32000
peer_exchange = yes
use_udp_trackers = yes
directory = /torrents/
upload_rate = 10
download_rate = 100
session = /torrents/.rtorrent_session
scgi_port = 127.0.0.1:5000
EOF
chown -R torrents:torrents /torrents
/etc/init.d/rtorrent start
Теперь займемся вебмордой rutorrent. Для работы rutorrent необходим вебсервер и интерпретатор php.
apt-get install lighttpd php5-cgi php5-cli php5-curl curl -y
lighty-enable-mod fastcgi
echo ‘server.modules += ( «mod_scgi» )’ >> /etc/lighttpd/lighttpd.conf
cat >> /etc/lighttpd/lighttpd.conf scgi.server = (
«/RPC2» =>
( «127.0.0.1» =>
(
«host» => «127.0.0.1»,
«port» => 5000,
«check-local» => «disable»
)
)
)
EOF
/etc/init.d/lighttpd force-reload
Вебсервер готов, теперь будем ставить rutorrent и несколько полезных плагинов к нему.
cd /var/www/
svn checkout rutorrent.googlecode.com/svn/trunk/rutorrent
cd /var/www/rutorrent/plugins/
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/tracklabels
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/cookies
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/autotools
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/erasedata
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
cat >> /etc/dhcp3/dhcpd.conf ddns-update-style interim;
not authoritative;
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
option ntp-servers 192.43.244.18;
option option-150 code 150 = ip-address;
option option-150 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 authoritative;
range 192.168.1.110 192.168.1.254;
option routers 192.168.1.1;
allow unknown-clients;
allow booting;
allow bootp;
next-server 192.168.1.1;
filename «pxelinux.0»;
host shakirov-home option host-name «shakirov-home»;
hardware ethernet 00:1B:FC:33:F0:25;
fixed-address 192.168.1.100; >
>
EOF
/etc/init.d/dhcp3-server restart
строчки с option-150 нужны для моего VoIP телефона Cisco 7940.
TFTP и сетевая установка
aptitude install xinetd atftpd atftp
cat >> /etc/xinetd.d/tftp service tftp
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
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
per_source = 11
cps = 100 2
flags = IPv4
>
EOF
/etc/init.d/xinetd restart
Теперь проверим, работает ли tftp сервер
root@dvr:~# echo bla > /tftpboot/123
root@dvr:~# atftp 127.0.0.1
tftp> get 123
tftp>
root@dvr:~# cat 123
bla
Всё нормально, теперь создадим 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
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»
mount -o loop systemrescuecd-x86-1.6.1.iso /mnt/
cp /mnt/sysrcd.* /var/www/
cp /mnt/isolinux/initram.igz /tftpboot/
cp /mnt/isolinux/rescuecd /tftpboot/
cat >> /tftpboot/pxelinux.cfg/default label linux
menu label SystemRescue-CD x86-1.6.1
kernel rescuecd
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
EOF
Без особого труда в это меню можно добавить продукты Acronis, инсталляцию и запуск Windows XP и прочее.
Вот так будет выглядеть наше меню:
- OpenVPN сервер для «хождения» в сеть из не доверенных сетей (например из гостиницы)
- FTP/Samba/NFS сетевые шары
- Radius для авторизации wi-fi клиентов
- DigiTemp зачатки умного дома, мониторинг температуры в квартире и за окном
- festival — говорящий будильник
- бакапы с хостинга
и подытожит статью скрипт который всё это установит в «два клика».
С удовольствием выслушаю замечания и дополнения.