Files
AstraDeploy/README.ru.md

178 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<core>`, дефолтный порт, `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 <url> [--report-token <token>]
```
Скрипт шлёт статусы `started`, `step`, `success`, `failed`. Ошибки сети не прерывают установку.
## Логи
Вывод зеркалится в `/var/log/astra-deploy`:
```bash
/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
```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
```