0.2.51. Переработка системы запуска
Pre-release
Pre-release
Ссылка на Wiki
Основные изменения
- Написаны файлы
start.shиstart.batскрипты для удобного запуска на Linux (Ubuntu и Debian) и Windows соответственно
start.sh:- Скрипт автоматически проверяет наличие Docker и Docker Compose.
- Если Docker не установлен, то скрипт автоматически предлагает установить их через
apt. - Запуск проекта:
- Поддерживается запуск профилей:
all(запуск всех компонентов),local-redis(запуск backend и redis, без frontend),frontend(запуск backend и frontend, без redis),api(запуск только backend). - Поддерживается остановка контейнеров.
- Поддерживается просмотр логов (
docker compose logs -f). - Поддерживается перезапуск контейнеров (
docker compose restart).
- Поддерживается запуск профилей:
- Также по ходу исправил совместимость с
docker compose, вместо устаревшегоdocker-compose. - Также скрипт может обрабатывать ситуации, есть ли есть поддержки
sudoи дописывает её, если это необходимо.
start.bat:- Скрипт автоматически проверяет наличие Docker Desktop.
- Если Docker не установлен, то скрипт автоматически скачать и установить его.
- Запуск проекта:
- Поддерживается запуск профилей:
all(запуск всех компонентов),local-redis(запуск backend и redis, без frontend),frontend(запуск backend и frontend, без redis),api(запуск только backend). - Поддерживается остановка контейнеров
- Поддерживается просмотр логов (
docker compose logs -f). - Поддерживается перезапуск контейнеров (
docker compose restart).
- Поддерживается запуск профилей:
- Также по ходу исправил совместимость с
docker compose, вместо устаревшегоdocker-compose.
⚠️ Возможные ошибки
При запуске start.bat возможна ошибка кодировки:

Если у вас такая ошибка, не переживайте, вы можете открыть start.bat через NotePad++ и нажать "Кодировки"-> "Преобразовать в UTF-8".

