7.9 KiB
Synology Power Control Bot - Руководство по развертыванию в Docker
Подготовка к развертыванию
Это руководство поможет вам развернуть бота для управления питанием Synology NAS в Docker-контейнере. Развертывание в Docker имеет следующие преимущества:
- Изоляция приложения и его зависимостей
- Простота управления и обновления
- Автоматический перезапуск при сбоях
- Возможность легкого переноса между системами
Предварительные требования
-
Установка Docker и Docker Compose:
Для Ubuntu/Debian:
# Установка 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:
# Установка 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
-
Настройка проекта:
# Клонирование репозитория (если используете Git) git clone https://github.com/yourusername/synology_power_control_bot.git cd synology_power_control_bot # Или распакуйте архив с исходным кодом
Конфигурация
-
Создайте файл .env: Создайте файл
.envна основе.env-exampleи настройте его с вашими параметрами:cp .env-example .env nano .env # или любой другой текстовый редакторЗаполните следующие параметры:
TELEGRAM_TOKEN: Токен вашего Telegram-бота от @BotFatherADMIN_USER_IDS: ID пользователей Telegram с доступом к ботуSYNOLOGY_HOST: IP-адрес вашего Synology NASSYNOLOGY_USERNAMEиSYNOLOGY_PASSWORD: Учетные данные для DSMMAC_ADDRESS: MAC-адрес Synology NAS для Wake-on-LAN
Развертывание
С использованием скриптов:
Linux:
chmod +x deploy.sh
./deploy.sh
Windows:
deploy.cmd
Вручную с Docker Compose:
-
Сборка и запуск:
docker-compose up -d --build -
Проверка статуса:
docker-compose ps -
Просмотр логов:
docker-compose logs -f -
Остановка:
docker-compose down
Управление контейнером
Перезапуск бота:
docker-compose restart
Обновление:
# Остановка
docker-compose down
# Обновление (если используете Git)
git pull
# Пересборка и запуск
docker-compose up -d --build
Резервное копирование данных:
Важные данные хранятся в томе logs, который можно скопировать:
# Создание бэкапа логов
tar -czvf synology_bot_logs_backup.tar.gz ./logs
Проверка работоспособности
После развертывания можно проверить состояние бота с помощью следующих команд:
-
Проверка статуса контейнера:
docker-compose ps -
Проверка health-check:
curl http://localhost:8080/healthДолжен вернуть
OK. -
Проверка логов:
docker-compose logs -fИщите строки с успешной инициализацией бота.
Решение проблем
Контейнер не запускается или сразу завершает работу
- Проверьте логи:
docker-compose logs -f - Проверьте файл
.envна наличие всех необходимых параметров - Убедитесь, что порт 8080 не занят другим приложением
Проблемы с подключением к Synology NAS
- Проверьте доступность NAS из контейнера:
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:
-
Создайте файл сервиса:
sudo nano /etc/systemd/system/synology-bot.service -
Добавьте следующее содержимое:
[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 -
Активируйте и запустите сервис:
sudo systemctl enable synology-bot.service sudo systemctl start synology-bot.service
Безопасность
- Не передавайте файл
.envс учетными данными третьим лицам - Регулярно меняйте пароль от DSM
- Ограничьте доступ к боту только доверенным пользователям
- Рассмотрите возможность запуска на выделенной сети или с дополнительными ограничениями доступа