DevOps / Home Lab
Умный дашборд домашней инфраструктуры
home.damba.dev — персональный дашборд-хаб на базе Homepage. Он объединяет медиа, умный дом, системные сервисы, хранилище, сеть и гостевую инфраструктуру в одном интерфейсе с авторским брендингом DAMBA.
Обсудить похожий проект
Задача
Объединить домашнюю и гостевую инфраструктуру в одной защищённой точке входа с живыми данными из всех ключевых сервисов.
Решение
Как реализовали проект
На Proxmox VE собрана сетка изолированных LXC-контейнеров. Homepage работает в Docker внутри LXC 213 рядом с Caddy и Authelia, получает живые данные из 8+ сервисов и доступен по защищённому домену home.damba.dev. Внешний доступ закрыт SSO-гейтом, а удалённое администрирование проходит через Tailscale.
Состав работ
Что вошло в решение
- 01Единый интерфейс для 8+ сервисов
- 02Живые системные и сетевые показатели
- 03SSO-защита внешнего доступа
- 04Автоматизированный деплой и откат
Инфраструктура
Архитектура решения
- 01
Proxmox VE хост damba с сеткой unprivileged LXC-контейнеров; каждый сервис изолирован, Docker-in-LXC работает с nesting=1 и keyctl=1.
- 02
Homepage развёрнут в Docker на LXC 213 рядом с Caddy reverse proxy и Authelia SSO / forward_auth.
- 03
Домен home.damba.dev и wildcard *.damba.dev обслуживаются через Cloudflare DNS и Let's Encrypt; внутренний wildcard-DNS настроен в AdGuard Home.
- 04
Удалённый доступ к управлению организован через Tailscale в режиме subnet router.
Возможности
Функционал
Единый центр управления
Медиа, умный дом, серверы, хранилище, сеть и гостевые сервисы собраны в одной адаптивной панели.
Живые данные из сервисов
Виджеты показывают состояние контейнеров, камер, автоматизаций, DNS, сети, фотографий, репозиториев и VPN без перехода между панелями.
Собственные метрики
Cron-скрипты агрегируют коммиты Gitea и VPN-статистику с двух внешних VPS, формируя JSON-виджеты для Homepage.
Защищённый удалённый доступ
Authelia перехватывает неавторизованные запросы, а Tailscale предоставляет безопасный административный доступ к внутренней сети.
Адаптивная тема DAMBA
Glassmorphism-интерфейс, hover-focus, клавиатурная навигация, защита от длинного контента и поддержка prefers-reduced-motion.
Стек проекта
Технологии
Защита данных
Безопасность
- Секреты хранятся только в серверных env_file с правами 600; в git находятся плейсхолдеры и .example-файлы.
- Для VPN-статистики используются отдельные read-only SSH-ключи с command= restriction — физически доступна только одна разрешённая команда.
- API-токены имеют минимально необходимый scope: например, Gitea ограничен чтением, а Immich — серверной статистикой.
- Неавторизованный внешний запрос получает 302 на auth.damba.dev через Authelia forward_auth.
Живые данные
Интеграции
UX / UI
Дизайн-процесс
Интерфейс спроектирован как продуктовая панель, а не стандартная стартовая страница: сетка сужена до 1200 px, значения визуально отделены от подписей, добавлены focus-visible, line-clamp и hover-focus. Фирменная тема «морское стекло» использует Baltic teal, янтарный акцент, CSS-градиенты, blur и spring-easing без тяжёлых анимационных библиотек.
Инженерная работа
Нетривиальные решения
Фон без статических изображений
Next.js standalone не отдавал пользовательские файлы по /images/* без symlink. Фон полностью собран на CSS-радиальных градиентах.
Обновление JSON-виджетов
Homepage кешировал список файлов /public при старте. После обновления данных в процесс добавлен автоматический docker compose restart.
Надёжный перенос Windows → Linux
Проблема владельцев файлов при распаковке tar решена флагом --no-same-owner внутри LXC.
Деплой одним бандлом
Процесс зафиксирован цепочкой tar → scp → pct push → распаковка → restart с автоматическим бэкапом текущей конфигурации и документированным откатом.
Результат
Вместо набора разрозненных панелей получился единый быстрый хаб: состояние дома, серверов, сети, хранилища и сервисов видно на одном экране, а доступ к управлению остаётся защищённым.
Следующий кейс