Files
nas_control_bot/README.md
2025-08-30 10:33:46 +09:00

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

# 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