Лаба skud24 начиналась не с архитектурной схемы, а с одного мини-ПК под столом, на который я поставил Proxmox просто чтобы перестать держать тестовые сервисы на рабочем ноутбуке. Через пару лет это выросло в кворумный кластер из двух узлов Proxmox с третьим голосующим устройством, сетевое хранилище на RAID10 и больше двадцати self-hosted сервисов, живущих за единым реверс-прокси под доменом skud24.ru.

Зачем сисадминить самому, если это не основная работа

По основной специальности я системный аналитик и архитектор интеграций — работаю с парковочным биллингом и СКУД. Но чтобы предлагать заказчикам разумную архитектуру, полезно самому потрогать руками то, что обычно скрыто за словом «инфраструктура»: как ведёт себя firewall под нагрузкой, что происходит при потере NAT-правила, как на самом деле работает TLS-терминация. Домашняя лаба — это одновременно и полигон для экспериментов, и живой production, на котором крутятся мои личные сервисы: от Nextcloud до собственных AI-агентов.

Сеть и первый шлюз

В основе сети — MikroTik: маршрутизация, firewall, NAT и DHCP для всей подсети. Когда сервисов стало больше десятка, стало понятно, что городить проброс портов на каждый сервис отдельно — тупиковый путь. Решением стал единый реверс-прокси на Traefik, который берёт на себя TLS-терминацию и маршрутизацию по доменам — все поддомены *.skud24.ru заворачиваются через hairpin NAT на один узел, а дальше Traefik решает, куда отправить трафик.

Один из самых полезных уроков дался не с первой попытки: после неудачного изменения правил маршрутизации я на время потерял доступ к роутеру и части сети. С тех пор я никогда не меняю firewall/routing без safe mode и понятного пути отката — это не паранойя, а горький опыт.

Кластер и хранилище

Два узла Proxmox объединены в кластер с голосующим устройством для кворума — это значит, что виртуальные машины и контейнеры можно мигрировать между узлами без простоя, а сам кластер переживает потерю одного узла без потери консенсуса. Рядом — сетевое хранилище на RAID10, которое отдаёт тома под виртуалки и служит местом для бэкапов.

Реверс-прокси как центральная нервная система

Traefik обслуживает сервисы двумя параллельными способами: через Docker-labels для контейнеров в общей сети (что даёт автоматический запрос TLS-сертификата при каждом новом деплое) и через file-provider — для сервисов, которые живут на других хостах лабы. Второй способ я отдельно обкатал на своём AI-шлюзе OmniRoute, и с тех пор он стал шаблоном для подключения новых сервисов, которые физически не находятся в докер-сети прокси.

Мониторинг вместо тишины

Когда сервисов стало больше десяти, я перестал полагаться на «сам заметлю, если что-то упадёт» и поднял Zabbix с опросом по SNMP. Это самый скучный, но самый полезный кусок лабы: он молчит 99% времени и подаёт голос именно тогда, когда нужно.

Чему это меня научило

Сейчас на этой инфраструктуре крутится не только медиа и файловое хранилище, но и AI-агентная платформа, о которой — в следующем посте.