Files
AstraDeploy/README.ru.md

11 KiB
Raw Blame History

AstraDeploy

License Bash Version

AstraDeploy — это bash-инсталлятор для Minecraft ядер (Java и Bedrock) с акцентом на простую установку и автоматизацию:

  • режим для нубов (--easy);
  • non-interactive/бот-режим (--yes, --non-interactive);
  • отчёты в callback и локальный лог;
  • сервисные режимы systemd, tmux-systemd, screen, none;
  • пошаговый прогресс (удобно для отправки статусов пользователю из бота);
  • отдельные соглашения по лицензии/ EULA;
  • rollback и dry-run.

Текущая версия: v0.1.0.

Требования

  • Bash 4+
  • права root (или sudo)
  • доступ в интернет для загрузки артефактов

Матрица совместимости

Окружение Статус Комментарий
Ubuntu / Debian Поддерживается Основная целевая платформа для текущего MVP (apt)
Alma / Rocky / RHEL-семейство ⚠️ Частично Роуты поддержки запланированы, финальная валидация в работе
Arch Linux ⚠️ Частично Архитектурно предусмотрена поддержка, но пока не полностью провалидирована
Fedora ⚠️ Частично Архитектурно предусмотрена поддержка, но пока не полностью провалидирована
yum / dnf ⚠️ Частично Нужна доработка до полной валидации сервисов/зависимостей
pacman ⚠️ Частично Есть детект и абстракция, полная валидация в следующих релизах
tmux Поддерживается Требуется для режима tmux-systemd
screen Поддерживается Опциональный тип запуска сервиса
systemd Поддерживается Нужен для автозапуска в service-режимах

Поддерживаемые ядра

Ядро Директория по умолчанию Порт Runtime Протокол Примечание
pmmp /opt/minecraft/pmmp 19132 PHP UDP PocketMine Bedrock
paper /opt/minecraft/paper 25565 Java 21 TCP Нужна явная обработка/подтверждение EULA Java
purpur /opt/minecraft/purpur 25565 Java 21 TCP Нужна явная обработка/подтверждение EULA Java
velocity /opt/minecraft/velocity 25577 Java 21 TCP Нужна явная обработка/подтверждение EULA Java
powernukkitx /opt/minecraft/powernukkitx 19132 Java 21 UDP Нужна явная обработка/подтверждение EULA Java
nethergamesmc /opt/minecraft/nethergamesmc 19132 PHP UDP Доп. вопросы по PHP build и версии PocketMine-MCPE
bds /opt/minecraft/bds 19132 native UDP Официальный бинарник Bedrock Dedicated Server

Режим screen доступен в текущей версии и настраивается через слой сервисов.

Быстрый старт

sudo bash install.sh --easy --core paper

Скрипт в этом режиме:

  1. Предложит короткий план установки;
  2. Подставит безопасные значения по умолчанию (/opt/minecraft/<core>, дефолтный порт, tmux-systemd, пользователь minecraft);
  3. Установит зависимости, скачает выбранное ядро и создаст service.

Non-interactive / бот / CI

sudo bash install.sh \
  --yes \
  --core paper \
  --dir /opt/minecraft/paper \
  --port 25565 \
  --service tmux-systemd \
  --ram 4G \
  --firewall yes \
  --accept-eula yes \
  --accept-license yes \
  --locale ru

Пошаговая выдача (для «бота для нубов»)

Скрипт пишет этапы:

  • разбор аргументов и проверка окружения;
  • определение ОС/пакетного менеджера;
  • проверка лицензии и EULA;
  • проверка доступности порта;
  • подготовка папки и пользователя;
  • установка зависимостей / Java (для Java ядер);
  • деплой ядра;
  • настройка сервиса и прав.

На этот вывод удобно мапить сообщения для отправки пользователю по шагам.

Callback-отчёты

--report-url <url> [--report-token <token>]

Скрипт шлёт статусы started, step, success, failed. Ошибки сети не прерывают установку.

Логи

Вывод зеркалится в /var/log/astra-deploy:

/var/log/astra-deploy/install-YYYY-MM-DD-HH-MM-SS.log

