HomeLab

HomeLab: как устроено сейчас

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


🎛️ TL;DR

  • 2 площадки (дом и участок), связаны site-to-site туннелем.
  • Внутри: управляемая L3-маршрутизация, без “магических мостов”.
  • Виртуализация: Proxmox cluster (3 ноды).
  • Хранилище: ZFS (в т.ч. mirror) + единый storage ID под репликации.
  • Мониторинг: /status как NOC-экран (топология + VM-структура).
  • Публикация сайта: markdown → рендер → индексы → git → deploy.

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

Есть два контура:

  • 🏠 Дом: основной контур (core-сервисы, гипервизоры, управление)
  • 🌲 Участок: отдельный контур (полевые/edge узлы)

Они связаны защищённым туннелем (site-to-site). Логика простая: если узел виден в NOC, он должен быть достижим и предсказуемо маршрутизироваться.

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

        [Дом / core LAN]                      [Участок / edge LAN]
              |                                      |
        +-----+------+                          +----+-----+
        |  gateway A  |                          | gateway B |
        +-----+------+                          +----+-----+
              |                                      |
              +========== WireGuard site-to-site ====+

Принцип: L3 маршрутизация между подсетями.

🧱 Виртуализация и хранилище

База под сервисы: Proxmox cluster.

На момент обновления страницы (по данным NOC):

  • нод в кластере: 3
  • VM всего: 6, из них running: 4

Схема кластера (упрощённо)

+-------------------+      +-------------------+      +-------------------+
| Proxmox node A     |      | Proxmox node B     |      | Proxmox node C     |
| (cluster member)   |      | (cluster member)   |      | (cluster member)   |
+---------+---------+      +---------+---------+      +---------+---------+
          |                          |                          |
        [VMs]                      [VMs]                      [VMs]

Storage:
  node C: ZFS mirror (2 disks) -> storage_id=tank1
  replication depends on matching storage_id across nodes

Критичный сервис: VPN VM + репликация

В кластере есть критичная VM, от которой завязаны админ-доступы (VPN/edge).
Для неё важны:

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

Fail: node C down -> promote dataset -> start VM elsewhere

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

/status — это не “список IP”, а рабочий NOC-экран:

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

На момент обновления страницы:

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

🧩 Что крутится в HomeLab (в общем виде)

Я стараюсь держать набор сервисов минимальным, но полезным:

  • edge/VPN: туннели, маршрутизация, доступы
  • виртуализация: VM под сервисы
  • мониторинг: NOC + проверки доступности
  • медиа-стек (часть инфраструктуры): каталогизация/скачивание/медиасервер
  • автоматизация: задачи, которые повторяются (скрипты/оркестрация)

Важно: я не держу “зоопарк”. Любой сервис должен отвечать на вопрос “что он упрощает в эксплуатации”.


🧠 Как устроен этот сайт (как часть HomeLab)

Сайт тоже является частью инфраструктуры: это документация + журнал изменений.

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

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

Безопасность

  • “опасные” точки (публикация/редактирование) закрыты BasicAuth
  • изменения маленькими шагами
  • бэкапы и быстрый откат через .meta/ и git

🔜 Куда это едет

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