8.8 KiB
AstraDeploy
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) - доступ в интернет для загрузки артефактов
Поддерживаемые ядра
| Ядро | Директория по умолчанию | Порт | 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 |
Режим
screenдоступен в текущей версии и настраивается через слой сервисов.
Быстрый старт
sudo bash install.sh --easy --core paper
Скрипт в этом режиме:
- Предложит короткий план установки;
- Подставит безопасные значения по умолчанию (
/opt/minecraft/<core>, дефолтный порт,tmux-systemd, пользовательminecraft); - Установит зависимости, скачает выбранное ядро и создаст 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>--mc-version <latest|version>--build <latest|tag>(дляnethergamesmc, версия PHP)- 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:
- разрешение PHP build;
- загрузка/подготовка PHP + Composer;
- клонирование
PocketMine-MP; - сборка/подготовка запуска.
Режим обновления
--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
Changelog
См. CHANGELOG.md.