Как создать личный дашборд для хоумлаба: пошаговое руководство с 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"