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

7.9 KiB
Raw Blame History

Synology Power Control Bot - Руководство по развертыванию в Docker

Подготовка к развертыванию

Это руководство поможет вам развернуть бота для управления питанием Synology NAS в Docker-контейнере. Развертывание в Docker имеет следующие преимущества:

  • Изоляция приложения и его зависимостей
  • Простота управления и обновления
  • Автоматический перезапуск при сбоях
  • Возможность легкого переноса между системами

Предварительные требования

  1. Установка 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:

  2. Настройка проекта:

    # Клонирование репозитория (если используете Git)
    git clone https://github.com/yourusername/synology_power_control_bot.git
    cd synology_power_control_bot
    
    # Или распакуйте архив с исходным кодом
    

Конфигурация

  1. Создайте файл .env: Создайте файл .env на основе .env-example и настройте его с вашими параметрами:

    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:

chmod +x deploy.sh
./deploy.sh

Windows:

deploy.cmd

Вручную с Docker Compose:

  1. Сборка и запуск:

    docker-compose up -d --build
    
  2. Проверка статуса:

    docker-compose ps
    
  3. Просмотр логов:

    docker-compose logs -f
    
  4. Остановка:

    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

Проверка работоспособности

После развертывания можно проверить состояние бота с помощью следующих команд:

  1. Проверка статуса контейнера:

    docker-compose ps
    
  2. Проверка health-check:

    curl http://localhost:8080/health
    

    Должен вернуть OK.

  3. Проверка логов:

    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:

  1. Создайте файл сервиса:

    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. Активируйте и запустите сервис:

    sudo systemctl enable synology-bot.service
    sudo systemctl start synology-bot.service
    

Безопасность

  • Не передавайте файл .env с учетными данными третьим лицам
  • Регулярно меняйте пароль от DSM
  • Ограничьте доступ к боту только доверенным пользователям
  • Рассмотрите возможность запуска на выделенной сети или с дополнительными ограничениями доступа