Иконка ресурса

Авто-развертывание сервера L2 interlude через Docker (Ubuntu 18.04 - Тест)

Нет прав для скачивания
Авто-развертывание сервера L2 interlude через Docker (Ubuntu 18.04 - Тест)
Свой домашний сервер Lineage 2 Interlude (Часть1)
Установка сервера Lineage 2 Interlude на Ubuntu 18.04 в Hyper-V (Часть 2)
Screenshot_2.webp


Это были просто тесты, по этому гарантий дать не могу.
Сайт откуда взял инструкцию (он был для Windows) на poloman.pro, он уже не работает.
Изначально я запускал сервер Ubuntu 18.04 и работал он для тестов около года изредка…
после сервер сломался и никак не смог, на основном ПК починить, вот и сделал две тестовые установки на отдельном ПК, а раз оригинальной инструкции больше нет.
Сделаю тут в 2-3 вариантах, сервер Запустился и с Docker и Без него на Тестовом ПК.

При переносе на другой компьютер достаточно скопировать папку проекта и изменить IP-адрес в файле .env.

1. Установка Docker и Docker Compose

Код:
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker

# Добавление пользователя в группу docker (чтобы не использовать sudo)

Код:
sudo usermod -aG docker $USER
newgrp docker

Перезайдите в сессию или выполните newgrp docker, чтобы права применились.

2. Подготовка файлов сборки
Рекомендуется загружать сервер одним архивом и распаковывать на сервере, чтобы избежать ошибок.

Код:
sudo apt install unrar -y

Загрузите архив (например, l2docker.rar) в /home/ваш_пользователь/ через FileZilla (режим бинарной передачи).

Распакуйте и переместите папки authserver и gameserver в рабочую директорию проекта:

cd /home/ваш_пользователь

Код:
sudo apt update
sudo apt install unrar -y (установить архиватор)
unrar x l2docker.rar -p'пароль_архива'   # если нет пароля архива, просто опустите -p
mkdir -p /srv/l2docker
mv authserver /srv/l2docker/
mv gameserver /srv/l2docker/

3. Структура каталогов проекта
После перемещения папок ваша рабочая директория /srv/l2docker/ должна содержать:

Код:
/srv/l2docker/
├── docker-compose.yml
├── .env
├── init-db/
│   └── 01-init.sh
├── authserver/         ← содержимое папки authserver вашей сборки
└── gameserver/         ← содержимое папки gameserver вашей сборки

Установите правильные права, чтобы работать без sudo (замените ваш_пользователь на свой логин):
sudo chown -R ваш_пользователь:ваш_пользователь /srv/l2docker

4. Переменные окружения .env
Создайте файл в корне проекта:

Код:
nano /srv/l2docker/.env

Вставьте (формат ini):

Код:
DB_ROOT_PASSWORD=StrongRootPass123 # (Тут тупанул с паролем извиняйте - оставлю, переташил из гайда донара для Ubuntu и еще удивлялся потом О_о)
DB_NAME=interlude
DB_USER=l2juser
DB_PASSWORD=Poloman
EXTERNAL_IP=192.168.*.*   # ваш внешний IP - Закрепите в ОС
SERVER_NAME=Bartz

Важно:

DB_ROOT_PASSWORD – пароль root MySQL, DB_PASSWORD – пароль пользователя l2juser. Они могут различаться. В конце файла не должно быть лишних пробелов.

5. Конфигурация контейнеров docker-compose.yml

Создайте файл:

Код:
nano /srv/l2docker/docker-compose.yml

Полный рабочий вариант:

