Iniciar o servidor Minecraft automaticamente: serviço systemd e cronjob
Depois de um reinício do servidor, o servidor Minecraft deve voltar a correr sozinho. Mostramos a unidade de serviço systemd como caminho limpo e o cronjob com @reboot como alternativa.
Quer que o seu servidor Minecraft volte a ficar online sozinho depois de um reinício do servidor root, sem ter de iniciar sessão por SSH? Então está no sítio certo.
Mostramos-lhe dois caminhos: a unidade de serviço systemd como solução limpa e recomendada, bem como o clássico cronjob com @reboot como alternativa rápida. Ambas as variantes funcionam em todas as distribuições Linux correntes, ou seja, em Debian, Ubuntu, AlmaLinux e Rocky Linux.
systemd ou cronjob: qual é o caminho certo?
Um cronjob com @reboot configura-se depressa, mas conhece apenas um único momento: o arranque do sistema. Se aí algo correr mal, ou se o servidor abortar mais tarde, não acontece mais nada.
Uma unidade de serviço systemd é o caminho limpo e traz várias vantagens:
- O servidor só arranca quando a rede está realmente pronta, em vez de esperar um tempo estimado à sorte.
- Depois de uma falha, o systemd reinicia o servidor automaticamente.
- Opera o servidor com os comandos habituais
systemctl start,stop,restartestatus. - As mensagens de erro vão parar ao journal e podem ser seguidas com
journalctl.
Por isso recomendamos o caminho do systemd. O cronjob é descrito mais abaixo, como alternativa para os casos em que o systemd não está disponível.
Preparação: anotar o comando de arranque, o utilizador e o diretório
Antes de começar, precisa de três informações da sua instalação existente:
- O comando de arranque do seu ficheiro "start.sh", por exemplo
screen -dmS spigot java -Xmx4G -jar spigot.jar - O utilizador com que o servidor corre, neste exemplo "spigot"
- O diretório onde está o ficheiro do servidor, neste exemplo
/home/spigot/server
O conteúdo típico de um start.sh tem este aspeto:
#Isto é apenas um exemplo! Utilize o conteúdo do seu próprio start.sh.
screen -S spigot java -Xmx2G -jar spigot.jar
Importante: para o arranque automático, screen -S tem obrigatoriamente de passar a screen -dmS. A razão: screen -S abre uma sessão interativa e espera um terminal. No arranque do sistema não existe terminal, por isso o arranque falharia. Já screen -dmS inicia a sessão diretamente em segundo plano.
Se ainda não tem nenhum servidor Minecraft instalado, comece pelo nosso tutorial Instalar um servidor Minecraft em Debian.
Criar uma unidade de serviço systemd para o servidor Minecraft
Criar o ficheiro da unidade
Crie, como root, um novo ficheiro de serviço:
nano /etc/systemd/system/minecraft.service
Introduza o seguinte conteúdo e adapte o utilizador, o diretório, a RAM e o nome do ficheiro à sua instalação:
[Unit]
Description=Minecraft-Server
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=spigot
WorkingDirectory=/home/spigot/server
ExecStart=/usr/bin/screen -dmS spigot java -Xmx4G -jar spigot.jar
ExecStop=/usr/bin/screen -S spigot -X stuff "stop\n"
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
As linhas mais importantes num relance:
AftereWantsgarantem que o servidor só arranca quando a rede está disponível.Userdefine com que utilizador o servidor corre. Nunca o opere como root.WorkingDirectoryé o diretório com o ficheiro do servidor. Sem esta indicação, o Java não encontra o ficheiro JAR.ExecStopenvia o comando "stop" para a sessão screen. Assim o servidor grava o mundo de forma limpa, em vez de ser simplesmente abatido.Restart=on-failurereinicia o servidor automaticamente após uma falha,RestartSecdefine o tempo de espera em segundos.
Guarde o ficheiro com "CTRL + X", depois "Y" e "Enter".
Ativar e iniciar o serviço
De seguida, o systemd lê o novo ficheiro, ativa o arranque automático e inicia o servidor de imediato:
systemctl daemon-reload
systemctl enable --now minecraft
Verifique o estado atual com:
systemctl status minecraft
Se a saída mostrar "active", o serviço está a correr. Em caso de problemas, o journal fornece a mensagem de erro exata:
journalctl -u minecraft -n 50
Aceder à consola do servidor
O servidor continua a correr dentro de uma sessão screen. Como essa sessão pertence ao utilizador "spigot", mude primeiro para esse utilizador e abra depois a consola:
su spigot
screen -r spigot
Com "CTRL + A + D" sai novamente da consola sem terminar o servidor.
Parar e reiniciar o servidor
A partir de agora controla o servidor através do systemd:
systemctl stop minecraft
systemctl restart minecraft
Se quiser desativar novamente o arranque automático, basta:
systemctl disable minecraft
Alternativa: arranque automático através de um cronjob com @reboot
Se não quiser criar uma unidade de serviço, também consegue o arranque automático através da crontab do respetivo utilizador. Abra a crontab com:
export VISUAL=nano; crontab -e
Acrescente o seu comando de arranque como última linha, com o prefixo @reboot:
@reboot <conteúdo do seu ficheiro start.sh>
#Este é aproximadamente o aspeto que o parâmetro de arranque deve ter, pode divergir do seu próprio script de arranque.
@reboot screen -dmS <nome-do-screen> java -Xmx<AMOUNT>G -jar <diretório e nome do ficheiro do servidor Minecraft>.jar
#EXEMPLO:
@reboot screen -dmS spigot java -Xmx2G -jar /home/spigot/spigot.jar
Também aqui deve certificar-se de que é usado screen -dmS e não screen -S. O nosso tutorial Executar programas automaticamente no arranque do servidor mostra como iniciar da mesma forma quaisquer outras aplicações e scripts quando o servidor arranca.
Testar o arranque automático
Não confie simplesmente em que a configuração está correta, teste-a uma vez de propósito. Reinicie o servidor:
reboot
Espere um a dois minutos, volte a iniciar sessão por SSH e verifique com systemctl status minecraft ou com screen -ls se o servidor Minecraft está novamente a correr. Ligue-se adicionalmente com o cliente do jogo, para ter a certeza de que o servidor está mesmo acessível.
Erros frequentes no arranque automático
- screen -S em vez de screen -dmS: de longe o erro mais frequente. Sem
-dm, o servidor não arranca no boot. - Diretório errado: o Java não encontra o ficheiro JAR. Verifique
WorkingDirectoryou indique no cronjob o caminho completo para o ficheiro JAR. - Utilizador errado: se o serviço correr como root, os ficheiros do mundo recém-criados passam a pertencer ao root e o utilizador previsto para o servidor deixa de os poder escrever.
- RAM insuficiente: se o valor a seguir a
-Xmxfor maior do que a memória livre, o kernel termina o processo Java pouco depois do arranque.
Perguntas frequentes
systemd ou cronjob: qual é o melhor caminho?
Porque é que screen -S tem de passar a screen -dmS?
Como acedo à consola do servidor depois de um arranque automático?
O systemd também reinicia o meu servidor depois de uma falha?
Como verifico se o arranque automático funciona mesmo?
2024-2026 KernelHost GmbH. Todos os direitos reservados. Este guia está protegido por direitos de autor. A sua republicação noutros sites, na íntegra, em parte ou de forma editada, não é permitida sem o nosso consentimento por escrito. Citações com indicação da fonte e ligação são expressamente bem-vindas.

