237 lines
9.3 KiB
Markdown
237 lines
9.3 KiB
Markdown
# 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
|