Synology Power Control Bot
Telegram-бот для удаленного управления питанием сетевого хранилища Synology NAS (DS223j и другие модели).
Возможности
Управление питанием
- ✅ Включение питания через Wake-on-LAN
- ✅ Выключение питания через API DSM
- ✅ Перезагрузка системы с отслеживанием статуса
Мониторинг системы
- ✅ Проверка онлайн статуса NAS
- ✅ Информация о системе (модель, версия DSM, время работы)
- ✅ Мониторинг загрузки CPU и памяти
- ✅ Данные о температуре и сетевой активности
- ✅ Статус хранилища и дисков
- ✅ Информация о безопасности системы
- ✅ Список активных процессов
- ✅ Мониторинг сетевых подключений
Управление данными
- ✅ Просмотр списка общих папок
- ✅ Информация о томах и дисках
- ✅ Статистика использования дисков
- ✅ Просмотр файлов и папок
- ✅ Поиск файлов
- ✅ Мониторинг квот пользователей
Безопасность
- ✅ Ограничение доступа по ID пользователей Telegram
- ✅ Безопасное хранение учетных данных
Дополнительные функции
- ✅ Мониторинг обновлений DSM и пакетов
- ✅ Управление расписанием питания
- ✅ Проверка статуса резервного копирования
Требования
- Python 3.8+
- Synology NAS с включенным WoL
- Учетная запись администратора DSM
- Telegram Bot API Token
- Доступ к порту API Synology DSM (обычно 5000 или 5001)
Установка и настройка
Метод 1: Локальный запуск
-
Клонируйте репозиторий:
git clone https://github.com/yourusername/synology_power_control_bot.git cd synology_power_control_bot -
Установите зависимости:
pip install -r requirements.txt -
Настройте параметры в файле
.env:# Telegram Bot Configuration TELEGRAM_TOKEN=your_telegram_bot_token ADMIN_USER_IDS=123456789,987654321 # Synology NAS Configuration SYNOLOGY_HOST=192.168.1.100 SYNOLOGY_PORT=5000 SYNOLOGY_USERNAME=admin SYNOLOGY_PASSWORD=your_password SYNOLOGY_SECURE=False SYNOLOGY_TIMEOUT=10 # Wake-on-LAN Configuration SYNOLOGY_MAC=00:11:22:33:44:55 WOL_PORT=9 -
Запустите бота:
python run.py
Метод 2: Docker
-
Убедитесь, что Docker и Docker Compose установлены в вашей системе.
-
Клонируйте репозиторий:
git clone https://github.com/yourusername/synology_power_control_bot.git cd synology_power_control_bot -
Создайте файл
.envна основе.env-exampleи заполните необходимыми значениями. -
Запустите скрипт развертывания:
# Linux/macOS chmod +x deploy.sh ./deploy.sh # Windows deploy.cmdИли запустите вручную:
docker-compose up -d --build -
Проверьте статус:
docker-compose ps -
Просмотр логов:
docker-compose logs -f
Дополнительная информация о Docker-развертывании доступна в файле README_DOCKER.md.
Подготовка Synology NAS
-
Включите Wake-on-LAN в настройках DSM:
- Панель управления > Сеть > Общие > Wake-on-LAN
-
Убедитесь, что API DSM включено:
- Панель управления > Службы терминала и SNMP > Включить DSM API
-
Узнайте MAC-адрес вашего NAS:
- Панель управления > Сеть > Сетевой интерфейс
Команды бота
Основные команды
/start- Начало работы с ботом/status- Проверка текущего статуса NAS/power- Управление питанием NAS (включение, выключение, перезагрузка)/help- Вывод справочной информации
Информационные команды
/system- Подробная информация о системе/storage- Информация о хранилище и дисках/shares- Список общих папок/load- Текущая нагрузка на систему/security- Статус безопасности системы/temperature- Температура устройства/processes- Список активных процессов/network- Сетевая информация
Расширенные команды
/schedule- Расписание питания/browse- Просмотр файлов/search <запрос>- Поиск файлов/updates- Проверка обновлений/backup- Статус резервного копирования/quota- Квоты пользователей
Быстрые команды
/quickreboot- Быстрая перезагрузка/wakeup- Пробуждение NAS (WOL)
Структура проекта
synology_power_control_bot/
├── logs/ # Директория для логов
├── src/ # Исходный код
│ ├── api/ # Модули для работы с API
│ │ └── synology.py # API для работы с Synology NAS
│ ├── config/ # Модули конфигурации
│ │ └── config.py # Основная конфигурация
│ ├── handlers/ # Обработчики команд бота
│ │ └── command_handlers.py
│ ├── utils/ # Вспомогательные утилиты
│ │ └── logger.py # Настройка логирования
│ └── bot.py # Основной файл запуска бота
├── .env # Файл с переменными окружения
├── .env-example # Пример файла переменных окружения
├── .gitignore # Файл игнорирования Git
├── .dockerignore # Файлы, игнорируемые при сборке Docker-образа
├── Dockerfile # Инструкции для сборки Docker-образа
├── docker-compose.yml # Конфигурация Docker Compose
├── deploy.sh # Скрипт развёртывания для Linux
├── deploy.cmd # Скрипт развёртывания для Windows
├── entrypoint.sh # Скрипт для запуска в Docker
├── README.md # Основная документация
├── README_DOCKER.md # Документация по Docker-развёртыванию
└── requirements.txt # Зависимости проекта
Безопасность
Бот имеет систему авторизации на основе ID пользователей Telegram. Убедитесь, что указали правильные ID в переменной ADMIN_USER_IDS в файле .env.
Устранение неисправностей
Проблемы с подключением к Synology NAS
- Убедитесь, что NAS доступен по сети (можно проверить с помощью команды
ping). - Проверьте правильность логина и пароля в
.env. - Убедитесь, что DSM API включено в настройках NAS.
Проблемы с Docker
- Проверьте статус контейнера:
docker-compose ps - Просмотрите логи:
docker-compose logs -f - Перезапустите контейнер:
docker-compose restart - Проверьте состояние здоровья:
docker inspect --format="{{json .State.Health}}" synology-power-control-bot - Проверьте, что все переменные окружения корректно переданы в контейнер.
Обновление в Docker
Для обновления бота в Docker:
-
Остановите контейнеры:
docker-compose down -
Загрузите обновления (если используете Git):
git pull -
Запустите контейнеры заново:
docker-compose up -d --build
Лицензия
MIT