# 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: Локальный запуск 1. Клонируйте репозиторий: ```bash git clone https://github.com/yourusername/synology_power_control_bot.git cd synology_power_control_bot ``` 2. Установите зависимости: ```bash pip install -r requirements.txt ``` 3. Настройте параметры в файле `.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 ``` 4. Запустите бота: ```bash python run.py ``` ### Метод 2: Docker 1. Убедитесь, что Docker и Docker Compose установлены в вашей системе. 2. Клонируйте репозиторий: ```bash git clone https://github.com/yourusername/synology_power_control_bot.git cd synology_power_control_bot ``` 3. Создайте файл `.env` на основе `.env-example` и заполните необходимыми значениями. 4. Запустите скрипт развертывания: ```bash # Linux/macOS chmod +x deploy.sh ./deploy.sh # Windows deploy.cmd ``` Или запустите вручную: ```bash docker-compose up -d --build ``` 5. Проверьте статус: ```bash docker-compose ps ``` 6. Просмотр логов: ```bash docker-compose logs -f ``` Дополнительная информация о Docker-развертывании доступна в файле [README_DOCKER.md](README_DOCKER.md). ## Подготовка Synology NAS 1. Включите Wake-on-LAN в настройках DSM: - Панель управления > Сеть > Общие > Wake-on-LAN 2. Убедитесь, что API DSM включено: - Панель управления > Службы терминала и SNMP > Включить DSM API 3. Узнайте 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 1. Убедитесь, что NAS доступен по сети (можно проверить с помощью команды `ping`). 2. Проверьте правильность логина и пароля в `.env`. 3. Убедитесь, что DSM API включено в настройках NAS. ### Проблемы с Docker 1. Проверьте статус контейнера: `docker-compose ps` 2. Просмотрите логи: `docker-compose logs -f` 3. Перезапустите контейнер: `docker-compose restart` 4. Проверьте состояние здоровья: `docker inspect --format="{{json .State.Health}}" synology-power-control-bot` 5. Проверьте, что все переменные окружения корректно переданы в контейнер. ### Обновление в Docker Для обновления бота в Docker: 1. Остановите контейнеры: ```bash docker-compose down ``` 2. Загрузите обновления (если используете Git): ```bash git pull ``` 3. Запустите контейнеры заново: ```bash docker-compose up -d --build ``` ## Лицензия MIT