init commit

This commit is contained in:
2025-08-30 10:33:46 +09:00
commit 49b3cea942
304 changed files with 116485 additions and 0 deletions

236
README.md Normal file
View File

@@ -0,0 +1,236 @@
# 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