Lineage2TS - HF сервер написанный на Typescript

Интересно чем это все закончится... Успехов в работе
 

Спасибо за ваши труды.
Не затруднит ли вас выкатить мануал по запуску с использованием portainer, а также настройкой сервера для подключения с другого пк в локальной сети?
Выкладываю простой способ запука сервера Lineage2TS с использованием Portainer который установлен на удаленном через сеть компьютере. Можно обсудить детали как и что. После этого я собираюсь перенести все написанное в документ репозитория вместе с скриншотами.

Для того что-бы запустить сервер Lineage2TS вам понадобиться установленная система Portainer либо установленная на ваш главный комьпютер, либо на компьютер где-либо в сети. Все операции можно проводить через web интерфейс. Главное что-бы ваш акаунт был с доступом запуска новых контейнеров.
Сначала вам нужно перейти на страницу "Containers" и нажать на кнопку "Add Container".

In order to launch Lineage2TS server you can use existing installation of Portainer on local or remote computer. All steps can be performed either through web interface. Main requirement is to have enough permissions for your account to launch new containers.
First you need to navigate to Containers section in UI and press "Add Container" button.
2025-06-30 09_56_40-Portainer _ local - Brave.webp

2025-06-30 09_57_40-Portainer _ local - Brave.webp

После этого вы сможете заполнить страницу запуска контейнера. Имя контейнера можно прописать как угодно. Ссылка изображения под контейнер будет "registry.gitlab.com/mrtrex/lineage2ts/server:latest" Самоe главное выбрать открытые порты 7777 и 2106 и поставит переменную с IP адресом сервера на котором установлен Portainer, "GS.server.ExternalServerIP" . Например если у вас IP сервера 192.168.0.1, то нужно это прописать в разделе Env , под "Advanced container settings", как на этом скриншоте. После этого нажимаем кнопку "Deploy the container" для запуска сервера.

After this you can start filling details for container. Any name can be used to name container, it can also be left empty for name to be auto-generated. Image can either be used "registry.gitlab.com/mrtrex/lineage2ts/server:latest" or "lineage2ts/server:latest" (pulling from DockerHub). Ports 7777 and 2106 must be open. Very important to specify environment variable "GS.server.ExternalServerIP" which is responsible for IP address of server. For example if remote computer running Portainer is using IP 192.168.0.1 , you would record it in Env section in "Advanced container settings" at bottom of the page. Click "Deploy the container" to proceed.

2025-06-30 09_30_18-Portainer _ local - Brave.webp

После запуска контейнера вы сможете увидить эго в спискe "Container list". Если перейти по ссылке имени контейнера вы сможете увидить дополнительную информацию и опции. Нажмите на линк "Logs" что-бы перейти на страницу где отображаются сообщения сервера.

After launch you should see your container listed in "Containers list". Once you click its name you should be able to see additional details being displayed like this. Click on "Logs" to see server log output.

2025-06-30 08_46_24-Portainer _ local - Brave.webp

Ну вот и все, теперь можно наблюдать над тем как сервер пишет сообщения и о чем. Можно сразу подсоединяться нa сервер и начинать играть.

At this point you should be able to see server logs in real-time. And it looks like it has started already! You are welcome to use your game client to connect to game server and start playing!
2025-06-30 09_30_59-Portainer _ local - Brave.webp
 
Хочеться добавить что можно получить административные привилегии для своего персонажа при использовании команд под секцией "AccountPrivileges Voiced Command". То есть когда вы уже играете персонажем вы можете напечатать код в чате и получить временные привилегии админа. При этом вы увидите сообщение о том как сохранить привилегии в будущем для своего персонажа. Удачной игры!

I would like to add one more thing. In order to claim admin privileges please note server output where you can see "AccountPrivileges Voiced Command" and a few lines below it containing what looks like a jumbled sequence of letters. You can enter such sequence (for example something like, ".IneedAdmin007") in chat once you are connected and playing on server and you will gain temporary admin privileges to execute any command you need. It will even tell you what command you need to make admin privilege permanent! Happy playing!
 
а нет под рукой примера compose файлика ?
 
а нет под рукой примера compose файлика ?
Попробуйте такой docker-compose.yml

YAML:
version: '3.3'

services:
  lineage2ts:
    container_name: lineage2ts-servers
    image: registry.gitlab.com/mrtrex/lineage2ts/server:latest
    restart: always
    ports:
      - "7777:7777"
      - "2106:2106"
    environment:
        GS.server.ExternalServerIP: "127.0.0.1"