Флаги и режимы

Ядро и версии

  • --core <pmmp|paper|purpur|velocity|powernukkitx|nethergamesmc|bds>
  • --mc-version <latest|version>
  • --build <latest|tag> (для nethergamesmc, версия PHP)
  • --mc-version для bds и nethergamesmc:
    • nethergamesmc: версия/тег PocketMine-MCPE
    • bds: версия Bedrock Dedicated Server (latest определяется автоматически)
  • legacy алиасы: --version, --core-version

Каталог и рантайм

  • --dir <path>
  • --port <port>
  • --ram <2G>
  • --user <username>
  • --service <systemd|tmux-systemd|screen|none>
  • --firewall <yes|no>

Безопасность существующей папки

  • --allow-existing — продолжить, если папка не пуста;
  • --backup-existing — создать backup *.backup-<timestamp>;
  • --force-clean — удалить содержимое и начать с чистого листа;
  • без этих флагов в non-interactive, если папка не пустая, установка останавливается.

Режимы запуска инсталлера

  • --easy / -E — быстрый guided режим с предпросмотром плана;
  • --yes / -y — автоматические подтверждения;
  • --non-interactive — полностью без вопросов;
  • --dry-run — безопасный прогон;
  • --debug — подробный лог.

Соглашения

  • --accept-license yes|no / --license
  • --accept-eula yes|no / --eula для Java ядер

В автоматическом режиме (--yes) соглашения должны быть явно подтверждены.

Пример для NetherGamesMC

sudo bash install.sh \
  --easy \
  --core nethergamesmc \
  --dir /opt/minecraft/nethergamesmc \
  --build latest \
  --mc-version latest \
  --service tmux-systemd

Путь для nethergamesmc:

  1. разрешение PHP build;
  2. загрузка/подготовка PHP + Composer;
  3. клонирование PocketMine-MP;
  4. сборка/подготовка запуска.

Пример для BDS

sudo bash install.sh \
  --easy \
  --core bds \
  --dir /opt/minecraft/bds \
  --mc-version latest \
  --service tmux-systemd

Путь для bds:

  1. разрешение версии Bedrock;
  2. скачивание bedrock-server-<версия>.zip;
  3. разархивация и обновление файлов сервера;
  4. генерация start.sh и настройка сервиса.

Режим обновления

--update переводит в режим обновления. Сначала проверяется существование и непустота директории, затем выполняется core-специфичный апдейт.

Локализация

  • --locale en|ru или --lang en|ru
  • автоматический fallback из LANGUAGE / LANG

Устранение типовых проблем

  • Порт уже занят

    • Проверьте кто держит порт через lsof -i:<порт> и остановите процесс, или укажите другой --port.
    • Убедитесь, что выбранный порт доступен по нужному протоколу (tcp/udp) для ядра.
  • Ошибка установки зависимостей / пакетов

    • Повторите запуск с --debug, это покажет обнаруженный пакетный менеджер и упавшую команду.
    • Проверьте интернет и доступность репозиториев пакетов.
  • Permission denied при создании/изменении файлов

    • Запускайте как root (через sudo) для полномасштабной установки.
    • Проверьте, что пользователь из --user существует и имеет права на директорию --dir.
  • Firewall не открылся автоматически

    • Если ufw/firewalld отсутствуют, скрипт сообщит про ручную настройку.
    • Откройте порт вручную в вашей системе безопасности.
  • Коллбэк репортов не отправляется

    • Ошибки callback не останавливают установку.
    • Проверьте URL/token и повторите с корректными --report-url и --report-token.

Важные замечания

  • Скрипт работает с повышенными правами и может менять сервисы, firewall, пакеты, файлы.
  • На проде обязательно иметь актуальный backup перед запуском.
  • Если API callback недоступен, установка продолжится с локальными логами.

Лицензия

Репозиторий распространяется под MIT License.
Полный текст — в файле LICENSE.

Подробное использование

Примеры по каждому ядру:

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

sudo bash install.sh --version

Contributing

См. CONTRIBUTING.md для правил участия.

Changelog

См. CHANGELOG.md.