Servidor Dedicado: Configure seu Servidor de Jogos Dedicado como um Serviço Linux
Este guia foi criado com os seguintes produtos:
(Os detalhes podem variar com produtos de diferentes fornecedores, mas os conceitos principais permanecem os mesmos)
Introdução
Serviços são parte essencial do Linux e se referem a um processo ou aplicação que roda em segundo plano, podendo ser uma tarefa pré-definida ou baseada em eventos. Isso traz vários benefícios, incluindo o lançamento automático do servidor na inicialização, atualizações automáticas, gerenciamento fácil e acesso aos logs, entre outros! Neste guia, vamos explorar o processo de criar um serviço para o seu servidor de jogos dedicado.
Preparação
Para começar, conecte-se ao seu servidor dedicado via SSH. Use nosso guia de Acesso Inicial SSH se precisar de ajuda para isso.
Você também deve seguir um dos nossos guias de servidor de jogos dedicados nesta seção para instalar e configurar um servidor de jogos no seu sistema Linux. Neste guia, usaremos o servidor dedicado Palworld como exemplo, mas as instruções podem ser adaptadas para todos os nossos guias.
Criando um Serviço
Comece criando um novo arquivo de serviço para o servidor de jogos dedicado que você configurou. Substitua [your_game]
pelo nome que preferir. Recomendamos usar o nome do jogo para manter tudo organizado, então usaremos palworld.service
.
sudo nano /etc/systemd/system/[your_game].service
Configurando o Serviço
Com o editor nano aberto, copie o conteúdo básico abaixo, que é um arquivo de serviço modelo que você pode reutilizar. Temos duas versões, uma para guias que usam SteamCMD e outra para guias de jogos que não usam SteamCMD.
- Jogo SteamCMD
- Jogo Regular
[Unit]
Description=[your_server] Server
Wants=network-online.target
After=network-online.target
[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/[your_server_folder]
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/[your_server_folder]' +login anonymous +app_update [your_game_steamid] +quit
ExecStart=/home/steam/[your_server_folder]/[your_path_to_start_file]
Restart=always
[Install]
WantedBy=multi-user.target
[Unit]
Description=[your_server] Server
Wants=network-online.target
After=network-online.target
[Service]
User=gameservers
Group=gameservers
WorkingDirectory=/home/gameservers/[your_server_folder]
ExecStart=/home/gameservers/[your_server_folder]/[your_path_to_start_file]
Restart=always
[Install]
WantedBy=multi-user.target
Vamos detalhar o conteúdo do arquivo para facilitar o entendimento:
Description
: Pode ser qualquer coisa, útil para distinguir facilmente o propósito do serviço.User
: Usando nossos guias, você deve ter configurado um usuário separadosteam
para uso com SteamCMD, ou o usuáriogameservers
para jogos que não usam SteamCMD. Caso contrário, defina para o usuário que deve rodar o serviço.WorkingDirectory
: É o caminho para o diretório principal que contém tudo que o serviço precisa.ExecStartPre
(somente SteamCMD): Aqui configuramos o mesmo comando de instalação do SteamCMD que roda toda vez que o servidor reinicia para garantir que ele esteja atualizado. Você deve copiar isso do respectivo guia do servidor dedicado, ou substituir os valores manualmente pelos do jogo.ExecStart
: Define a tarefa pré-definida que deve rodar com o serviço. Novamente, copie o caminho do guia do servidor dedicado ou substitua os valores manualmente para apontar para o arquivo de inicialização.
Para jogos que precisam da camada de compatibilidade Wine para rodar, você deve incluir os comandos xvfb-run e wine dentro do parâmetro ExecStart
. Um exemplo para V-Rising:
/usr/bin/xvfb-run wine /home/steam/V-Rising-Server/start_server.bat
Também certifique-se de que seu comando de instalação SteamCMD em ExecStartPre
inclua o parâmetro +@sSteamCmdForcePlatformType
se necessário para forçar uma versão da plataforma.
Com todos os valores adaptados para o seu servidor de jogos dedicado, salve o arquivo e saia do nano usando CTRL + X
, depois Y
para confirmar e por fim ENTER
.
Usando nosso exemplo do Palworld, o arquivo ficaria assim:
[Unit]
Description=Palworld Server
Wants=network-online.target
After=network-online.target
[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/Palworld-Server
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/Palworld-Server' +login anonymous +app_update 2394010 +quit
ExecStart=/home/steam/Palworld-Server/PalServer.sh
Restart=always
[Install]
WantedBy=multi-user.target
Gerenciando o Serviço
Com o arquivo de serviço criado, você precisa habilitá-lo. No exemplo palworld.service
, substitua [your_service]
por palworld
.
sudo systemctl enable [your_service]
Se você fizer alterações no arquivo de serviço, lembre-se de rodar systemctl daemon-reload
depois para garantir que as mudanças entrem em vigor.
Agora você pode iniciar o servidor com o comando systemctl start
. Da mesma forma, pode parar e reiniciar o servidor com comandos similares.
sudo systemctl start [your_service]
sudo systemctl stop [your_service]
sudo systemctl restart [your_service]
Para ver detalhes sobre o serviço, use o comando systemctl status
. Se precisar de logs para debug, use journalctl -u [your_service].service
para ver os logs mais recentes do serviço.
Por fim, se quiser impedir que o serviço rode na inicialização, basta desabilitá-lo.
sudo systemctl disable [your_service]
Conclusão
Você configurou com sucesso um serviço para seu servidor de jogos dedicado. Agora o servidor vai iniciar automaticamente toda vez que o servidor dedicado for ligado.
Você também aprendeu sobre o conteúdo do arquivo de serviço e como gerenciar o serviço usando vários comandos.