HomeLab

🧠 День 16 — HomeLab: как у меня все устроено (сеть, сервера, сервисы и эксплуатация)

15 мая 2026, 07:51
🧠 День 16 — HomeLab: как у меня все устроено (сеть, сервера, сервисы и эксплуатация)

Ниже техническое описание моего HomeLab в формате "как это реально работает в эксплуатации".

🎯 Зачем вообще этот HomeLab

HomeLab для меня это не "поставить сервисы", а построить контур, где:

  • доступы безопасные и предсказуемые (без "открыли порт в интернет и забыли")
  • есть наблюдаемость (видно не только "упало", но и "где/почему")
  • изменения можно делать маленькими шагами и быстро откатывать
  • инфраструктура документируется в виде статей и заметок

🗺️ Высокоуровневая карта

            Internet / ISP
                 |
            [edge firewall]
                 |
              Home LAN  -------------------+
                 |                         |
            Proxmox cluster                |  site-to-site tunnel
          (compute + storage)              |
                 |                         |
           VM / services               Remote LAN (site)
                 |
           Monitoring / NOC

🌐 Площадки и сеть

У меня два контура (условно "дом" и "участок/удаленная площадка"), связанные site-to-site туннелем.

Ключевые требования к сети:

  • L3 маршрутизация между подсетями (без L2 мостов)
  • управляемые шлюзы и маршруты (никакой "магии, оно само как-то ходит")
  • доступ к управлению только из доверенных зон и по ключам

Схема (упрощенно)

[Site A LAN] -- gw-A --+==== WireGuard site-to-site ====+-- gw-B -- [Site B LAN]
                       |                                |
                    (routing)                        (routing)

🔐 Edge / VPN / доступы

Внутри HomeLab есть критичный контур удаленного доступа:

  • WireGuard как основной "скелет" связности между площадками
  • управление сетевыми устройствами переведено на ключи (где это подтверждено)
  • админ зоны и панели закрыты BasicAuth (минимальный барьер, который реально спасает)

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


🧱 Серверы и роли

Физически и логически есть несколько типов узлов.

1) Гипервизоры (Proxmox cluster)

Это база compute части.

На текущем состоянии (по данным NOC):

  • нод в кластере: 3
  • VM всего: 6, из них running: 4
+------------------+    +------------------+    +------------------+
| Proxmox node A   |    | Proxmox node B   |    | Proxmox node C   |
| (cluster member) |    | (cluster member) |    | (cluster member) |
+--------+---------+    +--------+---------+    +--------+---------+
         |                       |                       |
       [VMs]                   [VMs]                   [VMs]

2) Критичная VM для доступа (vpn-gw)

Одна из VM критичная: через нее завязаны админ доступы и связность.

Для нее я делаю "как в проде":

  • диск на ZFS
  • репликация на коротком интервале
  • понятный сценарий восстановления
vpn-gw VM -> ZFS (tank1) [node C]
   |
   +-- replication job (каждые N минут) -> ZFS (tank1) [target node]

3) Служебные VM и сервисы

Типичные роли, которые у меня встречаются в HomeLab:

  • мониторинг / NOC
  • вспомогательные сервисы сети (DNS/DHCP где применимо)
  • сервисы приложений и домашние сервисы (включая медиа стек)

💾 Хранилище и данные

Основная мысль: данные важнее VM.

Практики, которые у себя закрепляю:

  • ZFS там, где критично: mirror для устойчивости
  • единый storage_id на нодах (важно для штатной репликации Proxmox)
  • миграции только через страховку (backup + проверки)
disk1 + disk2 -> ZFS mirror -> storage_id: tank1
replication requires: source.storage_id == target.storage_id

🖥️ Мониторинг и NOC

/status это не "пинг лист", а NOC экран:

  • топология дом/участок
  • роли узлов (шлюз/свитч/хост/VM/сервис)
  • отдельное представление виртуализации (гипервизоры -> VM -> вложенные сервисы)
  • ручная раскладка узлов (drag and drop) и сохранение

Состояние на момент последней фиксации:

  • хостов в мониторинге: 25
  • доступно по SSH (где применимо): 8

🎬 Медиа стек (как пример "пользовательского продакшена")

Часть HomeLab это сервисы, которыми реально пользуемся дома.

Типовой пайплайн (упрощенно):

[Indexers] -> Prowlarr -> (Radarr / Sonarr) -> Downloader -> Library -> Plex

🧰 Операционная дисциплина

Я стараюсь держать homelab не как набор контейнеров, а как сопровождаемую систему:

  • изменения маленькими шагами
  • перед правками: диагностика и быстрый откат (бэкапы/снимки)
  • после правок: проверка работоспособности
  • если затрагивается nginx или systemd: сначала проверка конфигов, потом reload/restart

🧩 Этот сайт как часть HomeLab

homelab.kobelkov.ru тоже элемент инфраструктуры: журнал и документация.

Пайплайн публикации

Markdown (.md)
  -> Python renderers (.md -> .html)
  -> индексы (posts/notes) + feed + sitemap
  -> git add/commit
  -> publish.sh
  -> reload systemd/nginx

Идея: чтобы "как сделал" не терялось и было воспроизводимо.


🔜 Что дальше

Логичные следующие шаги (в эксплуатации, а не "для красоты"):

  • события и алерты поверх NOC (не только статус, но и сигнал)
  • больше health-check как кода (проверки, которые можно повторить)
  • укрепление сценариев восстановления (особенно для критичных сервисов доступа)
  • аккуратная инвентаризация сервисов с приоритетами: что критично, что можно отключать