Перейти к содержимому

Быстрый старт

Нужны JDK 25 и Docker. На Windows клонируйте с git clone -c core.longpaths=true: часть путей к скриптам длиннее, чем Windows допускает по умолчанию.

Окно терминала
docker compose up -d

Команда запускает PostgreSQL 18 на 127.0.0.1:5432 с базой l2nx и при первом старте создаёт по одной роли и одной схеме на сервер: l2nx_login владеет login, l2nx_game владеет game. Таблицы серверы создают сами при старте (Liquibase). Это совпадает с настройками обоих серверов по умолчанию (spring.datasource.*): пароль l2nx. Порт открыт только для вашей машины; прежде чем открывать базу куда-то ещё, смените пароли и задайте такие же серверам в config/application.yaml (см. эксплуатацию). Как подготовить базу без Compose — в разделе о базе данных страницы эксплуатации.

Роли и схемы создаются только при создании volume. До версии 1.0 у каждого сервера одна baseline-схема, и её правят на месте, поэтому после pull изменений, затрагивающих базу, пересоздайте её командами docker compose down -v и docker compose up -d; локальные данные при этом удаляются. Ошибка checksum Liquibase при старте означает именно это.

Обоим серверам нужен один и тот же secret GS-link длиной не менее 32 символов; задайте его в каждом терминале перед запуском:

Окно терминала
export L2NX_GSLINK_SECRET=$(openssl rand -base64 32) # первый терминал; скопируйте значение во второй
Окно терминала
./gradlew :login:boot:run
./gradlew :chronicles:high-five:boot:run

Сервер логина принимает клиентов на порту 2106. Игровой сервер регистрируется на нём через GS-link (порт 9014, эксплуатация) и принимает клиентов на порту 7777. Аккаунт создаётся при первом входе (l2nx.login.auto-create-accounts в application.yaml сервера логина).

Принимаются клиенты High Five с ревизиями протокола 267, 268, 271 и 273; набор задаёт protocol adapter highfive, отдельной настройки у него нет.

Окно терминала
./gradlew installDist

собирает два готовых к запуску каталога:

Каталог Содержимое
login/boot/build/install/login-server bin/login-server, config/
chronicles/high-five/boot/build/install/game-server bin/game-server, config/, data/

Серверы работают headless. Рестарт из игры или по расписанию завершает процесс с кодом 2, падение — другим ненулевым кодом, остановка — кодом 0: запускайте сервер под супервизором, который перезапускает его при ненулевом коде (systemd Restart=on-failure, Docker restart: on-failure; примеры в эксплуатации). ./gradlew distZip упаковывает те же каталоги в архивы.

Сборка перезаписывает в этих каталогах всё, что приходит из исходников, включая config/. Сохраняются log/ и data/geodata/.

Геодата не поставляется. Положите файлы в data/geodata каталога игрового сервера; формат и путь задаются в config/GeoEngine.ini.