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