Homelab Server ⟩ Yet Another Домашний Сервер. Железо (часть 1)

Yet Another Домашний Сервер. Железо (часть 1)

На эту тему, наверное, написано самое большое количество статей. Многие авторы делятся своим опытом в построении домашней системы, у всех разные вариации, разное железо, разная инфраструктура, разное ПО, разные стартовые позиции (время, опыт, финансы, желание) и главное - разные цели: кто-то хочет файлохранилище, кто-то хочет домашний хостинг сайтов, а кто-то хочет медиасервер. Кто-то хочет невероятную отказоустойчивость и безопасность, а кто-то хочет минимальное потребление, тишину и компактность и т.д.. Наверное, технари в определённый момент приходят к тому, что должны построить собственный домашний сервер. Думаю, это могло быть четвёртым пунктом к делам, которые человек должен сделать за свою жизнь, наряду с выращиванием сына, посадкой дерева и строительством дома.

Вот и я потихоньку пришёл к тому, чтобы сделать свой домашний сервер. Точнее, идея появилась ещё со школьных времён, но вот реализовать в каком-либо виде получилось только сейчас. И я бы хотел поделиться тем, что у меня получилось, с читателями Хабра, и ко всем написанным статьям на эту тему я готов добавить ещё одну, так как думаю что мой опыт может быть интересен. В любом случае - велком под кат, если заинтересовало.

Цель

Домашним сервером я хотел решить несколько задач, перечисляю их в порядке убывания важности для меня:

  • Файлохранилище с доступом из Интернета для себя и для своей семьи.
  • Отвязка от сервисов корпораций (хотя бы частичная).
  • Хостинг самописных приложений.
  • Умный дом.
  • Синхронизация данных на устройствах.
  • Роутер.

На данный момент мне удалось добиться всего, кроме 4 и 6 пунктов (к умному дому хочу полноценно прийти уже в процессе постройки обычного, неумного дома, а от идеи роутера и домашнего сервера в одной коробке отказался, начитавшись советов в Интернете, но всё же готов и её попробовать в дальнейшем, но пока не горит).

Железо

Думать о собственном домашнем сервере я начал ещё лет 5 назад, и конечно же в первую очередь начал задумываться над тем, а на каком железе всё это может работать. За всё время планирования я рассматривал следующие варианты:

  • Старый смартфон.
  • VPS/VDS.
  • Настольный ПК из старых комплектующих, найденных дома/на Авито.
  • Настольный ПК из новых комплектующих.
  • Одноплатный компьютер.
  • Готовый NAS.
  • SOHO.
  • Amber PRO.
  • Мини-ПК (неттоп).

Критерии, которые лично я ставил к готовому решению, перечисляю в порядке убывания важности для меня:

  • Физический доступ к серверу.
  • Распространённая платформа, которая поддерживает распространённое серверное open source ПО.
  • Ресурсов хватает, чтобы запустить сервер Майнкрафт на 10 слотов (одновременных игроков).
  • Качественная сборка.
  • Компактность.
  • Тишина при выполнении задач и минимальный нагрев.
  • Доступность на рынке.
  • Минимальное обслуживание.
  • Отказоустойчивость
  • Возможность модификации комплектующих.

Найти решение, которое удовлетворяло бы абсолютно все мои критерии - не получилось, но получилось найти наиболее близкое к идеалу. Забегу вперёд и скажу, что остановился на неттопе, ИМХО, для домашнего сервера это лучший вариант, который подошёл практически по всем параметрам. Но позвольте рассказать о самом пути выбора, так как если вы сейчас в поиске и ваши критерии отличаются от моих, то, возможно, один из отвергнутых мной вариантов подойдёт вам.

Старый смартфон на Android

Очень специфический вариант, но и такие гайды в сети можно найти (вот, например, и вот). Есть умельцы, которые запускают полноценные веб сервера и даже используют смартфоны как файлохранилище.

Плюсы:

  • Максимально дёшево - просто достать из ящика старый телефон и запустить
  • Это самое компактное решение из всех возможных
  • Точно не шумит

Минусы:

  • На Android вряд ли можно найти большое количество ПО, которое может вам понадобиться на сервере
  • Ресурсов вряд ли хватит на что-то больше, чем хостить сайты
  • Если телефон сломается, то найти точно такой же будет сложно, а замена на другой телефон может оказаться тяжёлой задачей (разблокировать загрузчик, проверить, подойдёт ли ПО и т.д.), это новая исследовательская задача
  • Подключить жёсткие диски, а ещё и настроить RAID - нетривиальная задача, отказоустойчивость хромает
  • Выглядит кустарно: провода, переходники и прочее (но если обойтись только телефоном, то норм)