В будущих версия в скриптах запуска будет убрана кириллица.
Конфигурация
Краткая инструкция по настройке .env файла
# Путь к базе данных SQLite
DATABASE_PATH=/app/data/users.db
# Секретный ключ для JWT
JWT_SECRET=obyazatelno_input_your_jwt_secret_key
# Настройки Redis (если используется внешний)
# REDIS_HOST=redis
# REDIS_PORT=6379
# Если планируется ручноый запуск, без использования скриптов, то можно прописать профили в файле
# Профили запуска:
COMPOSE_PROFILES=all # Запуск всего (фронтенд + бекенд + redis)
# Альтернативы:
# COMPOSE_PROFILES=local-redis # Без фронтенда, с Redis
# COMPOSE_PROFILES=frontend # Без Redis, с фронтендом
# Убрать переменную COMPOSE_PROFILES — запустится только API
# URL бекенда для фронтенда
# Если не задано, используется http://localhost:3001
REACT_APP_API_URL=http://localhost:3001
Параметры конфигурации:
DATABASE_PATHотвечает за стандартный путь базы данных (для авторизации используется SQlite)JWT_SECRETиспользуется для шифрования токена (авторизация фронтенда)COMPOSE_PROFILESявляется переменной, отвечающей за возможность сборки Frontend и Backend или просто Backend. Если нет нужды во Frontend, можно оставить перменную пустой:
COMPOSE_PROFILES=В таком случае, Frontend и Redis собираться не будет
- Если нет нужды в Redis (уже есть настроенный), то конфиг к нему также нужно прописать в переменных, а также нужно выбрать профиль
COMPOSE_PROFILES=frontendилиCOMPOSE_PROFILES=(если не требуется Frontend):
REDIS_HOST=redis
REDIS_PORT=6379
Файл .env уже создан в корне проекта, для локальной работы можно ничего не менять.
Краткая инструкция по настройке config.json файла
{
"serverDirectory": "./server",
"javaPath": "./java/jdk/bin/java",
"javaDownloads": {
"linux": {
"base": "https://api.adoptium.net/v3/binary/latest/{version}/ga/linux/x64/jdk/hotspot/normal/adoptium?project=jdk"
}
},
"maxMemory": "2G",
"minMemory": "1G",
"defaultServerType": "vanilla",
"defaultServerVersion": "1.21.5",
"disableFrontendAuth": false
}Параметры конфигурации:
serverDirectory: Путь к папке, где будут храниться файлы сервера.javaPath: Путь к исполняемому файлу Java. Если Java еще не установлена, приложение автоматически скачает её.javaDownloads: Настройки для скачивания Java. Включает базовый URL для Linux.maxMemory: Максимальный объем оперативной памяти, выделяемый серверу (например, 2G).minMemory: Минимальный объем оперативной памяти, выделяемый серверу (например, 1G).defaultServerType: Параметр стандартного типа сервера, если параметр не передан в запросе запуска (vanilla для стандартного сервера Minecraft).defaultServerVersion: Параметр стандартной версии сервера, если параметр не передан в запросе запуска (1.21.5 для стандартного сервера Minecraft).disableFrontendAuth: Параметр для отключения и включения авторизации для Frontend и Backend- По умолчанию — авторизация включена:
false - Проверки авторизации отключаются как на Backend, так и на Frontend:
true
- По умолчанию — авторизация включена:
Краткая инструкция по настройке logger.json файла
{
"logging": {
"enabled": true,
"debug": false,
"java": true,
"commandOutup": true,
"commandError": true,
"commandSent": true,
"minecraftServer": true,
"vanilla": true,
"forge": true,
"fabric": true,
"paper": true,
"spigot": true,
"webSocket": false,
"configLog": false,
"redis": true
}
}Параметры конфигурации:
enabled: Глобальный переключатель логирования.true— все логирование включено /false— всё логирование отключается.
debug: Уровень детализации логов:true— выводятся подробные дебаг-сообщения /false— выключить вывод дебаг сообщений.
java: Логирование событий, связанных с запуском и работой Java:true— включить вывод логов Java /false— выключить вывод логов Java .
commandOutput: Вывод стандартных сообщений команд (stdout).true— включить вывод команд /false— отключить вывод команд.
commandError: Логирование ошибок выполнения команд (stderr).true— выводить ошибки команд /false— не выводить ошибки команд.
commandSent: Логирование отправленных команд на сервер.true— выводить каждую отправленную команду /false— не выводить каждую отправленную команду.
minecraftServer: Общее логирование событий сервера Minecraft.true— включить логи сервера /false— отключить логи сервера.
vanilla: Логирование событий для сервера типаVanilla.true— включено /false— выключено.
forge: Логирование событий для сервера типаForge.true— включено /false— выключено.
fabric: Логирование событий для сервера типаFabric.true— включено /false— выключено.
paper: Логирование событий для сервера типаPaper.true— включено /false— выключено.
spigot: Логирование событий для сервера типаSpigot.true— включено /false— выключено.
webSocket: Логирование событий WebSocket-соединения (например, обмен данными между клиентом и сервером).true— включено /false— выключено.
configLog: Логирование изменений конфигурационных файлов.true— записывать изменения в конфигах /false— не записывать.
redis: Логирование взаимодействия сRedis(кэширование, чтение/запись данных).true— включено /false— выключено.
Запуск проекта
Для запуска проекта требуется:
- Доступ к интернету для скачивания Java и серверных файлов.
- Docker (версии 18.06.0 или выше) и Docker Compose (версии 1.27.0 или выше).
Запуск
- Склонируйте репозиторий:
git clone https://github.com/crazykivi/minecraft-backend.git
cd minecraft-backend- Или скачайте выбранный релиз.
- Запустите скрипт start.bat (для Windows) или для start.sh (для Ubuntu и Debian):
Для Linux (Ubuntu или Debian) нужно сделать файл исполняемым:
chmod +x start.shПосле чего запустите скрипт ./start.sh
- Или запустите проект вручную с помощью Docker Compose
docker compose up -dПланы:
- Добавление Vanilla.
- Добавление авто выбора Java для сервера.
- Добавление сборки проекта через Docker.
- Добавление скриптов для удобного запуска
- Добавление Forge.
- Добавление системы настройки логирования.
- Добавление аутентификации к маршрутам.
- Добавление маршрута для отправки команд серверу
- Добавление Fabric.
- Добавление Paper.
- Добавление Spigot.
- Добавление снапшотов и не стабильных версий (a, b и более старых, по возможности).
- Добавление Purpur, Folia.
- Добавление Quilt.
- Добавление Frontend для управления сервером (React).
- Добавление расширенной возможности управления логированием.
- Добавление расширенного функционала для Frontend.
- Добавление возможности запуска нескольких серверов одновременно (под вопросом).
- Добавить файловый менеджер во Frontend.
- Вернуть возможность управления Backend без Frontend (по паролю).
