MOONBOT ДЛЯ LINUX
Контейнерный образ, упакованный в один исполняемый файл, предназначенный для запуска MoonBot под Linux с
использованием Wine.
Требования
Установка зависимостей для популярных дистрибутивов
Debian/Ubuntu
sudo apt install fuse3 coreutils
RHEL/CentOS/AlmaLinux
sudo dnf install fuse3 coreutils
Запуск
Для корректного старта MoonBot необходимо, чтобы на системе были установлены следующие пакеты:
"fuse3" или "fuse" (версия 2) и "coreutils".
Также требуется, чтобы файловая система каталога /tmp разрешала выполнение бинарных файлов (не включена опция noexec).
Большинство современных дистрибутивов изначально настроены таким образом.
Запустить MoonBot можно как из терминала, так и посредством графической оболочки. В простейшем случае достаточно выполнить:
# Для первого запуска сделать файл исполняемым:
chmod +x MoonBot
# Далее просто запускать без опций:
./MoonBot
При отсутствии дополнительных параметров командной строки, запускается бот с предустановленными настройками интеграции Wine
и контейнера.
Поддерживаемые дистрибутивы
Рекомендуется использовать Debian 12, однако работа была также проверена на следующих дистрибутивах:
Рекомендуется Ubuntu версии 22.04 и старше
Позволяет ожидать совместимость с любыми дистрибутивами, основанными на RHEL версии 9 и выше
Известные проблемы
./MoonBot -R
./MoonBot
Описание
MoonBot для Linux представляет собой автономный исполняемый контейнерный образ, в который входит минимальный дистрибутив
Arch Linux с предустановленным Wine и необходимыми компонентами для запуска MoonBot, разработанного для Windows.
Все это упаковано в один исполняемый файл, не требующий установки или дополнительных зависимостей на стороне пользователя.
Основной целью сборки является предоставление стабильного, изолированного и в то же время простого в использовании окружения
для запуска MoonBot под Linux. В отличие от традиционного подхода с ручной установкой Wine и сопутствующих библиотек, данная
сборка обеспечивает полностью готовое к использованию решение, минимизируя вероятность конфликтов с пакетами хоста или различиями в конфигурации систем. Кроме того, в образе содержится и сам MoonBot для Windows.
Преимущества такого подхода:
(версии 2 или 3). Для его работы не требуются инструменты типа Docker.
Технологическая основа: Conty, bubblewrap и user namespaces.
Контейнер MoonBot основан на проекте Conty — это минималистичный механизм создания сжатых контейнеров на базе Arch Linux, которые упаковываются в один исполняемый файл.
Conty использует bubblewrap, overlayfs и другие технологии для обеспечения изоляции, при этом не требует прав root.
Подробнее о Conty можно узнать в его репозитории и сопутствующей документации.
Файловая система и сохранение изменений.
Образ контейнера изначально является только для чтения, однако при запуске используется OverlayFS, позволяющий монтировать его в режиме чтения-записи. Все изменения сохраняются в каталоге:
$HOME/.local/share/MoonBot/overlayfs
Рабочий каталог самого MoonBot в контейнере располагается по адресу:
$HOME/.local/share/MoonBot/overlayfs/opt/MoonBot
Это означает, что для резервного копирования или внесения изменений в конфигурационные файлы бота следует обращаться именно к указанной директории.
Для удобства в домашнем каталоге пользователя создаётся символическая ссылка:
$HOME/.config/MoonBot → $HOME/.local/share/MoonBot/overlayfs/opt/MoonBot
Таким образом, запуск контейнера никак не затрагивает системные конфигурации Wine или другие настройки хост ОС.
Альтернативный запуск без контейнера.
В случае, если в системе уже установлена актуальная версия Wine (желательно версии не ниже 9.x, рекомендуется версия 10.0 и выше), можно запустить MoonBot напрямую под Wine. Для оптимальной работы рекомендуется также наличие поддержки vkd3d и всех сопутствующих зависимостей.
Используется версия бота для Windows и просто запускается через Wine указанной конфигурации:
wine MoonBot.exe
Настройка системных параметров.
На некоторых дистрибутивах (например, Ubuntu) могут быть отключены unprivileged user namespaces. При обнаружении данной проблемы скрипт запуска контейнера предпримет попытку исправления настроек, запросив повышение прав (sudo) при первом запуске. В случае необходимости, ручное внесение изменений производится следующими командами:
# Разрешить использование unprivileged user namespaces
sudo sysctl kernel.unprivileged_userns_clone=1
# Для Ubuntu 24.04+ дополнительно:
sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0
Опции командной строки.
Контейнер MoonBot поддерживает следующие параметры запуска:
MoonBot arguments:
-h Display this text.
-r Reset the container, keep MoonBot workdir and settings
-R *CAUTION* Same as above, but attempts to reset overwritten
MoonBot binaries in the workdir.
Useful to restore MoonBot after failed update.
-RESETFULL *DANGEROUS* Full reset. This will wipe all changes,
including MoonBot configuration and files in the workdir.
Подробнее ознакомиться с описанием параметров можно, запустив:
./MoonBot -h