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