Imagem de destaque

A ideia

Já pensou em rodar o seu servidor no Google Cloud ou até mesmo em outro Cloud tipo AWS? pode parecer difícil no começo, mas é simples, o que dificulta mesmo é a quantidade de informações espalhadas e serviços que a Cloud oferece, porém no final o princípio é praticamente o mesmo, uma VM rodando a sua aplicação (claro que não se resume a isso).

Nesse caso vamos apenas utilizar o Computer Engine (Seria equivalente a um EC2 da AWS), configurar a Rede e o Firewall, assim podendo expor o nosso servidor para os jogadores.

Requisitos para replicar

Caso você queria ver a solução feita pela Google para implementar o servidor de Minecraft veja aqui, além de ter outro exemplos de aplicação em cloud, o que pretendo é simplificar a solução deles, pois pretendo utilizar apenas entre meus amigos.

Antes de começar

Gostaria de falar uma coisa bem importante, preço, caso você não for utilizar o nível gratuito, fique atento ao custo de TUDO, a Google fornece ferramentas para alerta-lo sobre o orçamento e afins, você pode utilizar a calculadora de preços que é bem intuitivo se comparado com algumas outras do mercado, também tem a tabela de preços.

Ele utiliza seu cartão de crédito para fazer a cobrança, então fique precavido, caso faça alguma besteira…

Caso você está utilizando o nível gratuito ou a promoção de 1 ano, fique tranquilo!

Bora começar!

Primeiro de tudo, no GCP (Google Cloud Platform) você deverá criar um projeto, provavelmente caso você não tenha nenhum eles devem pedir para você criar um, caso você já tenha, mas queria criar outro, vá no canto superior ao lado da logo da GCP e clique no nome do teu projeto atual:

GCP Projetos

Depois clique em Novo projeto:

GCP Novo projeto

Vou criar um projeto chamado meumine:

GCP Meu Mine

Lembre-se que a Google pode trocar a posição dos menus conforme o tempo.

Criando nossa VM com Computer Engine

Após ter criado o projeto, vamos criar uma instância pelo Computer Engine, você pode utilizar o campo de pesquisa e procurar por ele, ou ir no menu lateral no grupo Computação vai está lá Computer Engine:

GCP Compute Engine

Indo para Computer Engine escolha Instâncias de VM, assim caso você não tenha nenhuma instância no seu projeto irá aparecer algo do tipo:

GCP Crie VM

Sinta-se livre de escolher entre Criar ou Usar o inicio rápido (que na verdade é um tutorial sobre as instância). Irei escolher Criar, simples e objetivo.

Após isso você deve ver algo do tipo:

GCP VM

MUITA INFORMAÇÃO!? Relaxa, é bem simples.

Na esquerda ele te da opções de criar uma nova VM, importa VM, criar uma VM com base de uma imagem de alguma outra VM que já existe e utilizar o Marketplace (que tem muita coisa boa e pronta, exemplo VM pronta para rodar Wordpress, Node e etc), vamos permanecer na opção padrão.

GCP Preço

Na direita temos os valores da VM, que? isso mesmo, caso você não esteja acostuma com cloud, diferente de uma hospedagem compartilha ou dedicada (ex.: HostGator) que tem pacotes com valores fixos, em Cloud isso é diferente, você paga pelo que usar, exemplo é nessa imagem numa VM com uma vCPU e 3,75 GB de RAM, irei pagar $0,034/hora, essa é outra diferença de uma Cloud, a sua cobrança por hora.

Se eu quiser alterar a configuração?

Ai que tá! podemos usar os pacotes pré-definidos pela Google por exemplo o n1-standard, sinta-se livre de escolher a configuração para sua VM.

UM AVISO!!! caso você queria usar o nível gratuito (sem a promoção de um ano da Google), veja se a região da sua maquina está como us-central1 (lowa) e tipo de maquina f1-micro, mas lembre-se que sempre é bom verificar no site qual é a região e tipo de maquina que continua sendo gratuito.

Quer uma maquina personalizada? clique em Tipo de maquina e vai em Personalizado, ai o resto é com você amigão!

Disco e sistema

GCP Disco