И измените адрес IP на ваш адрес компьютера в сети.
 
Попробуйте такой docker-compose.yml

YAML:
version: '3.3'

services:
  lineage2ts:
    container_name: lineage2ts-servers
    image: registry.gitlab.com/mrtrex/lineage2ts/server:latest
    restart: always
    ports:
      - "7777:7777"
      - "2106:2106"
    environment:
        GS.server.ExternalServerIP: "127.0.0.1"

И измените адрес IP на ваш адрес компьютера в сети.
начало было неплохим пока я за угол не зацепился..
 
начало было неплохим пока я за угол не зацепился..
Не надо мучать сервер. По серьезному, то да, нужно доделывать. Сейчас упор ведеться на тестирование мелких систем сервера. В будущем у вас не будет такиx проблем так как будет использоваться поиск пути. Сейчас он не приделан.
 
Не надо мучать сервер. По серьезному, то да, нужно доделывать. Сейчас упор ведеться на тестирование мелких систем сервера. В будущем у вас не будет такиx проблем так как будет использоваться поиск пути. Сейчас он не приделан.
Ну это было крайне неожиданно когда в центр карты отправило, ладно бы просто застрял в стене ну или в том же месте под землю провалился и такое бывало ) но это что то новое =)
 
Ну это было крайне неожиданно когда в центр карты отправило, ладно бы просто застрял в стене ну или в том же месте под землю провалился и такое бывало ) но это что то новое =)
Это координаты 0,0,0
 
Спасибо за инструкцию по запуску. Также хочу уточнить, вот внесли вы какие-то изменения в проект и, учитывая, что контейнер был скачан по ссылке "registry.gitlab.com/mrtrex/lineage2ts/server:latest", я правильно понимаю, что такие изменения автоматически применятся к серверу на моей машине? Возможно ли редактировать фалы в контейнере для изменения настроек сервера?
 
Спасибо за инструкцию по запуску. Также хочу уточнить, вот внесли вы какие-то изменения в проект и, учитывая, что контейнер был скачан по ссылке "registry.gitlab.com/mrtrex/lineage2ts/server:latest", я правильно понимаю, что такие изменения автоматически применятся к серверу на моей машине? Возможно ли редактировать фалы в контейнере для изменения настроек сервера?
Нет, не в такой конфигурации. Ваще по камильфо - docker-compose должен быть в руте самого проекта

Код:
services:
  default:
    # ...
  prod:
    # ...
    profiles: ['prod']

Потом

`docker compose up -d`
`docker compose --profile prod up -d`

При этом дефолтный будет пойнтить на локальный Dockerfile и билдить его, и мапать volumes к локальным конфигам и логам.

Но даже так при изменения сурсов вам нужно будет ребилдить весь проект и молится на слои кэша что какбы убивает весь смысл этого проекта который по чему я вижу - быстрое прототипирование идей, и игровых концептов, hot reload без дисконов и прочее.

Вариации как сделать правильно тут много. Но если кратко - докер юзаете либо как демо, пощупать проект побыстрому. Либо когда в прод выходите. Все остальное локально запускайте.

Ваще рэкомендую 🍷.

Руки так и чешутся зафоркать этот проект...эх время
🏴‍☠️
 
Последнее редактирование:
Спасибо за инструкцию по запуску. Также хочу уточнить, вот внесли вы какие-то изменения в проект и, учитывая, что контейнер был скачан по ссылке "registry.gitlab.com/mrtrex/lineage2ts/server:latest", я правильно понимаю, что такие изменения автоматически применятся к серверу на моей машине? Возможно ли редактировать фалы в контейнере для изменения настроек сервера?
Можно редактировать, просто нужно прописать какие файловые директории нужно сохранить на ваш диск. Если вопрос о настройках сервера, то все переменные можно прописать через ENV параметры что есть другой вид настроек если вам не охота копаться в файлах.

Нет, не в такой конфигурации. Ваще по камильфо - docker-compose должен быть в руте самого проекта

Код:
services:
  default:
    # ...
  prod:
    # ...
    profiles: ['prod']

Потом

`docker compose up -d`
`docker compose --profile prod up -d`

При этом дефолтный будет пойнтить на локальный Dockerfile и билдить его, и мапать volumes к локальным конфигам и логам.

Но даже так при изменения сурсов вам нужно будет ребилдить весь проект и молится на слои кэша что какбы убивает весь смысл этого проекта который по чему я вижу - быстрое прототипирование идей, и игровых концептов, hot reload без дисконов и прочее.

