9.6 KiB
Lineage 2 Essence — развёртывание сервера (Docker)
Окружение для Lineage 2 Essence с клиентом protocol 520, PostgreSQL 17 и интерактивными скриптами установки/управления. Подходит как база под сборки в духе L2J Mobius / Samurai Crow (JAR login + game подключаете сами).
Репозиторий: https://git.evilfox.cc/test/Lineage-2
Что входит в проект
| Компонент | Описание |
|---|---|
| PostgreSQL 17 | Одна БД l2essence: login + game + справочники классов |
| install.sh | Пошаговая установка (Docker, .env, БД, опционально login/game) |
| manage.sh | Остановка, запуск, перезапуск сервисов |
| config/ | Шаблоны LoginServer.properties, Server.properties, ipconfig.xml, hexid |
| docker/initdb/ | SQL-схема и тестовые данные при первом создании тома |
| server/login, server/game | Сюда кладутся LoginServer.jar и GameServer.jar |
Требования
- Ubuntu 22.04 / 24.04 (рекомендуется) или другой Linux с Docker
- Docker Engine + плагин Compose v2
- 2+ GB RAM, свободные порты:
5432,2106,9014,7777 - Сборка сервера (login + game + datapack) с поддержкой PostgreSQL и протокола 520
- Клиент Lineage 2 Essence с protocol revision 520
Быстрый старт
git clone https://git.evilfox.cc/test/Lineage-2.git
cd Lineage-2
chmod +x install.sh manage.sh scripts/*.sh docker/initdb/*.sh
./install.sh
На каждом шаге install.sh спрашивает y/n. По умолчанию поднимается только PostgreSQL; login/game — по желанию (шаг 7), если JAR уже лежат в server/.
Подробное развёртывание
1. Клонирование и права
git clone https://git.evilfox.cc/test/Lineage-2.git
cd Lineage-2
chmod +x install.sh manage.sh scripts/*.sh docker/initdb/*.sh
2. Установка через мастер
./install.sh
| Шаг | Действие |
|---|---|
| 0 | Подтверждение начала |
| 1 | Проверка Ubuntu |
| 2 | Установка Docker (если нет) |
| 3 | Создание .env (логин/пароль БД, имя БД, порт) |
| 4 | docker compose pull |
| 5 | Запуск PostgreSQL и ожидание готовности |
| 6 | Подстановка пароля БД в config/login и config/game |
| 7 | Запуск login + game (--profile l2), если есть JAR |
Файл .env создаётся из .env.example и не коммитится в Git.
3. Серверные JAR и datapack
- Скопируйте LoginServer.jar (и
libs/) вserver/login/. - Скопируйте GameServer.jar (и
libs/, datapack) вserver/game/. - В
libs/обоих серверов должен быть драйвер PostgreSQL:postgresql-42.x.jar. - Убедитесь, что в сборке в конфиге указан protocol 520 (см.
config/game/Server.properties→AllowedProtocolRevisions = 520).
Синхронизация пароля БД в конфигах:
./scripts/sync-config-password.sh
4. HexID (связь Login ↔ Game)
Значение hexid должно совпадать в трёх местах:
server/hexid/default.txtconfig/game/hexid.txt- таблица
gameserversв БД (сид вdocker/initdb/03_seed_essence520.sql)
По умолчанию: a1b2c3d4e5f6789012345678901234ef, RequestServerID = 1.
После смены hex перезапустите login и game:
docker compose --profile l2 restart login game
5. Запуск Login и Game
docker compose --profile l2 up -d login game
docker compose --profile l2 ps
docker compose logs -f login
docker compose logs -f game
Только БД:
docker compose up -d postgres
6. Управление сервером
./manage.sh
Интерактивно: статус, остановка, запуск, перезапуск PostgreSQL / login / game, полный down.
Полезные команды:
docker compose logs -f postgres
docker compose --profile l2 down
docker compose down -v # удалить том БД (все данные!)
Подключение клиента
| Параметр | Значение |
|---|---|
| Протокол | 520 |
| Login | IP сервера, порт 2106 |
| Game | IP сервера, порт 7777 |
На VPS в config/login/ipconfig.xml и config/game/ipconfig.xml замените 127.0.0.1 на внешний IP сервера.
В l2.ini / системном файле клиента укажите тот же IP и порты.
Тестовые аккаунты
| Логин | Пароль | Примечание |
|---|---|---|
admin |
admin |
accessLevel 100 |
test |
test |
обычный аккаунт |
Хеш пароля: Base64(SHA1(UTF-8 пароль)) (как в L2J Mobius).
База данных
Автоинициализация (новый том)
При первом docker compose up postgres выполняет скрипты из docker/initdb/:
01_login_essence520.sql— accounts, gameservers, …02_game_essence520_minimal.sql— characters, items, …02b_game_classes_ref.sql— расы, классы, стартовая экипировка03_seed_essence520.sql— аккаунты, gameserver04_seed_classes_essence520.sql— классы и стартовые скиллы99_grant_app_user.sh— права пользователю БД из.env
Уже существующая БД
Если том создавался раньше, init-скрипты не повторяются. Примените схему вручную:
./scripts/apply-essence-schema.sh
Или пересоздайте том (удалит все данные):
docker compose down -v
./install.sh
Создаваемые классы (protocol 520)
Базовые classId на экране создания персонажа:
0, 10, 18, 25, 31, 38, 44, 49, 53, 123, 124, 182, 183
(см. таблицы ref_classes, ref_races, class_list).
Полные шаблоны персонажей и предметы обычно берутся из datapack (XML) вашей сборки; SQL в репозитории — минимальный каркас.
Структура каталогов
Lineage-2/
├── install.sh # Установка
├── manage.sh # Управление
├── docker-compose.yml
├── .env.example
├── config/
│ ├── login/ # LoginServer.properties, servername.xml, ipconfig.xml
│ └── game/ # Server.properties, hexid.txt, ipconfig.xml
├── server/
│ ├── login/ # LoginServer.jar
│ ├── game/ # GameServer.jar + datapack
│ └── hexid/default.txt
├── docker/initdb/ # SQL при первом старте БД
└── scripts/
├── apply-essence-schema.sh
└── sync-config-password.sh
Частые проблемы
Docker: permission denied
Добавьте пользователя в группу docker, перелогиньтесь:
sudo usermod -aG docker $USER
Login не пускает / неверный пароль
Проверьте формат хеша в accounts.password и алгоритм в вашей сборке. При необходимости пересоздайте аккаунт через SQL или AutoCreateAccounts = True в login config.
Клиент «Protocol mismatch»
В Server.properties должно быть AllowedProtocolRevisions = 520 и клиент с тем же протоколом.
GameServer не регистрируется на Login
Сверьте hexid, RequestServerID, порты 9014, что login запущен раньше game.
Ошибки SQL с IF(...) в login
Стандартный L2J MySQL-запрос; нужна PostgreSQL-адаптированная сборка или полный SQL из вашего дистрибутива.
Нет LoginServer.jar / GameServer.jar в контейнере
Контейнеры ждут JAR в server/login и server/game; без них в логе будет сообщение и sleep infinity.
Обновление с Git
cd Lineage-2
git pull
./scripts/apply-essence-schema.sh # при новых SQL, если том БД старый
./scripts/sync-config-password.sh # при смене .env
docker compose --profile l2 up -d
Лицензия и ответственность
Серверные JAR и клиент Lineage 2 — собственность правообладателей. Репозиторий содержит только инфраструктуру развёртывания; используйте в соответствии с законодательством и лицензиями вашей сборки.