# 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` доступен в текущей версии и настраивается через слой сервисов. ## Быстрый старт ```bash sudo bash install.sh --easy --core paper ``` Скрипт в этом режиме: 1. Предложит короткий план установки; 2. Подставит безопасные значения по умолчанию (`/opt/minecraft/`, дефолтный порт, `tmux-systemd`, пользователь `minecraft`); 3. Установит зависимости, скачает выбранное ядро и создаст service. ## Non-interactive / бот / CI ```bash 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-отчёты ```bash --report-url [--report-token ] ``` Скрипт шлёт статусы `started`, `step`, `success`, `failed`. Ошибки сети не прерывают установку. ## Логи Вывод зеркалится в `/var/log/astra-deploy`: ```bash /var/log/astra-deploy/install-YYYY-MM-DD-HH-MM-SS.log ``` ## Флаги и режимы ### Ядро и версии - `--core ` - `--mc-version ` - `--build ` (для `nethergamesmc`, версия PHP) - legacy алиасы: `--version`, `--core-version` ### Каталог и рантайм - `--dir ` - `--port ` - `--ram <2G>` - `--user ` - `--service ` - `--firewall ` ### Безопасность существующей папки - `--allow-existing` — продолжить, если папка не пуста; - `--backup-existing` — создать backup `*.backup-`; - `--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 ```bash 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. сборка/подготовка запуска. ## Режим обновления `--update` переводит в режим обновления. Сначала проверяется существование и непустота директории, затем выполняется core-специфичный апдейт. ## Локализация - `--locale en|ru` или `--lang en|ru` - автоматический fallback из `LANGUAGE` / `LANG` ## Важные замечания - Скрипт работает с повышенными правами и может менять сервисы, firewall, пакеты, файлы. - На проде обязательно иметь актуальный backup перед запуском. - Если API callback недоступен, установка продолжится с локальными логами. ## Лицензия Репозиторий распространяется под **MIT License**. Полный текст — в файле [`LICENSE`](LICENSE). ## Проверка версии скрипта ```bash sudo bash install.sh --version ```