На эту тему, наверное, написано самое большое количество статей. Многие авторы делятся своим опытом в построении домашней системы, у всех разные вариации, разное железо, разная инфраструктура, разное ПО, разные стартовые позиции (время, опыт, финансы, желание) и главное - разные цели: кто-то хочет файлохранилище, кто-то хочет домашний хостинг сайтов, а кто-то хочет медиасервер. Кто-то хочет невероятную отказоустойчивость и безопасность, а кто-то хочет минимальное потребление, тишину и компактность и т.д.. Наверное, технари в определённый момент приходят к тому, что должны построить собственный домашний сервер. Думаю, это могло быть четвёртым пунктом к делам, которые человек должен сделать за свою жизнь, наряду с выращиванием сына, посадкой дерева и строительством дома.
Вот и я потихоньку пришёл к тому, чтобы сделать свой домашний сервер. Точнее, идея появилась ещё со школьных времён, но вот реализовать в каком-либо виде получилось только сейчас. И я бы хотел поделиться тем, что у меня получилось, с читателями Хабра, и ко всем написанным статьям на эту тему я готов добавить ещё одну, так как думаю что мой опыт может быть интересен. В любом случае - велком под кат, если заинтересовало.
Цель
Домашним сервером я хотел решить несколько задач, перечисляю их в порядке убывания важности для меня:
На данный момент мне удалось добиться всего, кроме 4 и 6 пунктов (к умному дому хочу полноценно прийти уже в процессе постройки обычного, неумного дома, а от идеи роутера и домашнего сервера в одной коробке отказался, начитавшись советов в Интернете, но всё же готов и её попробовать в дальнейшем, но пока не горит).
Железо
Думать о собственном домашнем сервере я начал ещё лет 5 назад, и конечно же в первую очередь начал задумываться над тем, а на каком железе всё это может работать. За всё время планирования я рассматривал следующие варианты:
Критерии, которые лично я ставил к готовому решению, перечисляю в порядке убывания важности для меня:
Найти решение, которое удовлетворяло бы абсолютно все мои критерии - не получилось, но получилось найти наиболее близкое к идеалу. Забегу вперёд и скажу, что остановился на неттопе, ИМХО, для домашнего сервера это лучший вариант, который подошёл практически по всем параметрам. Но позвольте рассказать о самом пути выбора, так как если вы сейчас в поиске и ваши критерии отличаются от моих, то, возможно, один из отвергнутых мной вариантов подойдёт вам.
Старый смартфон на Android
Очень специфический вариант, но и такие гайды в сети можно найти (вот, например, и вот). Есть умельцы, которые запускают полноценные веб сервера и даже используют смартфоны как файлохранилище.
Плюсы:
Минусы:
VPS/VDS
Плюсы:
Минусы
На самом деле, это очень хороший вариант и если перечисленные минусы не кажутся такими уж и страшными, то аренда отдельного VPS/VDS для домашнего сервера - замечательное решение. Но к сожалению для меня это серьёзные недостатки, с которыми я не смог смириться.
Настольный ПК из старых комплектующих, найденных дома/на Авито
Многие начинают с этого и на этом и останавливаются, так как это самое гибкое и при этом дешёвое решение. Я бы может быть тоже остановился на этом варианте, но к сожалению у меня не было времени, умения и желания собирать сервер своими руками, соответственно качество того, что я сделаю было бы под большим вопросом. По вопросу компактности - это точно не компактное решение, (представьте, чаще всего получается обычный настольный компьютер) но если постараться собрать на материнской плате Mini-ITX, то может получиться очень даже ничего. Проблема в том, что на рынке таких плат не так уж и много (или я плохо искал) и всегда есть риск в собственной сборке завязаться на какой-то определённый тип комплектующих, которые в дальнейшем могут перестать производиться и в дальнейшем при поломке есть шанс не найти их в продаже. Но опять же, всё зависит от того, как соберёте. Я никогда хорошо в железе не разбирался, поэтому собирать из подручных средств казалось для меня сомнительной идеей.
Плюсы:
Минусы:
Настольный ПК из новых комплектующих
Пытался самостоятельно подобрать комплектующие, используя конструктор на сайте магазина DNS. К сожалению, получившаяся сборка канула в лету, но по памяти я примерно могу рассказать, что у меня получилось.
Принципиально искал материнскую плату mini-ITX, чтобы сервер не получился размером с домашний компьютер. Такие платы обычно идут с несъёмным процессором, не так уж много корпусов и других комплектующих. Самая минимальная сборка вышла у меня примерно на 20 тысяч рублей (это года 2-3 назад). Решил отказаться, так как уверенности в том, что это лучшее решение - не было.
Плюсы:
Минусы:
В принципе, этот вариант не сильно отличается от предыдущего, поэтому расписывать его особо смысла нет.
Одноплатный компьютер
Наконец-то я подошёл к варианту, который реализовал самостоятельно и про который мне точно есть что сказать. Raspberry Pi 4B+ с 2GB RAM мне подарили коллеги на День Рождения. На тот момент такая штучка без дополнительных вещей (HDMI, Ethernet кабель, MicroSD, кейс) стоила тысяч 5. Сейчас, конечно, из-за проблем с доступностью цена подскочила до 15 тысяч. И конечно же первое, что я хотел попробовать - это обкатать на ней идею домашнего сервера. И я был бы счастлив, если бы она покрыла все мои потребности, но (спойлер), к сожалению, нет.
К малинке я дополнительно купил HDD 2.5 на 2TB, чтобы хранить на нём все данные, к жёсткому диску купил кейс и переходник SATA -> USB-A. Также мне коллега подогнал железный кейс для малинки для отвода тепла, так как малинка нехило нагревается при работе.
За всё время пользования я реализовал 2 варианта:
Изначально попробовал OpenWRT. Очень манила идея роутер+сервер в одном флаконе. К сожалению, у меня не получилось настроить Wi-Fi 5 GHz, пришлось пользоваться 2.4, количество доступных пакетов в прошивке для OpenWRT на ARM сильно ограничено. Скорость работы с поднятыми сервисами оставляла желать лучшего (я не замерял, но работать было некомфортно).
Когда я понял, что мне не хватает набора доступных приложений в OpenWRT на ARM, я решил перейти на более привычное для себя решение - Ubuntu Server. Здесь всё оказалось намного проще, я написал docker-compose файл и через него запускал все сервисы. Реализовывать работу сервера как роутера не стал, а просто подключил малинку к уже существующей домашней Wi-Fi сети.
Главная проблема, с которой я столкнулся - это медленная работа Nextcloud. Что действительно было причиной - я не знаю. Искал в Интернете по запросу медленного соединения, нашёл информацию, что в малинке сеть работает через USB-шину, а значит одновременная работа подключённого жёсткого диска и запросов будет проходить довольно медленно, но также нашёл информацию, что эту проблему в малинке 4 модели исправили. Возможно, бутылочным горлышком был процессор, но в любом случае я не искал решения этой проблемы, так как оперативной памяти мне также не хватало. Даже простого подключения по SSH можно было ожидать около минуты, а задержка при вводе команд могла свести с ума. И да, сервер Майнкрафт запустить можно будет, но играть будет не очень приятно.
Плюсы:
Минусы:
На зато из малинки можно собрать по-настоящему компактный сервер. В Интернете нашёл обвязки и кейсы к малинке, которые позволяют подключить и комфортно разместить два HDD 2.5, добавить кулер и UPS. Подобные решения можно посмотреть здесь.
Готовый NAS
NAS - тоже очень популярный вариант. Здорово, что ты покупаешь сразу готовое рабочее решение. Хардварный RAID - это вообще огонь. Но тоже рассматривать не стал, так как хорошие варианты стоят крайне дорого.
Плюсы:
Минусы:
SOHO
SOHO - расшифровывается как Small Office/Home Office, то есть сервер для маленького офиса или для домашнего использования. По описанию кажется, что это именно та штука, которая на самом деле нам нужна. И да, это идеальный вариант, но основные минусы - стоимость и доступность. Самый популярный вариант - это HP MicroServer (тот, что на картинке). В России таких было очень много, так что такую штуку без труда можно найти на вторичном рынке, но вот если вы хотите новую - придётся заказывать из-за рубежа (если получится) по высоким ценам и ещё немало платить за доставку. Так что этот вариант я тоже отклонил.
Плюсы:
Минусы:
Amber PRO
Эту штуку я нашёл случайно. Она мне понравилась тем, что точно создана для тех вещей, которые я и хотел. В одном флаконе это: роутер, файлохранилище и домашний сервер. Всё ПО уже установлено и с ним не нужно возиться. Можно заказать сразу с двумя жёсткими дисками для настройки программного RAID. Но есть пара важных для меня минусов: ОЗУ - 2 GB и проприетарное ПО. Проблема с ПО в том, что если что-то не будет работать, то вряд ли я смогу починить это самостоятельно, а помощь от зарубежной компании вряд ли смогу получить оперативно. В этом случае я больше люблю надеятся на собственные силы и на Интернет.
Amber Pro найти можно здесь.
Плюсы:
Минусы:
Мини ПК (неттоп)
Тот вариант, на котором я остановился. Изначально неттопы точно не подходят под те цели, которые передо мной стояли. Такие машины обычно ставятся домой или в офис как персональные ПК, занимая при этом минимум места и не имея большой производительности. Но держим в голове следующие моменты: на домашний сервер хочется потратить минимум места, высокая производительность - это хорошо, но 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.
По системных характеристикам:
Жёстких дисков в комплекте не было, но я использовал тот, который раннее использовался для сервера на 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.
Плюсы:
Минусы:
Итоги
Мог ли я собрать более качественное и дешёвое решение? Определённо, да. Как минимум я находил на AliExpress неттопы сильно дешевле и с возможностью установить два жёстких диска. Но обычно такие решения даже непонятно какая компания делает и очень тяжело вообще о них найти информацию, кроме как на странице продавца. А если бы я заморочился с собственной сборкой на основе Mini-ITX - было бы вообще замечательно. Но дело в том, что Minisforum сделали это уже за меня и мне не пришлось тратить на это силы и время. И главное, в самосборе я был бы завязан на определённые комплектующие, доступность которых могла бы стоять под вопросом. В моём решение стоит под вопросом только доступность самих неттопов (и то есть параллельный импорт).
На этом бы я хотел закончить, чтобы не делать статью очень уж длинной. О программной части сервера хотел бы рассказать в следующей статье, если эта статья окажется интересной.