Введение
Этой статьёй я начинаю серию статей «Homelab с нуля». Сейчас у меня дома работают два гипервизора, сервер резервных копий, сеть из восьми VLAN и пара десятков сервисов которые я использую каждый день.
Я не профессиональный системный администратор и не проектировал всю схему заранее. Всё выросло постепенно, через три этапа: готовое сетевое хранилище (NAS), эксперимент с сервером на NixOS и, наконец, Proxmox и виртуализация. Каждый этап меня обучал чему-то новому, и, благодаря каждому, все выросло до достаточно логичной и масштабируемой инфраструктуры.
Эта статья — про мой путь. Большинству людей мой нынешний вариант точно не нужен, так как это очень излишне для дома. Просто это стало моим хобби, и я решил о нём написать. Буду очень рад, если кому-то моя писанина реально пригодится.
Этап первый: готовый NAS
Что такое NAS
NAS (Network Attached Storage) — сетевое хранилище: обычный компьютер с жесткими дисками, который стоит дома и раздаёт файлы по сети. Самые известные производители — Synology, TerraMaster, QNAP и другие.
Главное в готовом NAS — не железо, а операционная система. У Synology это DSM (DiskStation Manager), и в ней предусмотрено практически всё:
- общие папки для всех устройств в доме;
- фотоархив с автозагрузкой с телефонов;
- резервное копирование, в том числе в облако;
- мобильные приложения и доступ снаружи;
- каталог приложений или магазин приложений.
Всё настраивается в веб-интерфейсе, обновления выпускает производитель, и никаких глубоких знаний не требуется. Как говорится, — все доступно из коробки, покупай и пользуйся, как мобильный телефон со своей ОС.
С чего начинал я
Мой первый домашний сервер был простой «файлохранилкой» с дешевым железом. На тот момент тема домашних серверов была мне довольно чужда, и я просто хотел попробовать, что это такое.
Готовый Synology я покупать не стал. Железо в готовых NAS, как правило, минимально достаточное, а цена при этом довольно кусачая. Вместо этого я попросил товарища, который шарит в компьютерном железе, и он собрал мне NAS и поставил на него XPenology.
XPenology — неофициальный проект, который позволяет установить Synology DSM на обычный компьютер, а не только на фирменные устройства Synology. Получается та же система с теми же приложениями, но на железе, которое выбираешь сам. За цену готового NAS можно собрать компьютер в два-три раза мощнее.
Главный вывод оттуда я помню до сих пор: в домашнем хранилище основные затраты — это жесткие диски. Их нужно покупать новыми и надёжными, потому что данные, которые будут на них лежать — это по сути самое главное ради чего все это и затевается. Всё остальное можно найти практически за бесценок на Авито, а корпус — вообще косметика: подойдёт и старый корпус от компьютера (если конечно уместите в нем все ваши диски). Кто-то вообще без корпуса собирает, в отделении шкафа в прихожей, но это не эстетично. :)
И еще крайне важная деталь: рядом с сервером, в идеале, должен стоять ИБП. При отключении света он даёт серверу корректно завершить работу, а не оборвать запись на диск на половине.
Кому этого достаточно
Если честно — большинству. Если задача — хранить семейные фотографии, документы и файлы у себя дома, с автозагрузкой с телефонов и доступом снаружи, готовый NAS решает её полностью. Он работает сразу, не требует обслуживания и не заставляет разбираться в сетях.
Если вы не планируете превращать это в хобби и просто хотите надёжное хранилище, на мой взгляд, готовый NAS — один из лучших вариантов.
Почему захотелось большего
Поигравшись со своей простой и достаточно слабой «файлохранилкой», я довольно быстро захотел большего. Узнал про такое приложение как, Tdarr, которое в фоне, например ночью, способно автоматически перекодировать видео, и уменьшать размер занимаего диского пространства. Узнал про приложение Immich (аналог Google Photos), которое в фоне тоже делает кучу работы. Но мощность моего сервера не позволяла запускать подобные приложения, и мне пришлось его проапгрейдить. Я взял материнскую плату получше, процессор помощнее, добавил памяти. В итоге получился уже достаточно неплохой сервер, на котором можно было экспериментировать даже с тяжёлыми сервисами.
И чем глубже я погружался, тем чаще попадались интересные приложения, которые в рамках DSM ставить было неудобно. DSM — самодостаточная система со своими аналогами популярных сервисов, и для большинства задач их хватает. Но она закрытая, и всё, что не укладывается в её модель, приходится ставить через костыли.
Параллельно я уже перешёл на Linux на своем рабочем ноутбуке, и довольно глубоко погрузился в него, и меня не покидала мысль собрать домашний сервер самому, без готовых решений.
Этап второй: сервер на NixOS
Что привлекало
На ноутбуке на тот момент, после некоторого дистрохоппинга, у меня стоял NixOS — дистрибутив Linux, в котором вся система описывается декларативно, одним конфигурационным файлом. Хочешь новый сервис — добавляешь несколько строк в конфиг, пересобираешь систему, и сервис развёрнут. Большинство популярных сервисов для домашнего сервера уже есть в репозитории пакетов nixpkgs в виде готовых модулей.
Идея выглядела идеально: вся конфигурация сервера — в одном месте, её можно постепенно дополнять, исправлять, версионировать, а любое изменение откатывается одной командой. Я поставил NixOS на старый ноутбук и начал постепенно конфигурировать необходимые мне сервисы.
Что пошло не так
Около двух месяцев я собирал рабочую конфигурацию (есть на GitHub), и за это время накопился список проблем.
Конфигурация становилась «грязной». Модули для разных сервисов пишут разные люди, и однотипные вещи в них сделаны по-разному. Чтобы настроить очередной сервис, приходилось каждый раз разбираться в реализации конкретного модуля.
Официальная документация переставала работать. В документации приложения написано: «задайте такую-то переменную окружения». А в модуле NixOS для этого своя опция с другим именем, и если её не указать, срабатывает значение по умолчанию. Вместо официальных инструкций приходилось искать, как именно эта настройка сделана в Nix. Если нужной опции в модуле не было, приходилось сочинять ее самостоятельно на языке Nix.
Обновления — только когда разрешит nixpkgs. Новая версия сервиса становится доступна, только когда её добавят в репозиторий пакетов. Сервисы, которые умеют обновляться сами, вроде Sonarr и Radarr, в NixOS этого сделать не могут: системные файлы доступны только для чтения. Это не ошибка, а принцип NixOS, но для домашнего сервера он оказался крайне неудобным.
Слабая изоляция. Сервисы в NixOS по умолчанию работают прямо на хосте, под systemd. Ошибка или уязвимость в одном сервисе потенциально затрагивает всю систему.
Нестабильность. Сервисы, которые вчера работали без нареканий, сегодня могли упасть и требовать ручного перезапуска. Фотоархив Immich у меня регулярно падал через пару дней работы из-за проблем с подключением к базе данных, и докопаться до причины я так и не смог.
При этом практически все приложения для домашних серверов имеют официальный способ установки через Docker. Docker в NixOS работает без проблем, и можно было бы его использовать, но тогда пропадает смысл выбирать именно NixOS: с тем же успехом можно поставить любой дистрибутив и запускать контейнеры.
Вывод
Меня не покидало ощущение, что я использую систему NixOS не по назначению. Для рабочего ноутбука NixOS прекрасен, но для сервера с десятками чужих приложений — нет.
Этап третий: Proxmox
В какой-то момент я отказался от этого подхода, и, насмотревшись YouTube по этой теме, установил гипервизор Proxmox, как более традиционный путь хоумлаббера.
Proxmox закрыл множество предыдущих проблем, и дал гораздо большее удобство в администрировании домашнего сервера.
- Каждый сервис изолирован. У каждого сервиса — свой контейнер или виртуальная машина. Сломался или обновился один — остальным на это фиолетово.
- Официальные инструкции работают. Внутри контейнера — обычный Linux, и сервис устанавливается и работает так, как написано в его документации: пакетом, бинарником или через Docker.
- Могу устанавливать что угодно. Нет каталога приложений, который решает за меня, что можно установить. Могу хоть сам написать нужный сервис и установить его себе.
- Снимки состояния и резервные копии из коробки. Перед рискованным изменением можно сделать снимок контейнера или виртуальной машины и, если что-то пошло не так, за минуту вернуть всё как было. Кроме этого, каждую ночь все контейнеры и виртуальные машины целиком копируются на отдельный сервер резервных копий, и в любой момент за пару минут можно восстановить любой сервис из бекапа.
Дальше все росло вокруг Proxmox: второй гипервизор под сеть, свой роутер, VLAN, внешний доступ через VPS, мониторинг. Что получилось в итоге, я расскажу в следующей статье, а дальше разберу подробно, часть за частью.
Что выбрать вам
Если сомневаетесь — начните с готового покупного NAS. Он закрывает главную задачу: ваши фотографии, документы и файлы собраны в одном месте, у вас дома. Навыки пригодятся, а данные потом можно перенести куда угодно.
Если вам интересна тема домашних серверов и вы готовы в этом разбираться и тратить время на изучение и конфигурацию, то свой сервер на гипервизоре - это лучшее что есть.
Итоги
Я прошёл три этапа: готовый NAS на XPenology, сервер на NixOS и Proxmox. Готовый NAS дал порядок в данных и показал, что свой сервер — это во первых — удобно, а во вторых — не сложно. NixOS показал, что для сервера с десятками приложений нужна изоляция и официальные (традиционные) способы установки. Proxmox дал и то и другое и стал основой всего моего нынешнего homelab.
Для большинства людей правильная точка старта — готовый NAS. Если вам этого мало и хочется разобраться глубже — добро пожаловать в мой блог дальше.
В следующей статье я опишу общую картину всего, что у меня работает сейчас: какое железо стоит дома, как устроена сеть, как я попадаю домой снаружи и какие сервисы живут на сервере.