VPS/VDS

Плюсы:

  • Не нужно обслуживать железо
  • Ресурсов столько, насколько готовы платить, ограничений нет
  • Я вас обманул, вот - самое компактное решение, оно вообще не занимает места дома и не шумит
  • Настраивать RAID 1 не нужно - это должен делать за вас ваш провайдер и заботиться о том, чтобы данные не пропали
  • Отказоустойчивость - скорее всего провайдер намного лучше вас сможет обеспечить работоспособность сервера 24/7, это всё-таки его работа

Минусы 

  • Нет физического доступа к железу
  • Требует постоянных денежных взносов (но сейчас есть решения, когда вы можете арендовать сервер единожды за крупную сумму и пользоваться им пожизненно)
  • Провайдер может запрещать устанавливать некоторое ПО (например, игровой сервер Майнкрафт)
  • По факту данные находятся не у вас, а у провайдера

На самом деле, это очень хороший вариант и если перечисленные минусы не кажутся такими уж и страшными, то аренда отдельного VPS/VDS для домашнего сервера - замечательное решение. Но к сожалению для меня это серьёзные недостатки, с которыми я не смог смириться.

Настольный ПК из старых комплектующих, найденных дома/на Авито

Многие начинают с этого и на этом и останавливаются, так как это самое гибкое и при этом дешёвое решение. Я бы может быть тоже остановился на этом варианте, но к сожалению у меня не было времени, умения и желания собирать сервер своими руками, соответственно качество того, что я сделаю было бы под большим вопросом. По вопросу компактности - это точно не компактное решение, (представьте, чаще всего получается обычный настольный компьютер) но если постараться собрать на материнской плате Mini-ITX, то может получиться очень даже ничего. Проблема в том, что на рынке таких плат не так уж и много (или я плохо искал) и всегда есть риск в собственной сборке завязаться на какой-то определённый тип комплектующих, которые в дальнейшем могут перестать производиться и в дальнейшем при поломке есть шанс не найти их в продаже. Но опять же, всё зависит от того, как соберёте. Я никогда хорошо в железе не разбирался, поэтому собирать из подручных средств казалось для меня сомнительной идеей.

Плюсы:

  • Это может оказаться крайне дёшево
  • x86-64 - популярная платформа, куда можно будет установить практически любое серверное ПО, которое вы захотите
  • ОЗУ, ПЗУ, процессор могут обойтись сильно дешевле, чем в других решениях (а иногда и бесплатно), поэтому ресурсов может быть очень много
  • Модифицируйте и обновляйте железо сколько угодно

Минусы:

  • То, как будет собрано - полностью зависит от вас и от выбранных комплектующих.
  • Вряд ли решение получится компактным
  • То, насколько будет тихим сервер - полностью зависит от вас, но пассивное охлаждение - дорого, а если лишить его вентиляторов - возможен тротлинг
  • Скорее всего, обслуживать его вам придётся частенько, чаще, чем все остальные варианты

Настольный ПК из новых комплектующих

Пытался самостоятельно подобрать комплектующие, используя конструктор на сайте магазина DNS. К сожалению, получившаяся сборка канула в лету, но по памяти я примерно могу рассказать, что у меня получилось.

Принципиально искал материнскую плату mini-ITX, чтобы сервер не получился размером с домашний компьютер. Такие платы обычно идут с несъёмным процессором, не так уж много корпусов и других комплектующих. Самая минимальная сборка вышла у меня примерно на 20 тысяч рублей (это года 2-3 назад). Решил отказаться, так как уверенности в том, что это лучшее решение - не было.

Плюсы:

  • Любое популярное x86-64 ПО, ограничений нет
  • Это достаточно компактное решение (если не кустарить ИБП, RAID и т.д.)

Минусы:

  • Может оказаться недешёво, но всё зависит от ваших умений. Лично мне комфортно уместиться до 30 тысяч не получилось
  • Вы также имеете возможность менять комплектующие, но в моём случае условие mini-ITX создавало сильные ограничения

В принципе, этот вариант не сильно отличается от предыдущего, поэтому расписывать его особо смысла нет.

Одноплатный компьютер

Наконец-то я подошёл к варианту, который реализовал самостоятельно и про который мне точно есть что сказать. Raspberry Pi 4B+ с 2GB RAM мне подарили коллеги на День Рождения. На тот момент такая штучка без дополнительных вещей (HDMI, Ethernet кабель, MicroSD, кейс) стоила тысяч 5. Сейчас, конечно, из-за проблем с доступностью цена подскочила до 15 тысяч. И конечно же первое, что я хотел попробовать - это обкатать на ней идею домашнего сервера. И я был бы счастлив, если бы она покрыла все мои потребности, но (спойлер), к сожалению, нет.