Вариации как сделать правильно тут много. Но если кратко - докер юзаете либо как демо, пощупать проект побыстрому. Либо когда в прод выходите. Все остальное локально запускайте.

Ваще рэкомендую 🍷.

Руки так и чешутся зафоркать этот проект...эх время
🏴‍☠️
Хорошая идея, я файлик сохраню. Но насчет вот того что-бы использовать Dockerfile, это уже другой разговор. Если нужно изменить параметры сервера, как конфигурацию или датапак, то достаточно просто проредактировать файлы через VOLUME докера. Не нужно будет все обратно собирать через Dockerfile, так как главной целью сборки такого видa это все упаковать для скачивания людьми (именно упаковка, так как там много чего будет обратно разпакованно, всетаки весь сервер скачивается под 192 МiB). Если нужно что-то править то конечно скачивайте проект и сами все компилируйте, но для изменения датапака достаточно редактировать толкo один файл datapack.database

Насчет логов и конфиг файлов. Логи можно настроить жерез докер или же OTEL конфигурацию. Есть конфиг файлы, да и те можно даже не редактировать, просто прописать значения которыe вы хотите изменить через тот-же docker-compose в секции environment. Имена значений для игрового сервера будут такими : GS.<конфиг>.<переменная>=<значение> По примеру выше, есть GS.server.ExternalServerIP=127.0.0.1 , то есть если редактировать конфиг то нужно найти файл configuration/server.properties и изменить строку ExternalServerIP

Насчет прототипирования идей. Длинное слово... Для этого не будет использоваться docker. Это ведь уже зона разработчика и докер тут вообще роли не играет, не нужно его вообще упоминать. Берите изменяйте код и запускайте напрямую для тестирования. А когда уже все подправленно тогда можно и опять в докер засунуть. Толькo незабудьте что проект разработан по лицензии AGPL, и все изменения кода нужно куда-то публицировать. Если же никаких изменений нет по сравнению с моим проектом (именно изменения кода, а нe датапак или же там гео-пак, и естественно не файлы конфигурации) то ничего не нужно делать.
 
Увы, большинство gm команд не работают...
 
начало было неплохим пока я за угол не зацепился..
Нулевая координата. Ладно у ТСа на этапе разработки такая бага. В доте нулевая позиция в центре карты и с ней очень много багов было да и наверняка есть все еще.
 
Так помоги автору, сделай пару коммитов, где ты доработаешь GM команды.
Я бы с радостью, но я не прогер...((( проект автора интересен и команды гм это то, что я обнаружил...
 
Я бы с радостью, но я не прогер...((( проект автора интересен и команды гм это то, что я обнаружил...
Ну можно автору оплатить подписку на cursor и я думаю он начнет быстрее работать 👌ну или мне и я начну быстрее работать 🤣🤣
 
Увы, большинство gm команд не работают...
Тут нужен отдельный разговор. Какие команды? И какие команды вам нужны? В огромном большинстве это будут совершенно другие команды по стравнению с L2J. Можно написать //admin но то что будет работать так это всего несколько кнопок из-за того что команды были переписанны на другие имена.

Например:
//help - показывает все команды с перечнем по алфавиту (я сейчас это немного правлю так как раздел на команды начинающиеся с S не могут быть показаны из-за огромного их количества)
//search-item-name <имя> - поиск предмета по имени, имя может быть не полным
//teleports - L2J телепорт страницы
//armor-sets - сеты брони, любые на вкус и цвет
//search-npc-menu - меню для поиска любых NPC
//search-skill-name <имя> - поиск скиллов по имени, имя может быть не полным
//geo-menu - проверки данных на гео-паке
 
Тут нужен отдельный разговор. Какие команды? И какие команды вам нужны? В огромном большинстве это будут совершенно другие команды по стравнению с L2J. Можно написать //admin но то что будет работать так это всего несколько кнопок из-за того что команды были переписанны на другие имена.

Например:
//help - показывает все команды с перечнем по алфавиту (я сейчас это немного правлю так как раздел на команды начинающиеся с S не могут быть показаны из-за огромного их количества)
//search-item-name <имя> - поиск предмета по имени, имя может быть не полным
//teleports - L2J телепорт страницы
//armor-sets - сеты брони, любые на вкус и цвет
//search-npc-menu - меню для поиска любых NPC
//search-skill-name <имя> - поиск скиллов по имени, имя может быть не полным
//geo-menu - проверки данных на гео-паке
Ну например если зайти в //gmshop и что нибудь выбрать, пишет, что admin_buy не существует
 
Назад
Сверху