Como executar um servidor Minecraft como um serviço systemd em um VPS Linux

Um serviço systemd executa o seu servidor Minecraft em segundo plano como um serviço gerido no Linux. Isso significa que pode iniciar, parar, reiniciar, verificar logs e ativá-lo na inicialização com systemctl em vez de deixar o servidor a correr numa janela SSH.

Este guia é para um VPS Linux onde já tem acesso SSH e um ficheiro jar do servidor Minecraft. Se ainda não instalou o Java ou descarregou um ficheiro jar do servidor Minecraft, faça isso primeiro e depois volte a este guia.

Nos exemplos abaixo, a pasta do servidor Minecraft é /home/minecraft/server e o ficheiro jar é chamado server.jar. Altere esses caminhos se o seu servidor usar uma pasta ou nome de jar diferente.

  1. Crie um utilizador Linux dedicado para o servidor Minecraft. Executar o servidor como seu próprio utilizador é mais seguro do que executá-lo como root.
    sudo useradd -m -r -s /bin/bash minecraft
    sudo mkdir -p /home/minecraft/server
    sudo chown -R minecraft:minecraft /home/minecraft/server
  2. Carregue ou descarregue o seu ficheiro jar do servidor Minecraft em /home/minecraft/server. A pasta deve conter o jar e, após a primeira execução manual, ficheiros como eula.txt, server.properties, logs e a pasta do mundo.

    Terminal Linux mostrando o conteúdo exemplo da pasta do servidor Minecraft

  3. Aceite o EULA do Minecraft depois de o ler. O Minecraft não iniciará corretamente até que eula.txt contenha eula=true.
    sudo -u minecraft nano /home/minecraft/server/eula.txt
  4. Crie um script de inicialização. Isso mantém o comando Java num só lugar, para que o serviço systemd possa executar o mesmo comando sempre.
    sudo nano /home/minecraft/server/start.sh

    Use um comando como este, ajustando a RAM e o nome do jar para o seu servidor:

    #!/bin/bash
    cd /home/minecraft/server
    exec java -Xms2G -Xmx4G -jar server.jar nogui

    -Xms é a alocação inicial de RAM. -Xmx é a alocação máxima de RAM. Não defina -Xmx para toda a memória do VPS; deixe RAM para o Linux, overhead do Java, SSH, backups e outros serviços.

    Terminal Linux mostrando um script start.sh do Minecraft

  5. Torne o script de inicialização executável e de propriedade do utilizador Minecraft.
    sudo chmod +x /home/minecraft/server/start.sh
    sudo chown minecraft:minecraft /home/minecraft/server/start.sh
  6. Teste o script de inicialização manualmente antes de criar o serviço. Pare-o com stop a partir do console do Minecraft ou pressione Ctrl+C após confirmar que ele inicia.
    sudo -u minecraft /home/minecraft/server/start.sh

    Se este teste manual falhar, corrija o erro antes de continuar. Um serviço systemd não corrigirá um comando Java quebrado, jar ausente, caminho errado ou EULA não aceito.

  7. Crie o ficheiro de serviço systemd.
    sudo nano /etc/systemd/system/minecraft.service
    [Unit]
    Description=Minecraft Server
    After=network.target
    
    [Service]
    User=minecraft
    WorkingDirectory=/home/minecraft/server
    ExecStart=/home/minecraft/server/start.sh
    Restart=on-failure
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target

    User indica ao Linux qual conta executa o servidor. WorkingDirectory é a pasta do Minecraft. ExecStart é o script que o systemd executa. Restart=on-failure reinicia o serviço se ele falhar.

    Terminal Linux mostrando um ficheiro de serviço systemd do Minecraft

  8. Recarregue o systemd para que ele veja o novo ficheiro de serviço.
    sudo systemctl daemon-reload
  9. Inicie o serviço Minecraft e verifique o seu estado.
    sudo systemctl start minecraft
    sudo systemctl status minecraft --no-pager

    Terminal Linux mostrando o status do systemctl para um serviço Minecraft

  10. Ative o serviço na inicialização quando estiver satisfeito que ele inicia corretamente.
    sudo systemctl enable minecraft
  11. Abra a porta do Minecraft no seu firewall se usar um. A porta padrão da Java Edition é 25565 TCP.
    sudo ufw allow 25565/tcp

    No AlmaLinux, Rocky Linux, Oracle Linux ou CentOS com firewalld, use:

    sudo firewall-cmd --permanent --add-port=25565/tcp
    sudo firewall-cmd --reload

 

Comandos úteis do serviço

ComandoO que faz
sudo systemctl start minecraftInicia o serviço Minecraft.
sudo systemctl stop minecraftPara o serviço Minecraft.
sudo systemctl restart minecraftReinicia o serviço Minecraft.
sudo systemctl status minecraft --no-pagerMostra se o serviço está em execução ou falhou.
sudo journalctl -u minecraft -fAcompanha o log ao vivo do serviço.
sudo systemctl disable minecraftImpede que o serviço inicie automaticamente na inicialização.

 

Resolução de problemas

ProblemaO que verificar
Serviço falha imediatamenteVerifique o nome do ficheiro jar, caminho ExecStart, instalação do Java e eula.txt.
Jogadores não conseguem conectarVerifique se o servidor está em execução, se a porta 25565 está aberta e se server.properties tem a porta correta.
Servidor fica sem memóriaReduza -Xmx, diminua a distância de visão, remova mods pesados ou atualize a RAM.
Alterações não estão a ser aplicadasReinicie o serviço após editar server.properties ou substituir o jar.

Faça um backup antes de substituir o jar, mudar mundos, editar ficheiros de configuração importantes ou atualizar um servidor modificado.

  • 0 Utilizadores acharam útil
Esta resposta foi útil?

Artigos Relacionados

Como conectar-se a um VPS Linux com SSH

SSH é a forma normal de gerir um VPS Linux. Ele fornece um terminal no servidor para que possa...

Como atualizar pacotes em um VPS Linux

Manter os pacotes atualizados ajuda a corrigir problemas de segurança e mantém as ferramentas do...

Como criar um utilizador sudo num VPS Linux

Um utilizador sudo permite-lhe gerir um VPS Linux sem ter de iniciar sessão como root para cada...

Como proteger o SSH num VPS Linux

O SSH é a principal forma de gerir um VPS Linux, por isso deve ser protegido antes de o servidor...

Como verificar o uso de disco em um VPS Linux

Problemas de uso de disco podem impedir que atualizações, backups, logs, bases de dados e...