Skip to content

0.2.53. Расширение функционала файлового менеджера

Choose a tag to compare

@crazykivi crazykivi released this 15 May 07:44

3e702509-0e16-41a0-a713-361f6ced69af

Ссылка на Wiki

https://outline.nikitaredk0.ru/s/9d2d3ed1-7ddd-485f-acf1-81a405415224/doc/minecraft-server-Vx0adnYoK3

Основные изменения

1. Расширение функционала файлового менеджера (Frontend)

  • Добавление Drag-and-drop для переноса файлов в рабочую панель файлового менеджера
  • Реализован выбор папки через кнопку "Выбор папки для загрузки"
  • Использован File System Access API (window.showDirectoryPicker()) — позволяет выбрать папку и рекурсивно считать все файлы внутри неё, включая вложенные папки
  • Сохранена полная структура каталогов при загрузке
  • Поддерживается перезапись существующих файлов , а также автоматическое создание отсутствующих папок

Пример структуры

Если ты выбираешь папку:

test/
├── file.txt
└── images/
    └── image.png

На сервере будет создано:

/app/server/test/file.txt
/app/server/test/images/image.png

⚠️ Важно

  • Функция работает только в Chromium-браузерах (Chrome, Edge и т.п.)

⚠️ Возможные ошибки

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

2. Улучшения бэкенда

2.1 Обработка relativePath

  • Сервер теперь корректно обрабатывает пути, отправленные из фронтенда
  • Если на месте новой папки находится файл — он удаляется , чтобы освободить место для директории
  • Путь формируется как:
    path.join(fullPath, dirStructure)
    где fullPath — это /app/server, а dirStructure — структура из relativePath

2.2 Перезапись файлов:

  • Если файл уже существует — он перезаписывается без ошибок

Конфигурация

Краткая инструкция по настройке .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 (по паролю).