Do seu nome de usuário, vou assumir que você está tentando executar um servidor dedicado e postarei minha resposta como tal. Este sistema foi testado em batalha e atualmente está sendo usado por uma rede na qual eu sou o administrador da infraestrutura (juntamente com outros recursos sofisticados), bem como inúmeros outros servidores de entrada e redes de produção.
Se você deseja um servidor de reinicialização automática persistente, pode procurar em a criação de um systemd
service para o seu servidor. Você perderá a GUI e a interface sem cabeça, mas ainda poderá enviar comandos para o seu servidor através de RCON ou similar.
Efetivamente, você precisaria criar um novo usuário (vamos chamá-lo de mcserver
) que lidará com as tarefas do seu servidor:
sudo adduser --system --disabled-login --group --home /opt/mcserver
Em seguida, você desejará mudar para este usuário:
sudo -u mcserver
cd /opt/mcserver
Enquanto estiver aqui, copie todos os arquivos do servidor do jogo e o que for.
Em seguida, crie um novo script para iniciar seu servidor. Não não inclui qualquer lógica de relançamento ou similar. Deve ser muito simples:
#!/bin/bash
/usr/bin/java -Xms1024M -Xmx4G -jar -XX:+UseConcMarkSweepGC -jar minecraft.jar --nojline --noconsole
Marque o arquivo como executável usando chmod +x mcserver.sh
.
Você pode exit
da sessão para mcserver
, você não precisará mais dela.
Crie um novo arquivo ( mcserver.service
) em /etc/systemd/system
:
sudo nano /etc/systemd/system/mcserver.sh
Neste arquivo, adicione o seguinte conteúdo:
[Unit]
Description=Vanilla Minecraft Server
Wants=network.target
After=network.target
[Service]
User=mcserver
Group=mcserver
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
PrivateTmp=true
InaccessibleDirectories=/root /sys /srv -/opt /media -/lost+found
ReadWriteDirectories=/var/minecraft/server
WorkingDirectory=/var/minecraft/server
Restart=on-failure
RestartSecs=5
ExecStart=/opt/mcserver/mcserver.sh
[Install]
WantedBy=multi-user.target
Quando terminar, você precisará ativar o serviço:
sudo systemctl daemon-reload
sudo systemctl enable mcserver.service
sudo systemctl start mcserver.service
O servidor será iniciado automaticamente na inicialização do sistema e executado normalmente.
Observe que o servidor será reiniciado automaticamente em uma falha (código de saída diferente de zero), portanto /stop
parará o servidor sem a chance de um respawn. Embora você também possa parar o servidor com systemctl stop mcserver.service
, não será seguro, pois o servidor não morrerá com graça. Você pode, no entanto, usar rcon
para que o comando mencionado envie uma parada normal. Isso, no entanto, será deixado como um exercício para o leitor.
Os scripts de backup ainda podem ser executados, embora seja aconselhável usar uma entrada de registro de usuário que zere todo o pasta e armazena em algum lugar seguro.