Словосочетание “домашний сервер” повергает некоторых людей в недоумение. “Зачем вообще он нужен?” Ну, допустим, это круто! Разве не аргумент? :) Эта статья для тех, кому не нужно объяснять “зачем”. Просто делюсь своим опытом в хронологическом представлении.
Автобиографический пролог
Мои приключения в мире IT начались примерно в 2002 году, с детского увлечения IRC чатами.
И если одни ребятки довольствовались просто общением, или созданием отдельных комнат на публичных серверах, то лично я жаждал абсолютной власти. За сей причиной, мне в распоряжение захотелся целый отдельный IRC сервер, как говорится, с блек джеком и сервисами. Время было трудное, интернет зверски дорогой, ну а хостинг VDS для не работающего пацана был просто недостижимой мечтой. Но, мир ведь не без добрых людей!
И вот однажды, непринуждённо общаясь в чатике я узнал, что есть среди нас один добрый дяденька, давно переехавший в США. А поскольку интернет и бесперебойное электричество для граждан США – это дело вполне обычное, решил тот добрый дядя, что может бесплатно захостить у себя дома проекты начинающих сайтоводов. Набравшись наглости, я решил попросить кусочек хостинга и для своего проекта.
В чём была суть проекта? Да ни в чём. Мне просто было интересно сделать хоть что-нибудь своими руками, по этому я в основном импровизировал. Свой хостинг я действительно получил. И начал вместе с другом, потихонечку, пилить сайтик на php. Но, с каждым днём появлялись новые требования к веб серверу. Я так задолбал своего бесплатного хостера просьбами что-либо донастроить, что он психанул и выделил мне целую виртуалку с рутовым доступом. Мол “На! Сам админь, только отстань.” А я и рад! Ведь как ни крути, теперь я мог установить туда вообще всё что угодно, включая вожделенный UnrealIRCd.
Так я впервые столкнулся с администрированием *nix систем. И не абы чего, а сервера на FreeBSD! Лихой старт для нуба, не так ли? ;) Но ведь, как говорится “тяжело в учении – легко в бою”. И в последствии, этот опыт помог мне устроиться на мою первую админскую работу, в хостинг провайдер.
Так что, добрый дяденька, Андрей! Если ты вдруг прочитаешь эту статью, знай, что в мире есть как минимум один человек, которому ты проложил путь к любимой профессии. Спасибо! :)
Очумелые ручки
С тех пор мысль о собственном домашнем сервере плотно засела в моей голове. Ведь какой был пример! Но, едва ли я мог поднять у себя на антресолях сервак с серьёзным аптаймом и отказоустойчивостью. Хотя, по меньшей мере, стенд для экспериментов из какого-то старого хлама я себе всё-же собрал. Позже я от него избавился, потому, что интернет по ADSL и периодические отключения электричества сводили весь мой труд к нулю.
Прошло какое-то время и однажды мне приспичило поднять домашний SIP сервер. Сервис не шибко требовательный и было решено разместить его прямо на роутере.
2015 год.
Я создал абонентов и раздал аккаунты своим друзьям, таким образом, построив для себя бесплатную телефонную связь. Сейчас это выглядит бесполезным, но тогда телефонные разговоры стоили денег, а tas-ix (сеть обмена трафиком внутри страны) был бесплатным.
Чем глубже в лес…
Сервер на роутере – это здорово, но тесновато. И вот, однажды у меня зачесались руки построить умный дом. При том, от телефонии избавляться я тоже не собирался. Почесав репу, я решил, что мне нужно что-то малогабаритное и желательно, чтобы могло долго жить на небольшом ИБП. Самым подходящим вариантом показался одноплатник на ARM процессоре и мой серверный уголок стал выглядеть вот так:
2019 год. “Серверная” переехала в подвал.
В этой кучке расположился NVR на 8 каналов, OrangePI RK3399 в качестве домашнего сервера, роутер ASUS в роли точки доступа, а так-же очень старый, но всё-же управляемый свитч D-Link, купленный у какого-то бомжа за копейки. Основным маршрутизатором служил Mikrotik ac2, установленный на первом этаже.
Вот так круто! Думал я, накидывая на одноплатник Node RED. Только вот SoC на этом одноплатнике оказался чрезвычайно горячим и тормозным. Характеристики выглядели борзо, в то время, как фактическая производительность сильно огорчала. Я пытался его охлаждать, но в результате добился лишь увеличения шума. Чем больше я накидывал узлов в Node RED, тем более ощущалась нехватка производительности.
К чёрту этот ваш ARM!
Производительность оказалась ещё и не самой большой из бед. Поскольку из готового под ARM есть далеко не всё, признаться, я задолбался компилировать недостающий софт, постоянно наступая на грабли зависимостей. Тем более, что компиляция на таком дохлом железе длилась целую вечность. А кое-что и вовсе не удалось запустить. Придя к мысли, что мне было бы гораздо комфортнее на x86 архитектуре, при этом, желая остаться в рамках энергоэффективности, я купил hp elitedesk 800 g2 mini. На борту был i3 6100, 8 гб DDR4, 128Gb nvme и в довесок SSD на 250Gb.
2020 год. На роль серверной стойки сгодился старый железный стеллаж, на котором раньше дома хранились соленья. :)
Новый сервер нашёл своё место на нижней полочке, вместе с видеорегистратором и UPS’ом. Как же я радовался этому малышу! Компактный, тихий, и невероятно мощный в сравнении с предшественником. Я сразу же повесил туда Proxmox и Nginx Proxy Manager. Теперь, я мог нарезать ресурсы на виртуалки и контейнеры, обеспечив тем самым изоляцию и невообразимое доселе удобство резервного копирования.
Всё казалось идеальным… Ровно до тех пор, пока не появилась потребность в большом хранилище. Да, в мини ПК можно запихать один жёсткий диск на 2.5″, но только один! И какой, к чёрту, сервер без зеркалирования? Я был почти уверен, что нашёл решение.
Надыбав внешнюю коробочку со встроенным RAID1, я воткнул туда пару хардов по 2тб и подключил в качестве хранилища прямо в proxmox. Но, к сожалению, подключение по USB оказалось совершенно не приемлемым. Раз в сутки-двое хранилище отваливалось. Я менял кабель, пытался отключить “засыпание” дисков – ничего не помогло. Стало очевидно, что это не будет нормально работать и я временно отложил запуск хранилища.
- Не обращайте внимание на не подключенное оборудование. Оно чужое и стояло там просто потому, что больше некуда положить. :)
А тем временем, уголок сисадмина разрастался и обретал более интересный вид. Старый D-Link’ковский свитч был заменен на Mikrotik CRS125, основной маршрутизатор заменен на Mikrotik ac3, а линк от провайдера переведён с меди на оптику и заведён прямо в подвал. Выклянчил… ;)
Далее, на место никчёмного, дешёвого ИБП встал тяжёлый инвертер со внешними аккумуляторами. На фото к новому инвертеру подключен один полудохлый аккумулятор. Позже я поставил два нормальных. Да, это было не дешёвое удовольствие, но оно того определённо стоило!
Хранилищу – быть!
У мини ПК определённо есть свои плюсы. Но необходимость в хранилище всё нарастала. Мне упорно советовали Synology, но я категорически не хотел покупать откровенно слабую железку по цене неплохого ПК, переплачивая исключительно за софт. Порывшись в объявлениях, я нашёл ещё один HP, но на этот раз среднего размера. На борту i3 10105, 16Gb DDR4 и nvme на 250Gb. А что самое приятное – наличие полноценного PCI-e. Я докупил к нему настоящий, серверный RAID контроллер LSI 9260-8i с возможностью подключения до 8 SATA дисков. Харды, ранее стоявшие в USB коробочке, переехали внутрь сервера. Правда, в связи с особенностями корпуса “белой” машины, они упаковались туда буквально “впритык” и возник вопрос о рабочей температуре дисков. Кстати, RAID контроллер из коробки идёт с пассивны охлаждением. Но, как выяснилось позже, его теплоотвод был рассчитан хорошо продуваемый серверный корпус. В обычном же кейсе он разогревается почти до сотни. Установка маленького кулера сбила температуру до вполне рабочих 40 градусов.
2023 год.
Как и предыдущий “белый” комп, этот был практически бесшумным. Замеры потребления показывали что-то около 30-40 ватт. Учитывая наличие жирной батарейки и надёжный оптический линк с провайдером, я обеспечил автономность работы своей мини серверной не менее, чем на 8 часов. По сути, это обеспечивало аптайм не хуже, чем у многих платных хостеров.
Всё было готово к размещению моих сайтов, (включая этот) прежде хостившиеся где попало. На сервере был поднят ещё один контейнер, предназначенный для виртуального хостинга.
Здоровое питание
В какой-то момент я добавил неуправляемый PoE свитч. Ведь у меня есть серьёзный ИБП, так почему бы не сделать автономными критически важные сетевые устройства? И пока питать надо было только камеры, вопросов к нему не было. Но мне понадобилось так-же запитать IP телефон и пару WiFi точек. И вот тут уже нужны vlan’ы.
Вообще, я давно истекал слюной на Mikrotik CRS328-24P-4S+RM, но его цена была серьёзным препятствием на пути к его покупке. Но, мечты ведь материализуются? :)
По невероятному стечению обстоятельств, именно этот свитч был списан в одной организации и достался мне в качестве оплаты за настройку корпоративной сети. Как неожиданно и приятно! :)
Он заменил собой неуправляемый кусок китайского г… и старенький mikrotik CRS125. В сети воцарил порядок. Теперь, отключения электричества, (которые, к слову, случаются частенько) меня вообще не волновали. Всё самое нужное работает от ИБП напрямую или через PoE. А при помощи управляемого свитча я смог правильно разделить сеть на основную, гостевую, а так-же vlan’ы для видеонаблюдения и для IoT устройств.
Тут к импровизированной стоечке прирос кабельный органайзер. Стоит не дорого, а выглядит солидно. :)
Один провайдер – хорошо, а два – лучше!
Мой провайдер, к сожалению, начал меня подводить. Периодические падения, бан 25 порта на выход, полный запрет торрента – всё это заставило задуматься о смене провайдера. Но я решил не отключаться от старого, а просто сделать его резервным. Снова пришлось клянчить оптический линк, но в этот раз протащили аж с ODF, так что теперь в бесперебойности интернета при отключении питания сомнений нет совсем.
Так, у обычного домашнего абонента, в свитче появился ещё один оптический линк… Подключавшие меня линейщики, увидев вот это всё, даже слегда растерялись. ;)
Чего-то не хватает…
У моего старого свитча был симпатичный LCD экранчик, отображающий загрузку сети. К сожалению, новый коммутатор был лишён такой фичи, а мне как-то даже стало её не хватать. Не то, что бы очень нужная вещь, но ведь и в правду, красивая? )
Порывшись в своей коробке с игрушками, я откопал TFT дисплей и платку с esp32. С помощью гугла и chatgpt удалось написать прошивку и сделать вот такой классный выносной монитор. Он собирает данные с микротика по snmp и рисует график.
О том, как повторить такое устройство – позже выйдет отдельная статья.
Кластер
Новый полноразмерный сервер меня вполне устраивал. Но когда появилась необходимость завести кое-какие виртуалки c Windows Server для специфических целей, я решил не тратить на это ресурсы основного сервера. По этому в стойке снова появился мини ПК. А раз узлов теперь несколько, можно за одно и поиграться с кластеризацией Proxmox.
2024 год.
Мне снова мало
В один прекрасный день, RAID контроллер пожаловался на один из хардов. Уж не знаю, насколько тут сыграло недостаточное охлаждения, но заменив оба диска, я задумался о переходе на промышленный формфактор. Жаль, конечно, было отказывать от супер экономичного “белого” ПК, но этим придётся пожертвовать. :)
Я долго пытался подобрать кейс, но к сожалению, локально и по адекватной цене ничего годного найти не удалось. Отличный вариант подвернулся в магазине ozon. Как оказалось, там полно всяких серверных приблуд и за 72$ по скидке мне попался просто охрененный 4-юнитовый серверный гроб кейс Mastero 4U450 с вылетом жопы на 45 сантиметров. Такая глубина меня более чем устраивала, поскольку кейс вполне помещается в отведённую ему полку. Но, при этом, он вмещает в себя полноразмерную материнскую плату, 6 больших хардов и ещё есть отсек в три дина, куда при желании можно воткнуть корзину с бэкплейном на 4 харда по 3.5″ (или ещё какую-нибудь фигню) Берём!
Заказ приехал примерно через 3 недели. Каково было моё удивление, когда я распаковал и пощупал изделие… Там был реально приличный металл! Даже заглушки сделаны из листа в полтора миллиметра. Я ведь был уверен, что за 72 доллара получу кейс, сравнимый с консервной банкой, но вместо этого отхватил суровый железный ящик.
Разумеется, мать и блок питания с HPшного ПК к такому кейсу не подойдёт. И новый сервер уже был собран на i3 12100, материнке Gigabyte B610M-K, с оперативкой DDR4 на 32Gb одной планкой.
Заводской корпусный кулер я сразу же заменил на управляемый, поскольку мне совершенно ни к чему постоянные высокие обороты и вытекающий из этого шум.
На момент написания этой статьи моя домашняя стоечка выглядит вот так. Возможно, через некоторое время, колхозная белая полка будет заменена на нормальный телекоммуникационный шкаф. А ещё, со временем, материнка в сервере заменится на полноразмерную ATX, во второй PCI-e слот которой будет воткнут 10-гигабитный сетевой интерфейс. Продолжение следует…