На эту тему, наверное, написано самое большое количество статей на Хабре. Многие авторы делятся своим опытом в построении домашней системы, у всех разные вариации, разное железо, разная инфраструктура, разное ПО, разные стартовые позиции (время, опыт, финансы, желание) и главное - разные цели: кто-то хочет файлохранилище, кто-то хочет домашний хостинг сайтов, а кто-то хочет медиасервер. Кто-то хочет невероятную отказоустойчивость и безопасность, а кто-то хочет минимальное потребление, тишину и компактность и т.д.. Наверное, технари в определённый момент приходят к тому, что должны построить собственный домашний сервер. Думаю, это могло быть четвёртым пунктом к делам, которые человек должен сделать за свою жизнь, наряду с выращиванием сына, посадкой дерева и строительством дома.
Вот и я потихоньку пришёл к тому, чтобы сделать свой домашний сервер. Точнее, идея появилась ещё со школьных времён, но вот реализовать в каком-либо виде получилось только сейчас. И я бы хотел поделиться тем, что у меня получилось, с читателями Хабра, и ко всем написанным статьям на эту тему я готов добавить ещё одну, так как думаю что мой опыт может быть интересен. В любом случае - велком под кат, если заинтересовало.
Цель
Домашним сервером я хотел решить несколько задач, перечисляю их в порядке убывания важности для меня:
Файлохранилище с доступом из Интернета для себя и для своей семьи.
Отвязка от сервисов корпораций (хотя бы частичная).
Хостинг самописных приложений.
Умный дом.
Синхронизация данных на устройствах.
Роутер.
На данный момент мне удалось добиться всего, кроме 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 ПО, ограничений нет | Может оказаться не дешёво, но всё зависит от ваших умений. Лично мне комфортно уместиться до 30 тысяч не получилось |
Это достаточно компактное решение (если не кустарить ИБП, RAID и т.д.) | Вы также имеете возможность менять комплектующие, но в моём случае условие mini-ITX создавало сильные ограничения |
В принципе, этот вариант не сильно отличается от предыдущего, поэтому расписывать его особо смысла нет.
Одноплатный компьютер
Наконец-то я подошёл к варианту, который реализовал самостоятельно и про который мне точно есть что сказать. Raspberry Pi 4B+ с 2GB RAM мне подарили коллеги на День Рождения. На тот момент такая штучка без дополнительных вещей (HDMI, Ethernet кабель, MicroSD, кейс) стоила тысяч 5. Сейчас, конечно, из-за проблем с доступностью цена подскочила до 15 тысяч. И конечно же первое, что я хотел попробовать - это обкатать на ней идею домашнего сервера. И я был бы счастлив, если бы она покрыла все мои потребности, но (спойлер), к сожалению, нет.
К малинке я дополнительно купил HDD 2.5 на 2TB, чтобы хранить на нём все данные, к жёсткому диску купил кейс и переходник SATA -> USB-A. Также мне коллега подогнал железный кейс для малинки для отвода тепла, так как малинка нехило нагревается при работе.
За всё время пользования я реализовал 2 варианта:
OpenWRT + Docker + Docker compose
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 можно было ожидать около минуты, а задержка при вводе команд могла свести с ума. И да, сервер Майнкрафт запустить можно будет, но играть будет не очень приятно.
Плюсы | Минусы |
Это очень дёшево (во всяком случае, на тот момент) | Платформа ARM накладывает свои ограничения |
Малинку можно купить практически везде | Ресурсов крайне мало |
GPIO - открываются новые возможности | Сборка из малинки и жёстких дисков выглядит кустарно |
Компактный и тихий |
На зато из малинки можно собрать по-настоящему компактный сервер. В Интернете нашёл обвязки и кейсы к малинке, которые позволяют подключить и комфортно разместить два 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 сделали это уже за меня и мне не пришлось тратить на это силы и время. И главное, в самосборе я был бы завязан на определённые комплектующие, доступность которых могла бы стоять под вопросом. В моём решение стоит под вопросом только доступность самих неттопов (и то есть параллельный импорт).
На этом бы я хотел закончить, чтобы не делать статью очень уж длинной. О программной части сервера хотел бы рассказать в следующей статье, если эта статья окажется интересной.