Nessa etapa vária, o Debian sem dúvidas é a melhor opção pela sua estabilidade, porém, tenho preferencia ao Ubuntu, mas sinta-se livre de escolher outro sistema do seu gosto.

GCP Escolha sua distro

Clique em Alterar, altere o Sistema operacional para qual você se sentir mais confortável, eu irei escolher o Ubuntu e sua versão 18.04 LTS, sempre se foque nas versões LTS (Long-Term Support), pois são mais estáveis e terão atualizações de seguranças por um período entre 4 anos.

No final será um Ubuntu 18.04 LTS com 10GB de HD.

GCP Firewall

Libere o acesso HTTP e HTTPS para adiantar nosso processo.

Veja se você alterou a nome da instância para identifica-la melhor.

Modificando a Rede

Configurar rede

Clique em Gerenciamento, segurança, discos, rede, locatário único.

Irá aparecer um menu enorme, bom, clique em Redes, em Tags de Rede adicione alguma coisa por exemplo eu coloquei meu-server, mas coloque o que quiser.

Tags de Rede

Logo após, vá em Interface da Rede, e agora iremos atribuir um IP estático para nosso servidor… e porque? Imagine que você e seus amigos queiram jogar e toda vez que iniciar o servidor o IP irá mudar, fica chato ter que pegar o IP toda vez que ele muda não é? Então em IP Externo escolha Criar endereço de IP e coloque um nome para ele.

Criando IP

O nome é apenas para identificar, ele não é seu IP!

Já o Nível de serviço da rede ele é um diferencial para velocidade (ex.: ping), mas isso pesa no preço final também, o Premium utiliza a infra da Google para entregar uma conexão de alta performance entre os servidores e os clientes, o Padrão utiliza a infra padrão que é a basicamente a internet que utilizamos para nos conectamos.

Clique em Reservar.

Meu ip

Esse será meu novo IP estático 35.209.94.89, após isso clique em Concluído.

Verifique se está tudo certo!

Agora pressione Criar.

Configurar Firewall

Vamos criar uma regra no Firewall, é o mesmo esquema do Compute Engine, pode procurar Firewall na busca do GCP ou ir no menu e procurar por Rede VPC e no sub-menu Regras de Firewall.

Pressione Criar regra de Firewall.

Devemos liberar a porta para os clientes do Minecraft, então:

Porta padrão

Habilite o TCP e libere a porta 25565 (no caso é a porta padrão do Minecraft), caso queira usar outra porta sinta-se livre, porém lembre-se de alterar no servidor o port no server.properties.

Conectar na VM

Regra criada! Bora entrar na nossa VM, mas antes, eu recomendo você utilizar o SSH via terminal, a Google tem uma página só para isso, basicamente é rodar ssh-keygen, acessa a configurações da sua instância (Obs.: ela tem que está desligada para efetuar alterações), e inserir sua chave pública de SSH nela.

Porém… para não deixar maior ainda, vamos utilizar o terminal via browser da Google, basta clicar em SSH:

SSH

Caso queira usar um outro cliente SSH, use o seu IP externo para acessar a maquina.

Browser

Pronto! estamos conectados na VM.

Hora de instalar!

Você pode utilizar o local aonde seu usuário se encontra e baixar o servidor de Minecraft e usar ou criar uma pasta em algum outro local e criar um ponto de montagem.

Vamos ficar aonde estamos mesmo e apenas criar uma pasta chamada minecraft e logo após entrar nela:

mkdir minecraft && cd minecraft

Agora iremos atualizar o nosso Ubuntu:

sudo apt update && sudo apt upgrade

Perfeito!

A VM vem limpa então vamos instalar o que precisamos… e o que precisamos?

Vamos rodar esse comando:

sudo apt install openjdk-8-jre-headless screen

Escolha sua arma

Você decide nesse momento qual o servidor utilizar, as opções mais comuns é utilizar o Minecraft Server (Oficial da Mojang) ou CraftBukkit (Que possibilita utilizar plugins), caso queira utilizar mods, recomendo utilizar o Forge, mas com mods é um pouco mais complexo comparado com esse, mas nada impossível.

Lembre-se estamos em uma VM e usamos tudo via terminal, então baixar no teu computador e arrastar não vai dar em nada, iremos utilizar o comando wget para baixar, então tenha certeza que o link que vai utilizar seja do arquivo .jar do servidor.

