MeshMonitor
Веб-дашборд для мониторинга Meshtastic-нод. Подключается к ноде по IP, показывает статус, поддерживает виртуальную ноду и автообновление прошивки.
- Репо: yeraze/meshmonitor
- Образ:
ghcr.io/yeraze/meshmonitor:latest - Дефолтный логин:
admin/changeme— сменить при первом входе
Docker Compose на одну ноду
Минимальный рабочий конфиг. Подключается к ноде по IP, виртуальная нода включена.
services:
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:latest
container_name: meshmonitor
ports:
- "8088:3001"
- "4408:4408"
volumes:
- meshmonitor-data:/data
environment:
- MESHTASTIC_NODE_IP=<NODE_IP>
- ALLOWED_ORIGINS=http://127.0.0.1:8088
- SESSION_COOKIE_NAME=meshmonitor.sid
- ENABLE_VIRTUAL_NODE=true
- VIRTUAL_NODE_PORT=4408
- VIRTUAL_NODE_ALLOW_ADMIN_COMMANDS=true
- AUTO_UPGRADE_ENABLED=false
restart: unless-stopped
mem_limit: 150M
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "5"
volumes:
meshmonitor-data:
external: trueПеред запуском: docker volume create meshmonitor-data
Docker Compose на несколько нод
Рабочий конфиг из чата — две ноды с автоапдейтом. Главное правило: 1 нода = 1 апдейтер.
Что нужно заменить под себя:
8f04/dd04— короткие ID нод (последние 4 символа MAC)MESHTASTIC_NODE_IP— IP-адреса нод- Порты (
8088/8089для веба,4408/4409для виртуальной ноды) ALLOWED_ORIGINS— IP-адреса, с которых будет доступ к дашборду
services:
# === НОДА 1 (8f04) ===
meshmonitor_8f04:
image: ghcr.io/yeraze/meshmonitor:latest
container_name: meshmonitor_8f04
ports:
- "8088:3001"
- "4408:4408"
volumes:
- meshmonitor-data-8f04:/data
environment:
- MESHTASTIC_NODE_IP=<NODE_1_IP>
- ALLOWED_ORIGINS=http://127.0.0.1:8088,http://<HOST_IP>:8088
- SESSION_COOKIE_NAME=meshmonitor-node-8f04.sid
- ENABLE_VIRTUAL_NODE=true
- VIRTUAL_NODE_PORT=4408
- VIRTUAL_NODE_ALLOW_ADMIN_COMMANDS=true
- AUTO_UPGRADE_ENABLED=true
restart: unless-stopped
mem_limit: 150M
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "5"
# Апгрейдер для НОДЫ 1
upgrader_8f04:
image: docker:latest
container_name: upgrader_8f04
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- meshmonitor-data-8f04:/data
- .:/compose:ro
environment:
- CONTAINER_NAME=meshmonitor_8f04
- IMAGE_NAME=ghcr.io/yeraze/meshmonitor
- TRIGGER_FILE=/data/.upgrade-trigger
- STATUS_FILE=/data/.upgrade-status
- CHECK_INTERVAL=5
- COMPOSE_PROJECT_DIR=/compose
- COMPOSE_PROJECT_NAME=meshmonitor_multi
- DOCKER_API_VERSION=1.41
- HEALTH_CHECK_ENABLED=false
command: /data/scripts/upgrade-watchdog.sh
depends_on:
- meshmonitor_8f04
# === НОДА 2 (dd04) ===
meshmonitor_dd04:
image: ghcr.io/yeraze/meshmonitor:latest
container_name: meshmonitor_dd04
ports:
- "8089:3001"
- "4409:4409"
volumes:
- meshmonitor-data-dd04:/data
environment:
- MESHTASTIC_NODE_IP=<NODE_2_IP>
- ALLOWED_ORIGINS=http://127.0.0.1:8089,http://<HOST_IP>:8089
- SESSION_COOKIE_NAME=meshmonitor-node-dd04.sid
- ENABLE_VIRTUAL_NODE=true
- VIRTUAL_NODE_PORT=4409
- VIRTUAL_NODE_ALLOW_ADMIN_COMMANDS=true
- AUTO_UPGRADE_ENABLED=true
restart: unless-stopped
mem_limit: 150M
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "5"
# Апгрейдер для НОДЫ 2
upgrader_dd04:
image: docker:latest
container_name: upgrader_dd04
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- meshmonitor-data-dd04:/data
- .:/compose:ro
environment:
- CONTAINER_NAME=meshmonitor_dd04
- IMAGE_NAME=ghcr.io/yeraze/meshmonitor
- TRIGGER_FILE=/data/.upgrade-trigger
- STATUS_FILE=/data/.upgrade-status
- CHECK_INTERVAL=5
- COMPOSE_PROJECT_DIR=/compose
- COMPOSE_PROJECT_NAME=meshmonitor_multi
- DOCKER_API_VERSION=1.41
- HEALTH_CHECK_ENABLED=false
command: /data/scripts/upgrade-watchdog.sh
depends_on:
- meshmonitor_dd04
volumes:
meshmonitor-data-8f04:
external: true
meshmonitor-data-dd04:
external: trueКак добавить ещё ноду
Скопировать блок сервиса + апгрейдера, заменить:
- Суффикс (
8f04→ свой ID) во всех именах, контейнерах и volumes - Порты (веб:
8090:3001, виртуальная нода:4410:4410) MESHTASTIC_NODE_IP— IP новой нодыALLOWED_ORIGINS— обновить порт- Добавить volume в секцию
volumes:
Автообновление
Апдейтер (upgrader_*) — контейнер с Docker CLI, который мониторит триггер-файл. При срабатывании пуллит новый образ и пересоздаёт контейнер ноды. Скрипт upgrade-watchdog.sh создаётся автоматически MeshMonitor при первом запуске.
Volumes должны быть external: true — создать вручную перед первым запуском:
docker volume create meshmonitor-data-8f04
docker volume create meshmonitor-data-dd04Ограничения
- TCP-соединение эксклюзивно — Meshtastic допускает только одного TCP-клиента. Если MeshMonitor подключён,
meshtastic --hostне пройдёт (и наоборот). Перед отправкой команд на ноду —docker stop meshmonitor. - NodeDB >100 нод деградирует WiFi на ESP32 → MeshMonitor теряет связь. Решение — периодический ребут ноды (скрипт останавливает MeshMonitor, ребутит ноду, запускает обратно).