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

218
DOCKER_DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,218 @@
# Synology Power Control Bot - Руководство по развертыванию в Docker
## Подготовка к развертыванию
Это руководство поможет вам развернуть бота для управления питанием Synology NAS в Docker-контейнере. Развертывание в Docker имеет следующие преимущества:
- Изоляция приложения и его зависимостей
- Простота управления и обновления
- Автоматический перезапуск при сбоях
- Возможность легкого переноса между системами
## Предварительные требования
1. **Установка Docker и Docker Compose**:
**Для Ubuntu/Debian**:
```bash
# Установка Docker
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
**Для CentOS/RHEL**:
```bash
# Установка Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
# Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
**Для Windows**:
- Скачайте и установите Docker Desktop с [официального сайта Docker](https://www.docker.com/products/docker-desktop/)
2. **Настройка проекта**:
```bash
# Клонирование репозитория (если используете Git)
git clone https://github.com/yourusername/synology_power_control_bot.git
cd synology_power_control_bot
# Или распакуйте архив с исходным кодом
```
## Конфигурация
1. **Создайте файл .env**:
Создайте файл `.env` на основе `.env-example` и настройте его с вашими параметрами:
```bash
cp .env-example .env
nano .env # или любой другой текстовый редактор
```
Заполните следующие параметры:
- `TELEGRAM_TOKEN`: Токен вашего Telegram-бота от @BotFather
- `ADMIN_USER_IDS`: ID пользователей Telegram с доступом к боту
- `SYNOLOGY_HOST`: IP-адрес вашего Synology NAS
- `SYNOLOGY_USERNAME` и `SYNOLOGY_PASSWORD`: Учетные данные для DSM
- `MAC_ADDRESS`: MAC-адрес Synology NAS для Wake-on-LAN
## Развертывание
### С использованием скриптов:
**Linux**:
```bash
chmod +x deploy.sh
./deploy.sh
```
**Windows**:
```
deploy.cmd
```
### Вручную с Docker Compose:
1. **Сборка и запуск**:
```bash
docker-compose up -d --build
```
2. **Проверка статуса**:
```bash
docker-compose ps
```
3. **Просмотр логов**:
```bash
docker-compose logs -f
```
4. **Остановка**:
```bash
docker-compose down
```
## Управление контейнером
### Перезапуск бота:
```bash
docker-compose restart
```
### Обновление:
```bash
# Остановка
docker-compose down
# Обновление (если используете Git)
git pull
# Пересборка и запуск
docker-compose up -d --build
```
### Резервное копирование данных:
Важные данные хранятся в томе `logs`, который можно скопировать:
```bash
# Создание бэкапа логов
tar -czvf synology_bot_logs_backup.tar.gz ./logs
```
## Проверка работоспособности
После развертывания можно проверить состояние бота с помощью следующих команд:
1. **Проверка статуса контейнера**:
```bash
docker-compose ps
```
2. **Проверка health-check**:
```bash
curl http://localhost:8080/health
```
Должен вернуть `OK`.
3. **Проверка логов**:
```bash
docker-compose logs -f
```
Ищите строки с успешной инициализацией бота.
## Решение проблем
### Контейнер не запускается или сразу завершает работу
- Проверьте логи: `docker-compose logs -f`
- Проверьте файл `.env` на наличие всех необходимых параметров
- Убедитесь, что порт 8080 не занят другим приложением
### Проблемы с подключением к Synology NAS
- Проверьте доступность NAS из контейнера:
```bash
docker-compose exec synology-bot ping $SYNOLOGY_HOST
```
- Проверьте правильность учетных данных
- Убедитесь, что API DSM включено в настройках NAS
### Telegram-бот не отвечает
- Проверьте корректность TELEGRAM_TOKEN
- Убедитесь, что бот запущен: `/start` в чате с ботом
- Проверьте, что ваш Telegram ID указан в ADMIN_USER_IDS
## Автоматический запуск при перезагрузке сервера
Docker и Docker Compose по умолчанию настроены на автоматический запуск контейнеров при перезагрузке системы благодаря параметру `restart: unless-stopped` в docker-compose.yml.
Если эта опция не работает, вы можете настроить systemd:
1. **Создайте файл сервиса**:
```bash
sudo nano /etc/systemd/system/synology-bot.service
```
2. **Добавьте следующее содержимое**:
```
[Unit]
Description=Synology Power Control Bot
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/path/to/synology_power_control_bot
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
```
3. **Активируйте и запустите сервис**:
```bash
sudo systemctl enable synology-bot.service
sudo systemctl start synology-bot.service
```
## Безопасность
- Не передавайте файл `.env` с учетными данными третьим лицам
- Регулярно меняйте пароль от DSM
- Ограничьте доступ к боту только доверенным пользователям
- Рассмотрите возможность запуска на выделенной сети или с дополнительными ограничениями доступа