Создаём дашборд для Homelab с Dashy: руководство
Научитесь собирать и настраивать персональный дашборд для мониторинга сервисов в хоумлабе. Подробное руководство по Dashy, интеграции виджетов и безопасности.
Установка Docker и Docker Compose
Для начала необходимо подготовить операционную систему (Ubuntu/Debian) и установить Docker. Если Docker уже установлен, этот шаг можно пропустить.
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-pluginСоздание структуры проекта
Создадим отдельную директорию для дашборда и подпапку для конфигурационных файлов, чтобы данные не потерялись при удалении контейнера.
mkdir -p ~/dashboard/config
cd ~/dashboardСоздание файла docker-compose.yml
В корневой папке создадим файл docker-compose.yml. В нем мы определим сервис Dashy. Важно пробросить порт 4000 (или любой свободный) и монтировать том с конфигом.
nano docker-compose.ymlНастройка docker-compose.yml
Вставьте следующее содержимое в открытый файл. Это настроит запуск Dashy и связь с файлом конфигурации.
version: "3.8"
services:
dashy:
image: lissy93/dashy:latest
container_name: dashy
ports:
- 4000:80
volumes:
- ./config/conf.yml:/app/public/conf.yml
environment:
- NODE_ENV=production
restart: unless-stopped
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 30sСоздание конфигурации дашборда
Теперь создадим файл конфигурации внутри папки config. Этот файл определяет внешний вид, название и список ссылок.
nano config/conf.ymlСодержимое конфигурации (Пример)
Минимальная рабочая конфигурация. Скопируйте это содержимое в файл. Вы можете менять URL, названия и иконки (используются классы FontAwesome).
appConfig:
title: Мой Хоумлаб
subtitle: Центральное управление
theme: material
language: ru
sections:
- name: Основное
icon: fas fa-server
items:
- title: Proxmox
description: Виртуализация
icon: fas fa-desktop
url: https://192.168.1.10:8006
- title: Router
description: Панель роутера
icon: fas fa-network-wired
url: http://192.168.1.1
- name: Медиа
icon: fas fa-film
items:
- title: Jellyfin
description: Медиацентр
icon: fas fa-play-circle
url: http://192.168.1.10:8096Запуск дашборда
Запустим контейнеры в фоновом режиме. После выполнения команды откроется доступ к дашборду.
sudo docker compose up -dПроверка работы
Откройте браузер и перейдите по адресу http://IP-адрес-вашего-сервера:4000. Вы должны увидеть ваш дашборд со ссылками.
Установка Uptime Kuma (Мониторинг статуса)
Чтобы дашборд показывал, работают ли сервисы, добавим Uptime Kuma в docker-compose.yml. Остановите контейнер (Ctrl+C) или редактируйте файл и обновите через docker compose up.
nano docker-compose.ymlКонфигурация Uptime Kuma
Добавьте этот блок под сервисом dashy в docker-compose.yml.
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
ports:
- 3001:3001
volumes:
- uptime-kuma-data:/app/data
restart: unless-stoppedИнтеграция статуса в Dashy
После запуска Kuma, зайдите на IP:3001, настройте проверки. Чтобы видеть их в Dashy, добавьте виджет iframe в config/conf.yml.
nano config/conf.ymlДобавление виджета
Добавьте секцию widgets в ваш conf.yml. Замените IP на адрес вашего сервера.
widgets:
- type: iframe
options:
url: http://192.168.1.10:3001
width: 2
height: 1
title: Статус сервисовОбновление сервисов
Примените изменения и перезапустите сервисы.
sudo docker compose up -dЗащита доступа (Базовая аутентификация)
Для защиты дашборда добавим простую аутентификацию. Редактируем docker-compose.yml для сервиса dashy.
nano docker-compose.ymlНастройка пароля
Добавьте переменные окружения в сервис dashy.
environment:
- NODE_ENV=production
- BASIC_AUTH_USER=admin
- BASIC_AUTH_PASS=supersecretПерезапуск с новыми настройками
Примените изменения.
sudo docker compose up -dБэкап настроек
Настройки хранятся в папке ~/dashboard. Для бэкапа скопируйте содержимое папки или создайте архив. Пример скрипта для cron.
#!/bin/bash
DATE=$(date +%Y-%m-%d)
tar -czf ~/dashboard_backup_$DATE.tar.gz -C ~/dashboard .
echo "Backup created: ~/dashboard_backup_$DATE.tar.gz"Как собрать и настроить персональный дашборд для вашего хоумлаба
Введение
Дашборд (панель управления) в хоумлабе — это центральная точка доступа ко всем вашим сервисам, системам и мониторингу. Он позволяет:
- Экономить время: Не нужно помнить адреса и порты десятка сервисов.
- Повышать удобство: Клик по иконке перенаправляет к нужному ресурсу.
- Контролировать состояние: Видеть, какие сервисы работают, а какие требуют внимания.
Что такое хоумлаб? Это не обязательно физический сервер. Хоумлабом может быть комбинация Raspberry Pi, NUC, виртуальных машин (Proxmox, ESXi) или даже мощного ПК под управлением Linux. Главное — желание экспериментировать с сетевыми сервисами, виртуализацией и системами хранения данных.
Основа: Выбор платформы и инструментов
Для хоумлаба лучшим выбором станут саморазворачиваемые решения с открытым исходным кодом (Open Source).
Рекомдуемый стек:
- Операционная система: Ubuntu Server, Debian или Ubuntu (предпочтительно LTS-версии).
- Система контейнеризации: Docker и Docker Compose. Это стандарт для современных хоумлабов.
- Платформа дашборда: Dashy. Это современный, красивый и простой в настройке дашборд. Он имеет мощную конфигурацию через YAML-файл, поддержку виджетов и иконок.
- Мониторинг: Uptime Kuma (для проверки доступности сервисов) и Glances (для мониторинга ресурсов хоста).
Требования:
- Терминал для работы с командной строкой.
- Docker и Docker Compose, установленные на хост-системе.
Сборка простого дашборда на базе Dashy
Dashy — идеальный старт для хоумлаба. Он визуально привлекателен и легко настраивается.
Шаг 1: Установка Docker и Docker Compose
Если Docker еще не установлен, выполните команды (для Ubuntu/Debian):
# Обновление списка пакетов
sudo apt update && sudo apt upgrade -y
# Установка зависимостей
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Добавление официального GPG ключа Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Добавление репозитория
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Установка Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Шаг 2: Создание директории и файла конфигурации
Создайте отдельную папку для хранения настроек дашборда:
mkdir -p ~/dashboard/config
cd ~/dashboard
Создайте файл docker-compose.yml:
nano docker-compose.yml
Вставьте следующее содержимое:
version: "3.8"
services:
dashy:
image: lissy93/dashy:latest
container_name: dashy
ports:
- 4000:80
volumes:
- ./config/conf.yml:/app/public/conf.yml
environment:
- NODE_ENV=production
restart: unless-stopped
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 30s
Шаг 3: Конфигурация дашборда
Теперь создадим сам файл конфигурации conf.yml. Он отвечает за внешний вид и ссылки.
nano config/conf.yml
Пример минимальной конфигурации:
# Дашборд должен быть публичным, чтобы видеть статусы (или приватным, если вы добавите аутентификацию)
public: true
appConfig:
title: Мой Хоумлаб
subtitle: Центральное управление
theme: material
layout: auto
iconSize: medium
language: ru
# Секции с ссылками (секции - это группы виджетов)
sections:
- name: Основное
icon: fas fa-server
items:
- title: Router
description: Панель управления роутером
icon: fas fa-network-wired
url: http://192.168.1.1
- title: Proxmox
description: Панель управления виртуализацией
icon: fas fa-desktop
url: https://pve.local:8006
target: _blank
- name: Медиа
icon: fas fa-film
items:
- title: Jellyfin
description: Медиа-сервер
icon: fas fa-play-circle
url: http://192.168.1.100:8096
- title: Prowlarr
description: Агрегатор торрентов
icon: fas fa-magnet
url: http://192.168.1.100:9696
Шаг 4: Запуск
Запустите контейнер командой:
sudo docker compose up -d
Откройте браузер и перейдите по адресу: http://<IP-адрес-вашего-сервера>:4000.
Расширение функционала: Мониторинг и статусы сервисов
Без мониторинга дашборд — просто набор ссылок. Интегрируем проверку статуса и метрики.
Шаг 1: Установка Uptime Kuma
Uptime Kuma — отличный инструмент для проверки доступности (пинг, HTTP-статус).
Добавьте сервис в ваш docker-compose.yml:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
ports:
- 3001:3001
volumes:
- uptime-kuma-data:/app/data
restart: unless-stopped
Запустите: sudo docker compose up -d.
Настройте мониторинг сервисов через веб-интерфейс на порту 3001. Создайте проверки для каждого сервиса из вашего дашборда.
Шаг 2: Настройка виджета статуса в Dashy
Dashy поддерживает виджеты. Мы добавим виджет, отображающий статус сервисов из Uptime Kuma или статические ссылки.
Измените файл config/conf.yml, добавив виджет:
widgets:
- type: iframe
options:
url: http://localhost:3001 (или ссылка на ваш хост)
width: 2
height: 1
title: Статус сервисов
Примечание: Если вы используете Uptime Kuma, лучше использовать API или iframe (если разрешено в настройках безопасности Uptime Kuma).
Шаг 3: Мониторинг ресурсов (Glances)
Glances показывает нагрузку на CPU, RAM, сеть прямо в браузере.
Добавьте в docker-compose.yml:
glances:
image: nicolargo/glances:latest
container_name: glances
pid: host
ports:
- 61208:61208
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /:/rootfs:ro
restart: unless-stopped
command: -w
В Dashy добавьте виджет с ссылкой на веб-интерфейс Glances (порт 61208).
Персонализация: Темы, виджеты и интеграции
Темы
Dashy имеет встроенные темы. Измените ключ appConfig.theme в conf.yml:
material(по умолчанию)autumn(теплые тона)monokai(темная для программистов)dracula
Пример:
appConfig:
theme: dracula
Кастомные иконки
Используйте Font Awesome (версия 5 или 6). Укажите класс иконки в свойстве icon секции или элемента.
- Пример:
icon: fas fa-database(сервер),icon: fas fa-video(видео).
Интеграция с Home Assistant (если используется)
Home Assistant часто живет в хоумлабе. Можно добавить ссылку на его панель или встроить iframe. Для более глубокой интеграции используйте RESTful сенсоры, но для базового дашборда достаточно ссылки.
Безопасность: Доступ из внешней сети
ВАЖНО: Прямой доступ к дашборту из интернета без защиты — огромная дыра в безопасности.
Вариант 1: VPN (WireGuard)
Самый безопасный способ. Установите WireGuard сервер на хоумлаб.
- Установите WireGuard:
sudo apt install wireguard. - Сгенерируйте конфигурации для клиентов (смартфон, ноутбук).
- Подключайтесь к VPN и используйте дашборт по внутреннему IP (192.168.x.x).
Вариант 2: Туннель (Cloudflare Tunnel / Ngrok)
Если нужен доступ без настройки роутера:
- Cloudflare Tunnel (бесплатно): Требует домена.
- Установите
cloudflared. - Авторизуйте:
cloudflared tunnel login. - Создайте туннель и прокиньте трафик на
localhost:4000. - Настройте DNS-запись в Cloudflare.
- Установите
Вариант 3: Обратный прокси (Nginx Proxy Manager)
Если у вас есть SSL-сертификаты и домен:
- Установите Nginx Proxy Manager через Docker.
- Создайте хост (Proxy Host) для
dashboard.yourdomain.com. - Проксируйте на
http://localhost:4000. - Получите SSL-сертификат (Let's Encrypt).
Аутентификация на уровне дашборда
Даже за прокси, добавьте базовую аутентификацию.
В docker-compose.yml для Dashy добавьте переменные окружения:
environment:
- BASIC_AUTH_USER=admin
- BASIC_AUTH_PASS=ваш_сложный_пароль
Или используйте аутентификацию на уровне Nginx Proxy Manager.
Автоматизация и бэкапы настроек
Ваш дашборд и его конфигурации — это ценные данные. Их нужно регулярно бэкапить.
Бэкап конфигурации Dashy
Файл конфигурации лежит в папке ~/dashboard/config/conf.yml. Просто копируйте его.
Пример скрипта бэкапа (backup.sh):
#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/path/to/backups"
mkdir -p $BACKUP_DIR
# Копируем конфиг Dashy
cp ~/dashboard/config/conf.yml $BACKUP_DIR/conf_$DATE.yml
# Копируем все Docker volumes (включая данные Uptime Kuma)
tar -czf $BACKUP_DIR/dashboard_data_$DATE.tar.gz -C ~/dashboard .
# Очистка старых бэкапов (старше 30 дней)
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
find $BACKUP_DIR -name "*.yml" -mtime +30 -delete
Сделайте скрипт исполняемым: chmod +x backup.sh. Добавьте его в cron для ежедневного запуска.
Автоматическое обновление
Для обновления контейнеров можно использовать Watchtower. Он автоматически перезапускает контейнеры при выходе новых версий образов.
Добавьте в docker-compose.yml:
watchtower:
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 300 # Проверка каждые 5 минут
restart: unless-stopped
Заключение: Вдохновение и готовые конфигурации
Создание дашборда — это непрерывный процесс. Не пытайтесь собрать все сразу.
Ресурсы для вдохновения:
- Awesome Selfhosted (GitHub): Список альтернативных сервисов для хоумлаба.
- r/selfhosted (Reddit): Сообщество с обсуждением и скриншотами дашбордов.
- Docker Compose примеры: Репозитории на GitHub с готовыми
docker-compose.ymlдля всего хоумлаба (например, "DockSTARTer").
Чек-лист готовности:
- Docker установлен и работает.
- Dashy доступен по локальному IP.
- Виджеты ссылок настроены.
- Мониторинг (Uptime Kuma) проверяет основные сервисы.
- Настроен VPN или туннель для безопасного внешнего доступа.
- Настроен бэкап конфигурации.
Управление хоумлабом — это навык, который приходит с практикой. Начните с малого, расширяйте по мере необходимости, и ваш персональный дашборд станет мощным инструментом управления цифровой жизнью.