Код:
yaml
services:
  db:
    image: mysql:5.7
    container_name: l2-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      EXTERNAL_IP: ${EXTERNAL_IP}
      SERVER_NAME: ${SERVER_NAME}
    ports:
      - "3306:3306"                # для внешнего доступа (Navicat и т.п.)
    volumes:
      - db_data:/var/lib/mysql
      - ./init-db:/docker-entrypoint-initdb.d:ro
      - ./authserver/sql/install:/app_sql/authserver:ro
      - ./gameserver/sql/install:/app_sql/gameserver:ro
    command: --ssl=0               # отключаем SSL для старых драйверов

  authserver:
    image: eclipse-temurin:8-jre
    container_name: l2-authserver
    restart: always
    depends_on:
      - db
    ports:
      - "2106:2106"
    volumes:
      - ./authserver:/app
    working_dir: /app
    command: >
      java -server -Dfile.encoding=UTF-8 -Xmx256m
      -cp config:./*:lib/*
      l2.authserver.AuthServer

  gameserver:
    image: eclipse-temurin:8-jre
    container_name: l2-gameserver
    restart: always
    depends_on:
      - db
    ports:
      - "7777:7777"
    volumes:
      - ./gameserver:/app
    working_dir: /app
    command: >
      java -server -Dfile.encoding=UTF-8 -Xmx3G
      -cp config:./*:lib/*
      l2.gameserver.GameServer

volumes:
  db_data:

Обратите внимание:

Образ Java – eclipse-temurin:8-jre (работает, в отличие от удалённого openjdk).

Classpath -cp config:./*:lib/* правильно подхватывает jar-файлы в корне и в подпапке lib.

command: --ssl=0 для MySQL 5.7 решает проблему несовместимости со старыми драйверами.

Символ > позволяет записать команду Java в несколько строк, избегая ошибок YAML.

6. Исправление конфигурационных файлов сервера

Код:
authserver/config/authserver.properties
nano /srv/l2docker/authserver/config/authserver.properties

Найдите и исправьте следующие параметры:

Код:
properties
DatabaseHost = db
DatabasePort = 3306
DatabaseName = interlude
DatabaseUser = l2juser
DatabasePassword = Poloman

# Клиентский порт – слушаем все интерфейсы

Код:
LoginserverHostname = *
LoginserverPort = 2106

# Внутренний порт для связи с геймсервером – слушаем все интерфейсы

Код:
LoginHost = 0.0.0.0
LoginPort = 9014

# Отключаем второй пароль / пин-код

Код:
UseSecondPasswordAuth = False

# (опционально) Авторегистрация новых геймсерверов – уже зарегистрирован вручную, Но.

Код:
AcceptNewGameServer = True

gameserver/config/server.properties (Чере File Zilla) или:

Код:
nano /srv/l2docker/gameserver/config/server.properties

Исправьте:

Код:
properties
DatabaseHost = db
DatabasePort = 3306
DatabaseName = interlude
DatabaseUser = l2juser
DatabasePassword = Poloman

Код:
GameserverHostname = *
GameserverPort = 7777

Код:
ExternalHostname = 192.168.*.* (Изменить на свои)
InternalHostname = 192.168.*.* (Изменить на свои)

# Адрес authserver – используем имя Docker-сервиса

Код:
LoginHost = authserver
LoginPort = 9014
LoginUseCrypt = True

RequestServerID = 1
AcceptAlternateID = True

Важно:

DatabaseHost = db (без SSL-параметров, SSL отключён в самом MySQL).

LoginHost = 0.0.0.0 в authserver заставляет слушать все интерфейсы внутри контейнера.

LoginHost = authserver в gameserver направляет его к контейнеру authserver.

7. Скрипт инициализации базы данных 01-init.sh

Создайте папку и сам скрипт через nano (не через FileZilla, чтобы избежать Windows-окончаний строк):

Код:
mkdir -p /srv/l2docker/init-db
nano /srv/l2docker/init-db/01-init.sh

Содержимое:

Код:
#!/bin/bash
echo "=== Старт автоматического импорта базы данных L2 ==="

# 1. Импорт таблиц AuthServer
echo "Импорт таблиц AuthServer..."
mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /app_sql/authserver/account_log.sql
mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /app_sql/authserver/accounts.sql
mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /app_sql/authserver/gameservers.sql

# 2. Импорт таблиц GameServer
echo "Импорт таблиц GameServer..."
for file in /app_sql/gameserver/*.sql; do
    echo "Импортируем файл: $file"
    mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < "$file"
done

# 3. Регистрация игрового сервера

Код:
echo "Регистрация игрового сервера: IP $EXTERNAL_IP, Название $SERVER_NAME"
mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" -e "INSERT INTO gameservers (server_id, host, server_name) VALUES (1, '$EXTERNAL_IP', '$SERVER_NAME') ON DUPLICATE KEY UPDATE host='$EXTERNAL_IP', server_name='$SERVER_NAME';" 2>/dev/null || \
mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" -e "INSERT INTO gameservers (server_id, host) VALUES (1, '$EXTERNAL_IP') ON DUPLICATE KEY UPDATE host='$EXTERNAL_IP';"

echo "=== Импорт базы данных успешно завершен ==="

Сделайте скрипт исполняемым:

Код:
chmod +x /srv/l2docker/init-db/01-init.sh

8. Устранение ошибки D-Bus (опционально, если появляется)
Если при запуске docker-compose возникает ошибка Cannot autolaunch D-Bus, выполните:

Код:
mkdir -p ~/.docker
echo '{"credsStore": ""}' > ~/.docker/config.json

И для root:

Код:
sudo mkdir -p /root/.docker
echo '{"credsStore": ""}' | sudo tee /root/.docker/config.json
sudo systemctl restart docker

Теперь можно запускать проект.

9. Запуск сервера

Из папки проекта:

Код:
cd /srv/l2docker
DOCKER_CREDS_STORE="" docker-compose up -d


Первое развёртывание займёт некоторое время (MySQL инициализирует БД, скрипт импорта отработает).

Смотрите логи:

Код:
docker-compose logs -f

Успешный запуск:

authserver пишет Listening for clients on *:2106

gameserver соединяется с authserver:9014 и регистрируется.

10. Управление сервером (Docker Compose команды)

Все команды выполняются из директории /srv/l2docker.

Действие
Команда

Запустить все контейнеры (в фоне)
Код:
DOCKER_CREDS_STORE="" docker-compose up -d

Остановить контейнеры (без удаления)
Код:
docker-compose stop

Перезапустить все контейнеры
Код:
docker-compose restart

Перезапустить отдельный сервис (Можно в отдельном окне терминала)
Код:
docker-compose restart authserver

Перезапустить отдельный сервис (Можно в отдельном окне терминала)
Код:
docker-compose restart gameserver

Остановить и удалить контейнеры (БД сохранится)
Код:
docker-compose down

Полный сброс (удаление БД и всех данных)
Код:
docker-compose down -v

Просмотр логов всех сервисов
Код:
docker-compose logs -f

Логи конкретного сервиса (Можно в отдельном окне терминала)
Код:
docker-compose logs -f authserver

Логи конкретного сервиса (Можно в отдельном окне терминала)
Код:
docker-compose logs -f gameserver

Состояние контейнеров
Код:
docker-compose ps

Зайти в контейнер с БД
Код:
docker exec -it l2-db mysql -u root -pStrongRootPass123 interlude

Рекомендация:
Если после перезагрузки хост-машины сервер не стартует, выполните docker-compose down и docker-compose up -d заново – это гарантирует корректный порядок запуска.

Итог: изолированный сервер Lineage 2 в Docker.

Для переноса на другой компьютер достаточно скопировать папку /srv/l2docker и изменить EXTERNAL_IP в .env.

Как восстановить на другой машине с Linux
Установите Docker и Docker Compose (пункт 1 гайда).
Сохраните и скопируйте архив в /srv и распакуйте:

Код:
cd /srv
sudo tar -czvf ~/l2docker-backup.tar.gz l2docker/
sudo tar -xzvf l2docker-backup.tar.gz -C /srv/

Зайдите в папку и запусти:
Код:
cd /srv/l2docker
DOCKER_CREDS_STORE="" docker-compose up -d

Экспорт базы (создаст файл interlude_dump.sql в домашней папке):
Код:
docker exec l2-db mysqldump -u root -pStrongRootPass123 interlude > ~/interlude_dump.sql

Этот файл можно будет потом импортировать в чистую базу командой:
Код:
docker exec -i l2-db mysql -u root -pStrongRootPass123 interlude < interlude_dump.sql

Удаление копии сервера:
Код:
rm ~/l2docker-backup.tar.gz

Все изменения конфигурации (рейты, дроп, опции) вносятся в привычные .properties файлы внутри authserver/config/ и gameserver/config/,

после чего требуется перезапуск соответствующего контейнера.
  • Screenshot_1.webp
    Screenshot_1.webp
    143,4 КБ · Просмотры: 37
Автор
Hallow
Скачиваний
3
Просмотры
225
Первый выпуск
Обновление

Рейтинги

0,00 звёзд 0 оценок

Другие ресурсы пользователя Hallow

Назад
Сверху Снизу