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

219 lines
7.9 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 - Руководство по развертыванию в 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
- Ограничьте доступ к боту только доверенным пользователям
- Рассмотрите возможность запуска на выделенной сети или с дополнительными ограничениями доступа