Homelab

Предыстория: от готового NAS до своего сервера на Proxmox

Как я пришёл к своему homelab: готовый NAS на XPenology, эксперимент с сервером на NixOS и переход на Proxmox.

Введение

Этой статьёй я начинаю серию статей «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. Если вам этого мало и хочется разобраться глубже — добро пожаловать в мой блог дальше.

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

Esc