Un servicio de systemd es la forma correcta de tener algo funcionando siempre en Linux: arranca solo tras un reinicio, se vuelve a levantar si se cae y guarda todo lo que escribe en un log. El ejemplo es un servidor de Minecraft, pero vale para cualquier cosa.
1. Un usuario para el servidor
Mejor que no corra como root: si alguien se cuela por el juego, no tiene el control de toda la máquina.
adduser --disabled-password --gecos "" minecraft
# copia tu servidor a /home/minecraft/servidor y dale los permisos:
chown -R minecraft:minecraft /home/minecraft/servidor
2. El archivo del servicio
Crea /etc/systemd/system/minecraft.service:
[Unit]
Description=Servidor de Minecraft
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/home/minecraft/servidor
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Cambia WorkingDirectory y ExecStart por la carpeta y el comando de tu servidor. Usa siempre rutas completas (which java te dice la de Java).
3. Actívalo
systemctl daemon-reload
systemctl enable --now minecraft
enable hace que arranque con el VPS; --now lo arranca ya.
El día a día
systemctl status minecraft # ¿está funcionando?
systemctl restart minecraft # reiniciarlo
systemctl stop minecraft # pararlo
journalctl -u minecraft -f # ver su consola en directo (Ctrl + C para salir)
¿Y la consola del juego?
Como servicio no puedes escribir comandos en su consola directamente. Para administrarlo usa RCON (Minecraft, Rust, ARK y Palworld lo tienen) o los comandos desde dentro del juego con permisos de administrador. Al hacer systemctl stop, Minecraft guarda el mundo antes de cerrarse.
Si prefieres seguir teniendo una consola a mano y no te importa arrancarlo tú tras cada reinicio, quizá te encaje más screen o tmux.