Os comandos estão com os links do Minecraft 1.15.2, então caso queira outra versão é só substituir pela versão desejada.

Você quer utilizar o Minecraft Server?

wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar

Você quer utilizar o CraftBukkit?

wget https://cdn.getbukkit.org/craftbukkit/craftbukkit-1.15.2.jar

Iniciar o servidor

Um aviso antes, tanto faz qual servidor que você escolheu, a primeira vez ele só irá gerar um arquivo EULA.txt para você aceitar os tempos.

Os parâmetros Xms e Xmx podem ser alterados como desejar.

Caso esteja usando o Minecraft Server:

java -Xms1G -Xmx3G -jar server.jar nogui

Nota: o Minecraft Server precisa o nogui para funcionar

Caso esteja usando o CraftBukkit:

java -Xms1G -Xmx3G craftbukkit-1.15.2.jar

Depois disso deve aparecer algo do tipo:

[10:47:24] [main/ERROR]: Failed to load properties from file: server.properties
[10:47:25] [main/WARN]: Failed to load eula.txt
[10:47:25] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Se estiver usando o CraftBukkit, ele pode mostrar um pouco diferente e até falar que está out-of-date, mas relaxa.

Agora você deve aceitar os termos dentro do eula.txt:

nano eula.txt

Bote como true:

eula=true

Como sair do editor de texto? Use Ctrl+O e dê enter para salvar o arquivo, depois Ctrl+X para sair do editor.

Agora vamos editar o server.properties, o que devemos alterar nele?

Caso queria botar uma porta personalizada só modificar o query.port, mas lembre-se que deve alterar a regra de firewall para permitir acesso a essa porta.

O outros atributos é melhor checar no fórum do Minecraft, mas alguns já dizem de cara o que fazem, por exemplo level-name.

Para editar o server.properties:

nano server.properties

Edite os atributos que eu falei lá em cima… e faça o mesmo procedimento que você fez com o eula.txt.

BORA RODAR! rode o servidor do minecraft novamente, só que dessa vez caso tenha feito tudo certo, ele vai carregar e gerar o mapa (isso demora um tempo).

Como jogar com teus amigos? Só pegar o IP externo da sua VM + a porta do seu servidor de Minecraft

IP Externo

Exemplo: 35.230.78.42:25565

Rodar em background

Você já tem um servidor de minecraft no Google Cloud, porém tem um problema, o momento que você sair do terminal o servidor vai fechar e também se você quiser fazer outra coisa na VM não vai da, por que? O servidor vai está em primeiro plano então vai ocupar o teu terminal, mas tem uma solução para isso.

Lembra que falei do Screen? Ele serve exatamente pra isso, vamos usar ele para deixar o servidor em background.

Tem duas formas, uma é utilizar Ctrl+A e depois pressionar d que ele faz um detach no servidor deixando ele em background, a segunda forma é

screen -S mine java -Xms1G -Xmx3G -d64 -jar server.jar nogui

O que está acontecendo nessa linha?

screen -S <nome-do-seu-processo> <comando-para-ficar-em-background>

Quero voltar pro servidor para fazer umas alterações, o que faço?

screen -r mine

Basicamente:

screen -r <nome-do-seu-processo>

Automatizar a VM

Com uma leve preguiça de ter que entrar na VM e subir o servidor? Só rode um script!

Com a VM desligada, pressione em cima do nome dela, nisso você vai entrar na página de Detalhes da instância de VM, clique em Editar.

Procure por Metadados personalizados e nele adicione na Chave startup-script e no seu Valor:

#!/bin/bash
sudo screen -d -m -S <nome-do-processo> <comando-do-servidor>

Então quando você ligar a instância o servidor irá subir o Minecraft automaticamente.

E para desligar adicione na Chave shutdown-script e no Valor:

#!/bin/bash
sudo screen -r <nome-do-processo> -X stuff '/stop\n'

Deve ficar algo próximo assim: Metadados


Muito obrigado!

Foi um texto beeeem longo, então se tiver algo para acrescentar ou até mesmo corrigir, fique à vontade em usar a seção de comentários.


Referência