В данной инструкции описан процесс настройки бота на удаленном сервере Ubuntu 24.04.3 LTS для управления принтером Flashforge AD5X. В моём варианте docker-compose.yml отсутствует контейнер spoolman. Запускаются только 2 контейнера: сам бот - bot1_moonraker-telegram-bot_1 и сервис для очистки старых таймлапсов (старше 10 дней) -
bot1_cron_1.
- Репозиторий бота: https://github.com/nlef/moonraker-telegram-bot
- Пример конфигурации (
telegram.conf): https://github.com/nlef/moonraker-telegram-bot/wiki/Sample-config - Docker-образ: https://hub.docker.com/r/lefskiy/moonraker-telegram-bot
Обновите систему и установите Docker:
apt update
apt upgrade -y
apt install docker.io docker-compose docker apparmor -yВключите и настройте межсетевой экран (UFW):
sudo ufw status
sudo ufw enable
sudo ufw allow 7125/tcp comment 'ZBot printer communication'
sudo ufw allow 8080/tcp comment 'ZBot camera streaming'Отредактируйте файл /etc/ssh/sshd_config, добавив или раскомментировав строки:
GatewayPorts yes
AllowTcpForwarding yesПерезагрузите SSH сервис после внесения изменений:
sudo systemctl restart sshadduser tbot
usermod -a -G docker tbotsu - tbotmkdir ~/.ssh
mkdir ~/bot1
mkdir -p ~/bot1/{config,log,timelapse,timelapse_finished}
chmod 777 ~/bot1/log ~/bot1/config ~/bot1/timelapse ~/bot1/timelapse_finished
touch ~/bot1/log/telegram.log
chmod 666 ~/bot1/log/telegram.logСкопируйте следующие файлы в указанные пути (например, с помощью WinSCP):
docker-compose.yml → /home/tbot/bot1/
ff5m.sh → /home/tbot/bot1/
telegram.conf → /home/tbot/bot1/config/
Настройка файла telegram.conf
В файле telegram.conf измените следующие параметры. Если сервер с ботом и принтер находятся в одной сети, то вместо 127.0.0.1 пропишите IP-адрес принтера.
[bot]
server: 127.0.0.1:7125
bot_token: 0000000000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # Получить у @BotFather в Telegram
chat_id: 0000000000 # Узнать ID можно у бота @GetMyIDBotВажно о chat_id: Можно заполнить позже. После запуска бота (шаг 8) отправьте ему любое сообщение. Затем впишите полученный ID в telegram.conf и перезапустите бота командой docker-compose restart. Команду обязательно выполнять из-под пользователя tbot в директории бота (cd ~/bot1).
[camera]
host: http://127.0.0.1:8080/?action=stream
host_snapshot: http://127.0.0.1:8080/?action=snapshotПримечание: Если сервер и принтер находятся в одной локальной сети, этот пункт можно пропустить.
cat > ~/.ssh/authorized_keysВставьте содержимое ключа из файла mod_data/ssh.pub.txt с принтера и нажмите Enter для сохранения.
exit
sudo chmod 600 /home/tbot/.ssh/authorized_keys
sudo chmod 700 /home/tbot/.ssh/
su - tbotНа принтере запустите макрос ZSSH_ON с необходимыми параметрами:
- SSH_SERVER - IP удаленного SSH сервера (подставить свой).
- SSH_PORT - порт удаленного SSH сервера (22).
- SSH_USER - имя пользователя на удаленном сервере (tbot).
- VIDEO_PORT - порт на удаленном сервере для видео (8080).
- MOON_PORT - порт на удаленном сервере для Moonraker (7125).
- REMOTE_RUN - команда для перезапуска бота на удаленном сервере. Используйте скрипт
ff5m.shв формате./ff5m.sh bot1, гдеbot1— каталог с ботом.
Или выполните команду через консоль Fluidd/Mainsail, подставив свой IP_АДРЕС_СЕРВЕРА:
ZSSH_ON SSH_SERVER=IP_АДРЕС_СЕРВЕРА SSH_PORT=22 SSH_USER=tbot VIDEO_PORT=8080 MOON_PORT=7125 REMOTE_RUN="./ff5m.sh bot1"
cd ~/bot1
docker-compose up -dZMOD позволяет подключать практически любую камеру через USB. Подробнее о настройке: https://github.com/ghzserg/zmod/wiki/Zmod_ru#camera_on
Может совпадение, но у меня долго не получалось подключить камеру, и по итогу она заработала после перезагрузки принтера вместе с подключенной камерой*
-
Убедитесь, что все порты (7125, 8080) открыты в брандмауэре
-
Для перезапуска бота используйте:
docker-compose restart(из директории~/bot1) -
Логи бота находятся в:
~/bot1/log/telegram.log