К малинке я дополнительно купил HDD 2.5 на 2TB, чтобы хранить на нём все данные, к жёсткому диску купил кейс и переходник SATA -> USB-A. Также мне коллега подогнал железный кейс для малинки для отвода тепла, так как малинка нехило нагревается при работе.

За всё время пользования я реализовал 2 варианта:

  1. OpenWRT + Docker + Docker compose
  2. Ubuntu + Docker + Docker compose

Изначально попробовал OpenWRT. Очень манила идея роутер+сервер в одном флаконе. К сожалению, у меня не получилось настроить Wi-Fi 5 GHz, пришлось пользоваться 2.4, количество доступных пакетов в прошивке для OpenWRT на ARM сильно ограничено. Скорость работы с поднятыми сервисами оставляла желать лучшего (я не замерял, но работать было некомфортно).

Когда я понял, что мне не хватает набора доступных приложений в OpenWRT на ARM, я решил перейти на более привычное для себя решение - Ubuntu Server. Здесь всё оказалось намного проще, я написал docker-compose файл и через него запускал все сервисы. Реализовывать работу сервера как роутера не стал, а просто подключил малинку к уже существующей домашней Wi-Fi сети.

Главная проблема, с которой я столкнулся - это медленная работа Nextcloud. Что действительно было причиной - я не знаю. Искал в Интернете по запросу медленного соединения, нашёл информацию, что в малинке сеть работает через USB-шину, а значит одновременная работа подключённого жёсткого диска и запросов будет проходить довольно медленно, но также нашёл информацию, что эту проблему в малинке 4 модели исправили. Возможно, бутылочным горлышком был процессор, но в любом случае я не искал решения этой проблемы, так как оперативной памяти мне также не хватало. Даже простого подключения по SSH можно было ожидать около минуты, а задержка при вводе команд могла свести с ума. И да, сервер Майнкрафт запустить можно будет, но играть будет не очень приятно.

Плюсы:

  • Это очень дёшево (во всяком случае, на тот момент)
  • Малинку можно купить практически везде
  • GPIO - открываются новые возможности
  • Компактный и тихий

Минусы:

  • Платформа ARM накладывает свои ограничения
  • Ресурсов крайне мало
  • Сборка из малинки и жёстких дисков выглядит кустарно

На зато из малинки можно собрать по-настоящему компактный сервер. В Интернете нашёл обвязки и кейсы к малинке, которые позволяют подключить и комфортно разместить два HDD 2.5, добавить кулер и UPS. Подобные решения можно посмотреть здесь.

Готовый NAS

NAS - тоже очень популярный вариант. Здорово, что ты покупаешь сразу готовое рабочее решение. Хардварный RAID - это вообще огонь. Но тоже рассматривать не стал, так как хорошие варианты стоят крайне дорого.

Плюсы:

  • Готовое решение из коробки
  • Хорошая сборка, так как сделали это за нас
  • Хорошая отказоустойчивость, особенно если добавить ИБП
  • Минимальное обслуживание

Минусы:

  • Жалко, что платишь деньги за ПО и синхронизацию, а по факту всё делаешь под себя и превращаешь NAS ещё и в хостинг
  • Если хочется много RAM и классный процессор - придётся сильно много заплатить
  • Массивный

SOHO

SOHO - расшифровывается как Small Office/Home Office, то есть сервер для маленького офиса или для домашнего использования. По описанию кажется, что это именно та штука, которая на самом деле нам нужна. И да, это идеальный вариант, но основные минусы - стоимость и доступность. Самый популярный вариант - это HP MicroServer (тот, что на картинке). В России таких было очень много, так что такую штуку без труда можно найти на вторичном рынке, но вот если вы хотите новую - придётся заказывать из-за рубежа (если получится) по высоким ценам и ещё немало платить за доставку. Так что этот вариант я тоже отклонил.

Плюсы:

  • Готовое решение
  • Его точно можно назвать отказустойчивым
  • Высокая производительность

Минусы:

  • Многие функции, за которые мы платим, вряд ли будут нужны
  • Не купить в ближайшем магазине
  • Дорого
  • Некомпактный (но компактнее обычного настольного ПК)

Amber PRO

Эту штуку я нашёл случайно. Она мне понравилась тем, что точно создана для тех вещей, которые я и хотел. В одном флаконе это: роутер, файлохранилище и домашний сервер. Всё ПО уже установлено и с ним не нужно возиться. Можно заказать сразу с двумя жёсткими дисками для настройки программного RAID. Но есть пара важных для меня минусов: ОЗУ - 2 GB и проприетарное ПО. Проблема с ПО в том, что если что-то не будет работать, то вряд ли я смогу починить это самостоятельно, а помощь от зарубежной компании вряд ли смогу получить оперативно. В этом случае я больше люблю надеятся на собственные силы и на Интернет.

