Files
mikrotik-monitor/stack.yml
T

88 lines
4.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
version: "3.9"
# ═══════════════════════════════════════════════════════════════════
# MikroTik Monitor — Portainer Stack
#
# Перед деплоем:
# 1. Соберите образ на сервере (см. README) и запомните его имя
# 2. Заполните все переменные окружения ниже
# 3. В Portainer: Stacks → Add Stack → вставьте этот файл → Deploy
# ═══════════════════════════════════════════════════════════════════
services:
mikrotik-monitor:
# ── Образ ──────────────────────────────────────────────────────
# Соберите локально: docker build -t mikrotik-monitor:latest .
# Или укажите адрес своего реестра:
# registry.example.com/mikrotik-monitor:latest
image: mikrotik-monitor:latest
container_name: mikrotik-monitor
restart: unless-stopped
hostname: mikrotik-monitor
# ── Переменные окружения ────────────────────────────────────────
environment:
# MikroTik
- MIKROTIK_HOST=192.168.88.1 # ← IP вашего роутера
- MIKROTIK_PORT=8728 # API-порт (8728 plain / 8729 SSL)
- MIKROTIK_USER=monitor # ← логин
- MIKROTIK_PASSWORD=your_password # ← пароль
# Telegram
- TELEGRAM_BOT_TOKEN=123456:AABBcc # ← токен от @BotFather
- TELEGRAM_CHAT_ID=-1001234567890 # ← ID чата/группы
# URL API (замените на прокси если api.telegram.org заблокирован)
- TELEGRAM_API_URL=https://api.telegram.org
# MAX (VK Teams) — опционально, удалите если не используете
- MAX_BOT_TOKEN=your_max_bot_token # ← токен бота MAX
- MAX_CHAT_ID=123456789 # ← ID чата в MAX
- MAX_API_URL=https://platform-api.max.ru
# Название объекта/локации где стоит роутер (отображается в уведомлениях)
- OBJECT_NAME=Офис # ← например: Склад, Квартал54, Офис
# Имя address-list из /ip firewall address-list на MikroTik
- ADDRESS_LIST_NAME=monitor
# Параметры мониторинга
- CHECK_INTERVAL=60 # интервал между проверками (сек)
- PING_COUNT=3 # кол-во пинг-пакетов
- PING_TIMEOUT_MS=1000 # таймаут пинга (мс)
- FAILURE_THRESHOLD=2 # провалов подряд → уведомление DOWN
- REPEAT_NOTIFY_MIN=30 # повтор уведомления DOWN каждые N минут (0 = отключить)
- DAILY_REPORT_TIME=09:00 # время ежедневного отчёта (HH:MM)
- WEB_PORT=8080 # порт веб-дашборда
# Временная зона
- TZ=Europe/Moscow
# ── Порты ──────────────────────────────────────────────────────
ports:
- "8080:8080" # веб-дашборд
# ── Тома ───────────────────────────────────────────────────────
volumes:
- /etc/localtime:/etc/localtime:ro
# ── Логирование ─────────────────────────────────────────────────
logging:
driver: json-file
options:
max-size: "10m"
max-file: "5"
# ── Healthcheck ─────────────────────────────────────────────────
healthcheck:
test: ["CMD-SHELL", "python3 -c \"import os; os.kill(1, 0)\" 2>/dev/null || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
# ── Метки для Portainer ─────────────────────────────────────────
labels:
- "com.docker.compose.project=mikrotik-monitor"
- "description=MikroTik IP monitoring with Telegram alerts"