Проект: Docker Compose для Mosquitto, Postgres, Telegraf, Grafana, Node-RED, WB Vue Dashboard, Dozzle и Portainer
Этот проект представляет собой набор сервисов, развернутых с помощью Docker Compose, для создания полноценной платформы мониторинга и управления данными. Включает в себя MQTT-брокер (Mosquitto), базу данных (Postgres/TimescaleDB), сбор метрик (Telegraf), визуализацию данных (Grafana), автоматизацию (Node-RED), веб-интерфейс (WB Vue Dashboard), а также инструменты для мониторинга контейнеров (Dozzle и Portainer).
- Требования
- Установка и запуск
- Сервисы
- Настройка переменных окружения
- Пример файла .env
- Доступ к сервисам
- Установленный Docker и Docker Compose.
- Базовые знания работы с Docker и командной строкой.
- Склонируйте репозиторий:
git clone https://github.com/ValentinAlekhin/mqtt-stack
cd mqtt-stack- Создайте файл
.envна основе примераexample.env:
cp example.env .env-
Отредактируйте файл .env, указав необходимые значения переменных окружения.
-
Запустите сервисы с помощью Docker Compose:
docker-compose up -d- После запуска все сервисы будут доступны по указанным портам (см. раздел Доступ к сервисам).
- Порт:
${MOSQUITTO_PORT:-1883},${MOSQUITTO_WS_PORT:-1884} - Описание: MQTT-брокер для обмена сообщениями между устройствами и сервисами.
- Порт:
${POSTGRES_PORT:-5432} - Описание: База данных с поддержкой временных рядов (TimescaleDB) для хранения метрик и других данных.
- Описание: Сборщик метрик, который отправляет данные в Postgres и другие системы.
- Порт:
${GRAFANA_PORT:-3001} - Описание: Инструмент для визуализации данных и создания дашбордов.
- Порт:
${NODERED_PORT:-1880} - Описание: Платформа для автоматизации и создания потоков данных.
- Порт:
${WB_VUE_DASHBOARD_PORT:-3000} - Описание: Веб-интерфейс для отображения данных и управления системой.
- Порт:
${DOZZLE_PORT:-8080} - Описание: Инструмент для мониторинга логов контейнеров в реальном времени.
- Порт:
${PORTAINER_PORT:-9000} - Описание: Веб-интерфейс для управления Docker-контейнерами.
Все внешние порты и чувствительные данные (например, пароли) вынесены в переменные окружения. Для настройки создайте файл .env на основе примера example.env:
cp example.env .envОтредактируйте файл .env, указав необходимые значения.
Пример файла .env
# Mosquitto
MOSQUITTO_PORT=1883
MOSQUITTO_WS_PORT=1884
# PostgreSQL
POSTGRES_PORT=5433
POSTGRES_USER=admin
POSTGRES_PASSWORD=admin
POSTGRES_DB=mqtt
# Grafana
GRAFANA_PORT=3001
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin
# Node red
NODERED_PORT=1880
# WB Vue Dashboard
WB_VUE_DASHBOARD_PORT=3000
NUXT_PUBLIC_MQTT_BROKER=ws://localhost:1884/ws
# Dozzle
DOZZLE_PORT=8080
# Portainer
PORTAINER_PORT=9000После запуска сервисы будут доступны по следующим адресам:
- Mosquitto:
mqtt://localhost:${MOSQUITTO_PORT:-1883} - Postgres:
postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:${POSTGRES_PORT:-5432}/${POSTGRES_DB} - Grafana:
http://localhost:${GRAFANA_PORT:-3001} - Node-RED:
http://localhost:${NODERED_PORT:-1880} - WB Vue Dashboard:
http://localhost:${WB_VUE_DASHBOARD_PORT:-3000} - Dozzle:
http://localhost:${DOZZLE_PORT:-8080} - Portainer:
http://localhost:${PORTAINER_PORT:-9000}