Amber Pro найти можно здесь.

Плюсы:

  • Максимально готовое решение
  • Красиво выглядит
  • Приемлимая цена (хотя не за такие характеристики)
  • Компактно
  • Минимальное обслуживание

Минусы:

  • Всего 2 GB ОЗУ без возможности расширить
  • Проприетарное ПО
  • Купить в магазине у дома нельзя, но хотя бы можно придумать что-то с доставкой

Мини ПК (неттоп)

Тот вариант, на котором я остановился. Изначально неттопы точно не подходят под те цели, которые передо мной стояли. Такие машины обычно ставятся домой или в офис как персональные ПК, занимая при этом минимум места и не имея большой производительности. Но держим в голове следующие моменты: на домашний сервер хочется потратить минимум места, высокая производительность - это хорошо, но Cyberpunk запускать на нём не надо и нейронки гонять тоже (хотя может и надо, но изначально для этого не рассматривалось). Я просмотрел кучу моделей (особенно привлекали Intel NUC), но остановился на Minisforum, в основном по той причине, что у них есть модели, в которые можно поместить два HDD 2.5 и подключить их по нормальной SATA. Это в итоге и сыграло решающую роль.

На картинке изображён Minisforum HM80, но для себя я приобрёл Minisforum EliteMini HM50 (потому что на AliExpress не нашёл HM80 и не устраивала цена HM90). Во внешнем виде отличия у них минимальны. Сейчас неттопы Minisforym можно свободно купить на Ozon, Wildberries, AliExpress и на официальном сайте. Правда на Ozon и Wildberries они стабильно на 5-10 тысяч дороже. С официального сайта заказывать не решился, так как доставки в Россию нет, а оформлять почтовый адрес в США и делать переотправку не хотелось, так как реальная конечная цена оказалась бы неизвестной, а сервисы, которые всё делают за тебя берут наценку больше, чем наценка на AliExpress. Так что решил просто заказать на AliExpress.

По системных характеристикам:

  • CPU: AMD Ryzen 5 4500U
  • RAM: 16GB
  • SSD: 512GB

Жёстких дисков в комплекте не было, но я использовал тот, который раннее использовался для сервера на Raspberry Pi: Toshiba 2TB HDWL120UZSVA

Пока что жёсткий диск у меня один, но позже хочу купить такой же второй, чтобы сделать RAID 1 массив. Несмотря на то, что в корпусе есть специальный отдел для двух HDD 2.5, мой жёсткий диск поставился туго. Такое ощущение, что быть его в корпусе неттопа в принципе не должно. Вот так выглядит установка жёстких дисков. В общей сумме у меня вышло около 37 тысяч (точные подсчёты не вёл). Это не дёшево, но все мои потребности покрывает с головой.

Пользуюсь сервером уже около недели и не могу нарадоваться скорости работы и скорости доступа к данным. А главное - он не греется и совершенно не шумит.

Подключён напрямую Ethernet кабелем к роутеру, дабы не забивать Wi-Fi канал.

И да, на нём я спокойно могу держать сервер Minecraft. В настройках игры ставлю максимальную прорисовку и проблем не происходит совсем. Сейчас у меня запущенно параллельно 12 сервисов и в сумме они занимают в среднем около 10% CPU и 30% RAM (4-5 GB). Больше всего поджирает, конечно же, Майнкрафт, без него RAM съедаться будет около 2-4 GB.

Плюсы:

  • Компактное решение
  • Хорошая сборка (потому что не самостоятельно собирал)
  • Приятный внешний вид
  • Любое x86-64 ПО на выбор
  • Возможность заменить жёсткие диски, SSD, RAM

Минусы:

  • Не купить в свободном доступе
  • Точно потребует минимального обслуживания

Итоги

Мог ли я собрать более качественное и дешёвое решение? Определённо, да. Как минимум я находил на AliExpress неттопы сильно дешевле и с возможностью установить два жёстких диска. Но обычно такие решения даже непонятно какая компания делает и очень тяжело вообще о них найти информацию, кроме как на странице продавца. А если бы я заморочился с собственной сборкой на основе Mini-ITX - было бы вообще замечательно. Но дело в том, что Minisforum сделали это уже за меня и мне не пришлось тратить на это силы и время. И главное, в самосборе я был бы завязан на определённые комплектующие, доступность которых могла бы стоять под вопросом. В моём решение стоит под вопросом только доступность самих неттопов (и то есть параллельный импорт).

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

[источник]