Jump to content

⭐ Links Úteis




⚔️ Servers Apoiadores



🎁 Ofertas







  • Recently Browsing

    No registered users viewing this page.

  • Similar Content

    • By GOvy
      Eai galera, to fazendo um vip system pra l2jserver com as seguintes características:
      atualmente tenho quase tudo terminado, mas nao estou conseguindo entender como funciona o sistema drop para adicionar validacao... ficaria muito grato se alguem que esta trabalhando com a versao mais recente do jserver me explicasse como esse pacote funciona.
       

    • By Lucas Santos 97
      Aqui está a melhor solução, um pacote completo de um servidor online por mais de 4 meses com mais de 300 jogadores online todos os dias, depurado e balanceado.
      MUITOS RECURSOS E SCRIPTS SÃO COMPLETOS ÚNICOS E NÃO COMPARTILHAM EM NENHUMA PARTE. Os arquivos são baseados em l2jserver.
      Aqui está a melhor solução, um pacote completo de um servidor ao vivo por mais de 4 meses com mais de 300 jogadores online todos os dias, depurado e balanceado.
      MUITOS RECURSOS E SCRIPTS SÃO COMPLETOS ÚNICOS E NÃO COMPARTILHAM EM NENHUMA PARTE. Os arquivos são baseados em L2j.

      Pack is 99,9% Exploid free with unique flood, phx, autoclicker protection and many more.
      Epic Bosses:

          QueenAnt
          Core
          Orfen
          Zaken
          Baium
          Antharas
          Valakas
          Beleth   (CUstom script, with full animations, without quest)
          Baylor   (CUstom script, with full animations, without quest)
          Frintezza   (CUstom script, with full animations, without quest)
      Instances/Dungeons:

          Fortres Dungeon
          Castles Dungeon
          Solo Kamaloka
          Chamber of Delusion
          Pailaka
          RimPailaka
          Kamaloka
          SeedOfDestruction
          SeedOfInfinity
          CrystalCavern
          Hellbound 
      Skills:

          All Gracia Epilogue skills are working.
      Custom Features:

          Castle Lord Announce
          Hero Announce
          Anti Buff Shield
          PvP/PK Color System
          You can't use BSOE in PvP
          Unique Clan Level up instance
          Unique Attribute Crystal farming system
          Unique Soul Crystal Instance
          PC Bank Point System + Trader NPC
      Custom Npc`s:

          GM Shop
          Global Gatekeeper                   
          Raid Boss Gatekeeper
          Scheme Buffer
          Server Info
          Server Statistics
          Service Manager
          Forgotten Scroll Trader
          Grand Boss Respawn Info
          Clan Reputation Manager
          Delevel Manager
          Agent Girl
          Pc Bank Point Trader
          Instance Manager
          Item Auctioneer
      Custom Command`s:
          .repair (Location is on cerberus alliance base)
          .toppvp
          .exp
      Event`s:
          Team vs Team Special Edition

      - Description:
        1.As normal TvT, system starts registration time.
        2.When the event starts, participants are teleported in the enterooms.
        3.Here players have configurable time to form a party and buff theirselves.
        4.After a configurable time the enterooms doors open and the battle starts !
        5.So this is repeated for 3 times to make 3 rounds.
        6.The team that wins 2 times gets rewarded at the end of the event.
      - Event Zone:
         Emerald Square
          Capture The Flag

      - Description:
         Classic
      - Event Zone:
         Underground Coliseum
          Advanced hitman (Improved)
          Grand Wedding Event
          Many retail events
      Special Features:

          Top PvP Player of the day (gets a unique item with stats until the next day if he will be the top pvp of the next day he will keep the item else the item will go to the next top pvp player)
          Unique vote reward system. (in the server ist in first page the script will give a small reward and will promt the players to vote for get the server in first page. If the server is on first page of top servers by vote in hopzone the players will rewarded with a big reward. The script if fully configurable ).
       
      no momento nào tenho nenhuma print, porèm quem for testa favor me envia as prints estou sem o cliente gracia epilogue.
      Esse pack foi desenvolvido pelos DC, tenho esse pack a mais ou menos 4 anos.
       
      Pack + Backup: https://mega.nz/file/WopVACxI#NPGs41zRWtcar5bmtipkS4cSvH1KpqLRoGM4po35UHY
      Senha para descompacta: lucassantos

      System: https://mega.nz/file/LooXUQLQ#njUbwwLVhW4SaiL3ZBnwnKGX797aSFFQ0sekAJURrzA
  • Posts

Colocando um servidor l2jserver online em 10 minutos - Uma abordagem de 2020.


Recommended Posts

  • L2JBr ADM

Fala papangus!

Faz tempo que eu não deixou aqui uma contribuições de tutorial, hoje eu vou ensinar a forma mais fácil e sem complicações de rodar um servidor l2jserver H5 em menos de 10 minutos.

Sem instalações complicadas, você precisará de 2 coisas:

  • GIT - você baixará o código fonte através do git, então é importante que ele esteja instalado em seu computador , não vou repetir o processo de instalação, ele já está documentado nesse tutorial aqui:
  • DOCKER: 

docker_facebook_share.png

 

De forma resumida, o Docker é uma plataforma de código aberto, desenvolvido na linguagem Go e criada pelo próprio Docker.Inc. Por ser de alto desempenho, o software garante maior facilidade na criação e administração de ambientes isolados, garantindo a rápida disponibilização de programas para o usuário final.

O Docker tem como objetivo criar, testar e implementar aplicações em um ambiente separado da máquina original, chamado de container. Dessa forma, o desenvolvedor consegue empacotar o software de maneira padronizada. Isso ocorre porque a plataforma disponibiliza funções básicas para sua execução, como: código, bibliotecas, runtime e ferramentas do sistema.

A grande vantagem no uso da plataforma é a rapidez em que o software pode ser disponibilizado — em uma frequência até 7 vezes mais rápida do que a virtualização convencional.

Outro benefício oferecido pela plataforma é a possibilidade de configurar diferentes ambientes de forma rápida, além de diminuir o número de incompatibilidades entre os sistemas disponíveis.

Um arquivo Docker pode ser formado por diversas camadas diferentes, onde se dividem em dois grupos:

  • Imagens: elas são formadas por diferentes camadas. Com a sua utilização, o usuário pode facilmente compartilhar um aplicativo ou um conjunto de serviços em diversos ambientes. Quando há alguma alteração na imagem, ou uso de um comando como executar ou copiar, é criada uma camada.
  • Containers: são formadas na reutilização das camadas. Um container é o local onde estão as modificações da aplicação que está em execução. É por meio dele que o usuário pode modificar uma imagem.

 

Como instalar o docker?

 

Você pode instalar o docker em praticamente todos os sistemas operacionais através dos instaladores ou gerenciador de pacotes, o docker é um serviço e um uma aplicação de linha de comando, siga as instruções abaixo para instalar o docker no seu sistema operacional:

 

Vou seguir a instalação pelo windows 10, mas o procedimento é o mesmo no linux e outro sistema operacional.

No windows você sabe que o docker está rodando e instalado clicando na bandeja de icones do windows, ao lado do relógio, haverá um ícone de uma baleia carregando containers dê 2 clicks sobre o icone:

image.png

Irá abrir o painel de controle do docker indicando que o serviço do docker está rodando:

 

image.png

 você pode fechá-lo agora, se quiser explore um pouco as opções e aprenda mais sobre o docker.

Agora será necessário que você abra o Windows Power Shell, para fazer isso  é só abrir o painel de controle e pesquisar por power shell.

Verifique se os clientes docker e docker composer estão funcionando corretamente digitando os seguintes comandos:

docker -v 

docker-compose -v

A saída deve ser algo assim:

image.png

 

Como instalar a imagem docker do L2jServer?

Vamos agora clonar o repositório que a l2jserver publicou com seu seviço docker usando o comando:

 

git clone https://bitbucket.org/l2jserver/l2j-server-docker.git

O resultado deve ser como a imagem abaixo:

image.png

Você verá que alguns arquivos foram baixados:

image.png

Os arquivos que nos interessam aqui são:

  • Dockerfile: É o arquivo de imagem, dentro dele há as instruções de como é feita a instalação da imagem Docker.
  • docker-compose.yml:  É o arquivo configurável,  é nele que vamos fazer as modificações e as configs para que o docker-commposer possa orquestrar a inicialização dos containers.
  • entry-point.sh: É o arquivo que executa quando você inicia um container ou contêiner( em português)

 

Configurando o servidor antes de inicializar

A configuração do servidor é feita através de variáveis de ambiente, e é dentro do arquivo docker-compose.yml que iremos fazer as mudanças:

Abra o arquivo com algum editor de texto que forneça a função "highlight" como o notepad++ , assim ficará mais fácil identificar caso você digite algo errado.

Os arquivos YML utilizam a syntaxe parecida com a linguagem de programação Python, e atráves da identação ( colunas de espaços vazios e tabs) que sabemos como cada bloco do código é configurado.

Eu habilitei os caracteres invisívels clicando no icone image.png para poder visualizar esses espaços corretamente:

 

image.png

Agora a explicação de cada uma das tags acima exibidas:

  • version: indica a versão da sintaxe  do docker-compose que irá rodar (algo parecido como php 5.6, php 7, etc), para mais info acesse https://docs.docker.com/compose/compose-file/
  • services:  É uma lista com os  contêiners que irão rodar, nesse caso haverá 2 containers, o mariadb e o l2jserver, vejam que ambos estão com 2 espaços antes do nome, isso indica que eles estão no mesmo nível de identação.
    • Dentro de cada serviço você encontrará as seguintes tags:
      • container_name: Nome do container.
      • image: nome da imagem do container no docker hub: https://hub.docker.com/ que é uma espécie de repositório de imagens.
      • volumes: Nome do volume é o nome de uma pasta que irá montar no filesystem, sem um volume os arquivos gerados pelo container serão destruídos quando o container estiver parado.
      • restart: Indica o comportamento de restart em caso de falha do container, no caso ficou como always, o que indica que o container ficará reiniciando em caso de falha.
      • environment: são chaves e valores de variáveis de ambiente, é a forma como você envia ao container variáveis de configuração (similar ao que é feito no arquivo .properties e .ini)  vou explicar melhor abaixo.
      • ports:  é o mapeamento de portas do container para o computador, no caso da configuração  "7777:7777" significa que o container irá fazer o foward da porta 7777 (gameserver) para a porta 7777 do seu computador ou servidor, sendo assim você pode publicar seu servidor na internet.

Como configurar variáveis do contêiner

Como vimos ali em cima  a chave environment é responsável por passar configurações ao container.

No container mariadb você irá configurar a chave MYSQL_ROOT_PASSWORD que indica qual é a senha do usuário roto no banco de dados que você irá setar, vamos manter aqui como root. (sim vc vai poder conectar seu navicat no banco de dados usando essa senha do mysql)

No meu caso, eu ainda vou modificar a porta de saída do mysql para 3307, pois eu já tenho um mysql rodando em localhost na minha máquina ficando assim:

  mariadb:
    container_name: l2j-server-mariadb
    image: yobasystems/alpine-mariadb:latest
    volumes:
      - /var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    ports:
      - "3306:3307"

 

Já o contêiner l2jserver que contém o login server e o gameserver existe uma vasta gama de variáveis , por padrão essas são as variáveis definidas:

IP_ADDRESS: "127.0.0.1"
      LAN_ADDRESS: "10.0.0.0"
      LAN_SUBNET: "10.0.0.0/8"
      JAVA_XMS: "512m"
      JAVA_XMX: "2g" 
      RATE_XP: "1"
      RATE_SP: "1"
      QUEST_MULTIPLIER_XP: "1"
      QUEST_MULTIPLIER_SP: "1"
      QUEST_MULTIPLIER_REWARD: "1"
      AUTO_LEARN_SKILLS: "False"
      MAX_FREIGHT_SLOTS: "200"
      DWARF_RECIPE_LIMIT: "50"
      COMM_RECIPE_LIMIT: "50"
      CRAFTING_SPEED_MULTIPLIER: "1"
      FREE_TELEPORTING: "False"
      STARTING_ADENA: "0"
      STARTING_LEVEL: "1"
      STARTING_SP: "0"
      ALLOW_MANOR: "True"
      MAX_ONLINE_USERS: "500"
      MAX_WAREHOUSE_SLOTS_DWARF: "120"
      MAX_WAREHOUSE_SLOTS_NO_DWARF: "100"
      MAX_WAREHOUSE_SLOTS_CLAN: "200"
      PET_XP_RATE: "1"
      RATE_ADENA: "1"
      ADMIN_RIGHTS: "True"
      FORCE_GEODATA: "False"
      COORD_SYNC: "-1"
      HELLBOUND_ACCESS: "True"
      WEIGHT_LIMIT: "1"
      TVT_ENABLED: "True"
      SAVE_GM_SPAWN_ON_CUSTOM: "True"
      CUSTOM_SPAWNLIST_TABLE: "True"
      CUSTOM_NPC_DATA: "True"
      CUSTOM_TELEPORT_TABLE: "True"
      CUSTOM_NPC_BUFFER_TABLES: "True"
      CUSTOM_SKILLS_LOAD: "True"
      CUSTOM_ITEMS_LOAD: "True"
      CUSTOM_MULTISELL_LOAD: "True"
      CUSTOM_BUYLIST_LOAD: "True"
      VITALITY_SYSTEM: "True"
      ITEM_SPOIL_MULTIPLIER: "1"
      ITEM_DROP_MULTIPLIER: "1"

 

Não recomendo removê-las, apenas modificar caso seja necessário.

Essa aqui é a lista completa  de variáveis com os respectivos valores padrão e para que serve cada uma:

 
  • SERVER_IP : Seu IP público ou privado do servidor (default: "127.0.0.1")
  • JAVA_XMS : Memória inicial alocada pelo Java  (default: "512m")
  • JAVA_XMX : Memória máxima que o Java poderá alocar (default: "2g")
  • RATE_XP : Rates para ganho de  XP (default: "1")
  • RATE_SP : Rates para ganho de  SP (default: "1")
  • ADMIN_RIGHTS : Todo mundo tem permissão de admin, bom para criar o primeiro admin (default: "False")
  • FORCE_GEODATA: Força a utilização do geodata (default: "False")
  • COORD_SYNC: Utiliza o sistema de sincronização de coordenadas (default: "-1")
  • HELLBOUND_ACCESS: Permite entrar em Hellbound sem a a Quest (default: "False")
  • WEIGHT_LIMIT: Multiplica o limite de peso dos personagens (default: "1")
  • TVT_ENABLED: Habilita o evento de Team Vs Team(default: "False")
  • SAVE_GM_SPAWN_ON_CUSTOM: Salva os spawns de npc que o admin realiza (default: "False")
  • CUSTOM_SPAWNLIST_TABLE: Habilita o diretório custom de spawns (default: "False")
  • CUSTOM_NPC_DATA: Habilita dados de NPC Custom (default: "False")
  • CUSTOM_TELEPORT_TABLE:  Habilita a tabela custom de teleports (default: "False")
  • CUSTOM_NPC_BUFFER_TABLES: Habilita NPC Buffer com opção de criação de macros (schema buffer) (default: "False")
  • CUSTOM_SKILLS_LOAD: Habilita custom skills(default: "False")
  • CUSTOM_ITEMS_LOAD: Habilita custom items  (default: "False")
  • CUSTOM_MULTISELL_LOAD: Habilita  multisell data (default: "False")
  • CUSTOM_BUYLIST_LOAD: Habilita  buylist data (default: "False")
  • DATABASE_ADDRESS : IP  ou host name do servidor MariaDB (default: "mariadb")
  • DATABASE_PORT : Número da porta do servidor MariaDB (default: "3306") [no meu caso eu posso manter pois so modifiquei a porta externa de direcionamento [
  • DATABASE_USER : Usuário do banco de dados com privilégios de admin do servidor MariaDB (default: "root")
  • DATABASE_PASS : Database password for user with admin priviledges (default: "root")
  • LAN_ADDRESS : Rede externa que o cliente irá se conectar ao servidor (default: "10.0.0.0")
  • LAN_SUBNET : Subrede externa External network subnet,  usada pelo server para se comunicar com o cliente (default: "10.0.0.0/8")
  • QUEST_MULTIPLIER_XP : Multiplicador de ganho de XP por quest (default: "1")
  • QUEST_MULTIPLIER_SP : Multiplicador de ganho de SP por quest (default: "1")
  • QUEST_MULTIPLIER_REWARD : Multiplicador de ganho de Itens/Premio por quest (default: "1")
  • VITALITY_SYSTEM : Habilita  Vitality system (default: "True")
  • AUTO_LEARN_SKILLS : Aprendizado automático de skills no levelup e login (default: "False")
  • MAX_FREIGHT_SLOTS : Numero máximo de itens que o player pode adicionar ao  Freight (default: "200")
  • DWARF_RECIPE_LIMIT : Limite de recipes aprendidos pelos anões (default: "50")
  • COMM_RECIPE_LIMIT : Limite de recipes Common para todas as classes (default: "50")
  • CRAFTING_SPEED_MULTIPLIER : Delay para processo de craft para o servidor, quanto maior mais tempo demora para que o item seja craftado. (default: "1")
  • FREE_TELEPORTING : Habilita teleport free para todo mundo (default: "False")
  • STARTING_ADENA :  Total de adena que o novo personagem irá ganhar  (default: "0")
  • STARTING_LEVEL : Nível inicial do novo personagem (default: "1")
  • STARTING_SP : Quantidade de SP que o novo personagem irá ganhar (default: "0")
  • ALLOW_MANOR : Habilita  Manor System (default: "True")
  • SERVER_DEBUG: Habilita server debugging, não recomendado em servidores de produção (default: "False")
  • MAX_ONLINE_USERS:  Quantos personagens estão permitidos conectar simultâneamente no servidor  (default: "500")
  • MAX_WAREHOUSE_SLOTS_DWARF: Capacidade da wharehouse dos anões. Esse valor deve ser menor que 30 ou haverá crash no cliente . (default: "120")
  • MAX_WAREHOUSE_SLOTS_NO_DWARF: Capacidade da wharehouse das outras raças. Esse valor deve ser menor que 30 ou haverá crash no cliente (default: "100")
  • MAX_WAREHOUSE_SLOTS_CLAN: Capacidade da wharehouse dos clãs. Esse valor deve ser menor que 30 ou haverá crash no cliente (default: "200")
  • PET_XP_RATE: Multiplicador de XP para levelup dos pets (default: "1")
  • ITEM_SPOIL_MULTIPLIER : Multiplicador da quantidade de itens obtidos através do spoil quando skills como Sweeper(Spoil) for usada (default: "1")
  • ITEM_DROP_MULTIPLIER : Multiplica a quantidade de itens dropados de um MOB quando ele morre. (default: "1")

Iniciando o contêiner

Com todo seu servidor configurado é hora de por ele pra rodar!

Para iniciar os 2 containers você irá digitar o comando dentro da pasta "l2j-server-docker"

cd C:\Dev\study\l2j-server-docker

docker-compose up -d

O  atributo -d significa que o serviço irá rodar como um daemon, ou seja irá liberar o console após a execução mas continuará rodando em background.

Nesse momento as imagens e o código fonte serão baixados, você pode só assistir , todo o trabalho sujo está sendo feito pelas imagens docker.

image.png

 

Lembre-se de permitir o acesso do docker à sua interface de rede, caso contrário você terá que fazer a configuração manual do seu firewall

image.png

 

Após a finalização  o status dos nossos 2 containers deve ser "done"

 

image.png

Você pode verificar se os containers estão rodando com o comando

docker-compose ps

image.png

Lembra do ícone da baleia no cantinho da barra de ícones, você também vai poder inspecionar seus novos containers por lá:

image.png

 

Com um cliente H5 você já será capaz de logar no seu novo servidor, todo esse processo leva menos de 10 minutos quando o docker já está instalado, e menos de 10 segundos quando você já tem o cache das imagens docker.

Essa imagem Docker do l2jserver utiliza o linux Alpine na versão 3.12.0, é uma versão linux que sua imagem tem apenas 124MB com apenas o essencial, muito otimizada para a execução, o que trará o máximo de performance para seu servidor.

 

Depurando e inspecionando seus containers

Um dos processos mais importantes  da administração de um servidor de lineage 2 é a a depuração e inspeção de logs, com container o processo pode ser um pouco diferente do habitual "tela de console"  ou abrir um arquivo .log.

Você terá que olhar isso através de comandos ou pelo painel do docker que mostrei ali em cima.

Por exemplo, para olhar as últimas 10 linhas e continuar acompanhando o log nós vamos usar o comando docker logs seguido do nome do container o parâmetro --tail 10  e o atributo -f (follow) :

docker logs l2j-server-docker --tail 10 -f

image.png

Aparentemente tudo okay no nosso servidor 🙂 para sair do modo "follow" do log vc pode utilizar o comando ctrl+c.

A outra opção é direto pela interface do docker:

image.png

Você ainda pode ligar e desligar o servidor com os comandos stop e start do docker-compose

docker-compose stop

docker-compose start

Lembrando que o comando pelo docker-compose irá parar tanto o l2jserver com o mariadb.

Para parar individualmente o processo mais simples é usando o painel (no windows) image.png

Nessa mesma interface você também terá acesso ao console (linux) do container no botão que fica ao lado do STOP o CLI

image.png

Okay, mas se eu quiser modificar alguma coisa?

Como eu falei,  o docker é um container de execução, o ideal é você já deixar tudo pronto e utilizá-lo apenas para rodar, garantindo à ele o acesso ao melhor do sistema operacional e compatibilidade, permitindo que você rode o serviço dentro de uma plataforma estável livre de bugs sistêmicos.

Todo esse benefício  torna a customização  um paço um pouco mais custoso.

 

Existe 2 abordagens para você customizar os arquivos dentro do servidor:

A primeira abordagem é criando é a sugerida pelos desenvolvedores da l2jserver, que eu particularmente não usaria, mas vou passar aqui pra vocês com algumas modificações, o comando que está no readme.md , vc verá ele copiando a pasta inteira do container, isso irá incluir arquivos do sistema operacional. vou modificar o "./" para "/opt/l2j" que é a pasta onde estão os arquivos do servidor.

Essa abordagem consiste em você parar o container e copiar arquivos para dentro do container através do comando docker cp, que significa copy&paste.

Para isso vamos parar o nosso container do l2jserver

docker stop l2j-server-docker

Vamos copiar os arquivos do servidor para nossa pasta "custom" ,  lembrando que esse processo pode demorar, então você pode modificar os caminhos a serem copiados, inclusive copiando apenas 1 arquivo específico, basta modificar o path para o caminho do arquivo que quer modificar.

docker cp l2j-server-docker:/opt/l2j/  ./custom/.

Esse comando irá copiar todos os arquivos dentro do container para sua pasta "custom", então você poderá modificar e então fazer o caminho indicado pelos desenvolvedores.

Haverá dentro da pasta custom, uma pasta server e dentro dela haverá os arquivos para você editar na estrutura já conhecida por muitos aqui:

image.png

Após fazer as edições  copie novamente os arquivos para dentro do container fazendo o caminho inverso:

docker cp ./custom/. l2j-server-docker:/opt/l2j/.

depois basta iniciar o servidor novamente:

docker start l2j-server-docker

Lembrando que se você não quer perder seus arquivos editados não use mais o comando down, e sim o stop à partir de agora, o comando  down irá remover todos os arquivos e fazer novamente o build do servidor.

docker-compose stop

A outra abordagem é você modificando o o arquivo Dockerfile mudando os repositório git para repositórios seus, cópias modificadas do l2jserver.

O Arquivo dockerfile é um arquivo bem pequeno com alguns comandos Linux e instruções de configuração do docker, uma delas é o método RUN que contém todo o processo de instalação do ambiente l2j, do build do source code ao start.

 

RUN apk update \ 
    && apk --no-cache add maven mariadb-client unzip git \
    && mkdir -p /opt/l2j/server && mkdir -p /opt/l2j/target && cd /opt/l2j/target/ \
    && git clone --branch master --single-branch https://[email protected]/l2jserver/l2j-server-cli.git cli \
    && git clone --branch master --single-branch https://[email protected]/l2jserver/l2j-server-login.git login \
    && git clone --branch develop --single-branch https://[email protected]/l2jserver/l2j-server-game.git game \
    && git clone --branch develop --single-branch https://[email protected]/l2jserver/l2j-server-datapack.git datapack \
    && cd /opt/l2j/target/cli && mvn install \
    && cd /opt/l2j/target/login && mvn install \
    && cd /opt/l2j/target/game && mvn install \
    && cd /opt/l2j/target/datapack && mvn install \
    && unzip /opt/l2j/target/cli/target/*.zip -d /opt/l2j/server/cli \
    && unzip /opt/l2j/target/login/target/*.zip -d /opt/l2j/server/login \
    && unzip /opt/l2j/target/game/target/*.zip -d /opt/l2j/server/game \
    && unzip /opt/l2j/target/datapack/target/*.zip -d /opt/l2j/server/game \
    && rm -rf /opt/l2j/target/ && apk del maven git \
    && chmod +x /opt/l2j/server/cli/*.sh /opt/l2j/server/game/*.sh /opt/l2j/server/login/*.sh /entry-point.sh

nas linhas 17,18,19 e 20 você encontrará comandos de git clone, esses comandos são responsáveis por baixar os códigos fonte  que posteriormente serão compilados pelas linhas abaixo.

image.png

Se você alterar os repositórios para o seu "fork" do l2j o sistema deverá funcionar normalmente e vc não precisará aplicar as configurações diretamente no arquivo, fazendo do git sua pasta de edição do servidor:

Em muitos casos apenas o repositório "datapack" será modificado, deixe o modo DEV aflorar e comece um repositório git com o nome do seu servidor.

 

Depois que modificar o seu Docker file é só executar o Down e up que o seu servidor já estará sendo executado à partir do seu repositório.

Se você tiver outra abordagem poste ai nos comentários.

 

Na minha opinião, a maior vantagem de ser ter um servidor desses em docker é que você modifica e sobre alterações de forma muito rápido, containers já é o futuro da programação e desenvolvimento e é uma ótima tecnologia para se aprender, profissionais que sabem trabalhar com containers realmente estão à frente dos demais no mercado de trabalho.

    

E é isso papangus, uma forma simples de iniciar o servidor, sem compilações complicadas, sem mexer com códigos longos e complexos, apenas alguns comandos básicos o poderoso Docker.

  • Like 5
  • I love it 2
  • Thanks 1

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link to post
Share on other sites
  • Grundor changed the title to Como levantar um servidor l2jserver em 10 minutos - Uma abordagem de 2020.
  • Grundor pinned and featured this topic
  • Grundor changed the title to Colocando um servidor l2jserver online em 10 minutos - Uma abordagem de 2020.

Este tutorial tambem serve para l2jserver interlude ?

  • Like 1

Ola prazer , estou aqui para formar amizades e aprender tudo sobre lineage 2

Link to post
Share on other sites
  • L2JBr ADM
12 horas atrás, New Games disse:

Este tutorial tambem serve para l2jserver interlude ?

Sim, mas você teria que modificar o arquivo Dockerfile para fazer checkout no branch do interlude:

 

# Copyright 2004-2020 L2J Server
# L2J Server is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# L2J Server is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

FROM openjdk:14-alpine

LABEL maintainer="L2JServer" \
      version="2.6.3" \
      website="l2jserver.com"

COPY entry-point.sh /entry-point.sh

RUN apk update \ 
    && apk --no-cache add maven mariadb-client unzip git \
    && mkdir -p /opt/l2j/server && mkdir -p /opt/l2j/target && cd /opt/l2j/target/ \
    && git clone --branch master --single-branch https://[email protected]/l2jserver/l2j-server-cli.git cli \
    && git clone --branch master --single-branch https://[email protected]/l2jserver/l2j-server-login.git login \
    && git clone --branch Interlude --single-branch https://[email protected]/l2jserver/l2j-server-game.git game \
    && git clone --branch Interlude --single-branch https://[email protected]/l2jserver/l2j-server-datapack.git datapack \
    && cd /opt/l2j/target/cli && mvn install \
    && cd /opt/l2j/target/login && mvn install \
    && cd /opt/l2j/target/game && mvn install \
    && cd /opt/l2j/target/datapack && mvn install \
    && unzip /opt/l2j/target/cli/target/*.zip -d /opt/l2j/server/cli \
    && unzip /opt/l2j/target/login/target/*.zip -d /opt/l2j/server/login \
    && unzip /opt/l2j/target/game/target/*.zip -d /opt/l2j/server/game \
    && unzip /opt/l2j/target/datapack/target/*.zip -d /opt/l2j/server/game \
    && rm -rf /opt/l2j/target/ && apk del maven git \
    && chmod +x /opt/l2j/server/cli/*.sh /opt/l2j/server/game/*.sh /opt/l2j/server/login/*.sh /entry-point.sh

WORKDIR /opt/l2j/server

EXPOSE 7777 2106

ENTRYPOINT [ "/entry-point.sh" ]

 

As linhas modificadas foram a do datapack e do gameserver.

 

  && git clone --branch Interlude --single-branch https://[email protected]/l2jserver/l2j-server-game.git game \
    && git clone --branch Interlude --single-branch https://[email protected]/l2jserver/l2j-server-datapack.git datapack \

 

 

Edit, talvez tenha que fazer modificações no entry-point devido alguma alteração que não esteja okay.

 

  • Like 1

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link to post
Share on other sites
  • L2JBr ADM

Para quem quiser se aprofundar um pouco mais nessa abordagem, 
 

Repositório com os arquivos docker
 

https://gitlab.com/Yeiij/l2j_docker_linux

 

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link to post
Share on other sites

Achei interessante seu tutorial @Grundormas tenho uma pergunta

Os métodos atuais suprem as necessidades de um servidor privado

Por que usaríamos essa metodologia? 

Em breve novo servidor Classic PvP

www.l2prime.co

Private Classic 150x

Link to post
Share on other sites
  • L2JBr ADM
On 11/21/2020 at 6:55 PM, Lire said:

Achei interessante seu tutorial @Grundormas tenho uma pergunta

Os métodos atuais suprem as necessidades de um servidor privado

Por que usaríamos essa metodologia? 

Imagine que isso aqui é um assunto introdutório, o docker é mais para despertar à curiosidade da comunidade sobre essa tecnologia que já é usada por várias empresas, imagine que pra fazer o deploy de um servidor a única coisa que vc precisa instalar é o docker, e nada mais.

Estamos discutindo num grupo privado do l2jserver (aonde estou de consultor) com a possibilidade de se escalar horizontalmente (significa ter mais serviços/servidores rodando uma aplicação que entregam um  conteúdo elástico, imagine que vc consegue ligar um servidor com muito pouco recurso e ele vai se esticando para caber mais players, assim vc não precisa de um servidor de 16gb de ran com 20 players online.

O docker é a porta de entrada pra isso. 

O docker em sí, no seu pc, é ótimo para o desenvolvimento, vc consegue fazer o deploy muito rápido de novos assembles, em produção, vc tem a estabilidade do serviço, se um container falha vc consegue em menos de 1 segundo fazer com que outro assuma (mais ai é algo mais avançado).




Bom, se tudo der errado vc ganhou expertise em containers que é algo que o mercado de trabalho precisa bastante hahaha.

  • I love it 1

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link to post
Share on other sites
9 horas atrás, Grundor disse:

Estamos discutindo num grupo privado do l2jserver (aonde estou de consultor) com a possibilidade de se escalar horizontalmente (significa ter mais serviços/servidores rodando uma aplicação que entregam um  conteúdo elástico, imagine que vc consegue ligar um servidor com muito pouco recurso e ele vai se esticando para caber mais players, assim vc não precisa de um servidor de 16gb de ran com 20 players online.
 

Sabe de alguma empresa que trabalhe dessa forma? Sem que tenha que desligar máquina reiniciar aplicações?

Cerca de 90% do cenário hoje em dia faz uso de emulação de uma VM com SO que convenhamos que é literalmente uma merda compartilhar hardware entre os usuários onde nunca é possível equilibrar o uso.

Única que eu sei que você pega uma máquina e consegue escalar os recursos dela conforme você necessita com exceção do Disco se colocar permanente é o Google Cloud, é acessível em termos de $ o custo é cobrado por USO/Hora, Conhece alguma outra?

 

Pessoal que abre servidor Hoje em dia deveria dar uma olhada no Google Cloud é melhor do que esses VPS compartilhado com sabe-se lá quantos user =/

  • Like 1
Link to post
Share on other sites

queria deixar aqui minha contribuição, talvez nao seja muita coisa. Depois de tanto tempo sugando informações dentro do forum sem deixar nada de significativo. resolvi aprender a programar de verdade. Minha primeira experiencia com algo perto de programação foi com lineage. mas vale salientar que os DEVs de verdade aqui dentro da comunidade ao meu ver, sao os que programam as REVs. Criam conteudo, nao apenas editam.

Eu me deparei com essa tecnologia pela primeira vez usando a HEROKU.COM e posso dizer que foi pra mim revolucionario. Certo que eu nao mexo mais com LINEAGE, hoje sou desenvolvedor de BOTs para discord.

 

o que mais me chamou a atenção é a facilidade de criar, editar versões do seu projeto em produção. trabalhar em equipe tambem é muito bom quando se usa algo assim, pois cada um pode fazer seus testes em clusters isolados. 

 

hoje tenho um projeto escrito em python, atualmente nao programo mais em plataformas como heroku. pois estou usando linux.

mas segue ai o link do projeto
Ashley (github.com)

uma das maiores vantagens da heroku, enquanto la eu trabalhava era usar o papertrail nativamente, alem de usar o mongodb (pela mongoatlas) e ter acesso ao painel de pront (remotamente) do meu celular onde quer que eu estivesse, alais coisa que sinto falta ate hoje, desde que miguei para linux
image.thumb.png.55bb5a07424395376d425b74d72e3492.png
 

fazendo uma menção ao @Bian eu tambem ate hoje nao encontrei uma empresa que fizesse isso, no maximo aquelas em que usam o github para fazer auto deploy, porem mesmo assim reiniciando a aplicação toda vez que o mesmo acontece.

vou ficar de olho nesse post, acredito que irei sugar mais conhecimento daqui do que em toda a minha vida poderia retornar. @Grundor saudades de voce TIO, faz tempo que a gente nao se fala. so queria agradescer por tudo, pelo primeiro empurrão a essa vida de programador. devo muito a essa comunidade e nunca poderei pagar por tal façanha.

  • Like 1

Te Ajudei? Curte ai para me ajudar!
Ass.: Daniel Amaral

Filizard Project Is Coming Soon, Acessem a Fanpage: Filizard Project

Link to post
Share on other sites
  • L2JBr ADM
18 hours ago, Bian said:

Sabe de alguma empresa que trabalhe dessa forma? Sem que tenha que desligar máquina reiniciar aplicações?

Poucas empresas trabalham com Docker em produção de forma direta, de certa forma, o Container por sí só já é suficiente  para a aplicação inteira funcionar, vc não precisa lidar com embaraços do sistema operacional. 


Mas em produção geralmente é preferível o Kubernetes que é um sistema que faz toda a orquestração dos containers.

18 hours ago, Bian said:

literalmente uma merda compartilhar hardware entre os usuários onde nunca é possível equilibrar o uso.

Com containers isso não é problema, ele foi desenhado para esse tipo de coisa, porém a aplicação precisa estar adaptada para tirar vantagem dessa arquitetura.

Neo Kobo: Container and Virtual Machine Differences

18 hours ago, Bian said:

Única que eu sei que você pega uma máquina e consegue escalar os recursos dela conforme você necessita com exceção do Disco se colocar permanente é o Google Cloud, é acessível em termos de $ o custo é cobrado por USO/Hora, Conhece alguma outra?

Processador e memória ran aumentando é uma escala vertical, com o docker é ideal é vc lidar com uma escala horizontal, aonde novos containers entram na jogada para suprir uma demanda de operação.

Mas existem alguns clouds no mercado como azure e aws, cada um com vantagens e desvantagens distintas, eu listei aqui algumas hospedagem free para deploy de pequenos containers

On 10/8/2020 at 3:55 PM, Grundor said:

Você pode ainda fazer deploy free de containers em alguns provedores :

entre outros 

O education pack do github: https://education.github.com/pack tem uma lista ainda maior 

Vc ainda pode montar seu próprio com uma plataforma chamada OpenStack, que permite que vc crie seu próprio cloud.

Hj em dia as aplicações não usam muito disco, já que é o ativo mais caro do mercado, mas sim object storages, in-memory, e bancos de dados não relacionais para armazenar seus binários.

 

18 hours ago, Bian said:

Pessoal que abre servidor Hoje em dia deveria dar uma olhada no Google Cloud é melhor do que esses VPS compartilhado com sabe-se lá quantos user =/

Isso é verdade em partes, ele começa a ficar caro quando vc precisa de um suporte um pouco acima do básico, os recurso também vão ficando caro principalmente por serem indexados via dolar.

 

 

 

2 hours ago, Denky said:

queria deixar aqui minha contribuição, talvez nao seja muita coisa. Depois de tanto tempo sugando informações dentro do forum sem deixar nada de significativo. resolvi aprender a programar de verdade. Minha primeira experiencia com algo perto de programação foi com lineage. mas vale salientar que os DEVs de verdade aqui dentro da comunidade ao meu ver, sao os que programam as REVs. Criam conteudo, nao apenas editam.

Eu me deparei com essa tecnologia pela primeira vez usando a HEROKU.COM e posso dizer que foi pra mim revolucionario. Certo que eu nao mexo mais com LINEAGE, hoje sou desenvolvedor de BOTs para discord.

@Denky quanto tempo champs! muito bom vê-lo por aqui.

Muito interessante seu relato, muita gente começou assim, eu também iniciei na programação por diversão, não lineage2 mas foi o lineage2 e a l2jbrasil que maturou minhas habilidades.

 

2 hours ago, Denky said:

hoje tenho um projeto escrito em python, atualmente nao programo mais em plataformas como heroku. pois estou usando linux.

Acho que esse projeto aqui pode ser de seu interesse: https://bitbucket.org/l2py/

Os caras realmente já estão em 2032 hehehehe.

 

 

2 hours ago, Denky said:

vou ficar de olho nesse post, acredito que irei sugar mais conhecimento daqui do que em toda a minha vida poderia retornar. @Grundor saudades de voce TIO, faz tempo que a gente nao se fala. so queria agradescer por tudo, pelo primeiro empurrão a essa vida de programador. devo muito a essa comunidade e nunca poderei pagar por tal façanha.

Aqui vai ser um tópico para centralizar a informação de docker para l2j, certamente vamos ouvir mais sobre isso no futuro.

Que bacana que eu tive alguma influência na suas escolhas e que está contente com isso, obrigado por compartilhar.

 

  • Like 1

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link to post
Share on other sites
×
×
  • Create New...