Esta guía genérica prepara una máquina Linux (Ubuntu o Debian) o Windows Server para alojar cualquier servidor de juego: elección del proveedor, usuario no root, claves SSH, cortafuegos, fail2ban, SteamCMD, Docker, servicio systemd, monitorización y copias de seguridad. Cuenta con 1 a 2 horas; después sigue la guía de instalación de tu juego.
Instalación paso a paso
Elige proveedor y plan (ver «Elegir un proveedor») y contrata un VPS o dedicado con Ubuntu LTS o Debian estable.
Conéctate por SSH con la cuenta root proporcionada y actualiza el sistema.
Crea un usuario no root con sudo; nunca ejecutes un servidor de juego como root.
Instala tu clave SSH pública y desactiva el acceso root y por contraseña.
Activa el cortafuegos ufw: denegar todo lo entrante, permitir SSH y luego los puertos del juego.
Instala fail2ban para bloquear intentos repetidos de acceso SSH.
Instala SteamCMD (juegos de Steam) o Docker (imágenes de la comunidad) según tu juego.
Instala el servidor del juego con la guía de tu juego y abre sus puertos (herramienta «Verificador de puertos»).
Crea un servicio systemd (o una sesión tmux) para iniciar y reiniciar el servidor automáticamente.
Configura la monitorización (registros, recursos) y copias de seguridad programadas y probadas.
Elegir proveedor y plan
- VPS (desde unos euros al mes): suficiente para un servidor pequeño; comprueba que la CPU no esté muy compartida, pues la mayoría de juegos dependen de un núcleo rápido.
- Dedicado: para varios servidores o muchos slots; elige SSD/NVMe y buena frecuencia de CPU.
- Criterios: ubicación cercana a los jugadores (latencia), protección anti-DDoS incluida, tráfico ilimitado o cuota suficiente, cortafuegos de red («security group»), instantáneas, soporte. Estima recursos con la «Calculadora de recursos del servidor».
Primer acceso y usuario no root
Sustituye 203.0.113.10 por la IP de tu servidor y gameadmin por el nombre que prefieras:
ssh [email protected]
apt update && apt upgrade -y
adduser gameadmin
usermod -aG sudo gameadminClaves SSH y endurecimiento de sshd
En tu equipo: ssh-keygen -t ed25519 y luego ssh-copy-id [email protected]. Prueba el acceso por clave en un segundo terminal ANTES de desactivar las contraseñas y crea /etc/ssh/sshd_config.d/99-hardening.conf (Ubuntu 22.04+, Debian 12):
# /etc/ssh/sshd_config.d/99-hardening.conf
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# Apply: sudo sshd -t && sudo systemctl reload sshCortafuegos ufw
Permite SSH antes de activar ufw para no quedarte fuera. Luego añade los puertos de tu juego (ejemplo FiveM: 30120 TCP y UDP; los puertos de cada juego están en el Verificador de puertos; la herramienta «Reglas de cortafuegos» genera los comandos). Replícalos en el cortafuegos de red del proveedor (OVH, Hetzner, Scaleway…: «security group»).
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbosefail2ban
fail2ban banea temporalmente las direcciones que fallan varias veces al iniciar sesión. Crea /etc/fail2ban/jail.local (no modifiques jail.conf):
# sudo apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
# sudo systemctl enable --now fail2ban
# sudo fail2ban-client status sshdSteamCMD (juegos de Steam)
Instalación manual desde el archivo oficial de Valve (como gameadmin, no root). Sustituye APPID por el ID del servidor dedicado de tu juego (ver SteamDB o la guía del juego). Algunos servidores exigen una cuenta de Steam en lugar de «anonymous»: consulta la documentación del juego.
sudo apt install -y lib32gcc-s1 curl ca-certificates
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
./steamcmd.sh +force_install_dir ~/server +login anonymous +app_update APPID validate +quitDocker (imágenes de la comunidad)
El script de conveniencia de Docker sirve para pruebas; en producción sigue la instalación por repositorio apt de docs.docker.com. Hay que cerrar sesión y volver a entrar tras añadirte al grupo docker. Los contenedores publicados con -p eluden ufw: restríngelos también con el cortafuegos del proveedor.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker gameadmin
# log out, log back in, then:
docker run --rm hello-worldServicio systemd
Crea /etc/systemd/system/gameserver.service (adapta User, WorkingDirectory y ExecStart al script de lanzamiento de tu juego) y ejecuta: sudo systemctl daemon-reload && sudo systemctl enable --now gameserver. Logs: journalctl -u gameserver -f.
[Unit]
Description=Game server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=gameadmin
WorkingDirectory=/home/gameadmin/server
ExecStart=/home/gameadmin/server/start.sh
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetAlternativa: tmux
tmux mantiene el servidor activo tras desconectar SSH y da acceso a su consola (útil para comandos). Desacopla con Ctrl+B y luego D. No reinicia el servidor tras un fallo o reinicio: prefiere systemd en producción.
sudo apt install -y tmux
tmux new -s game
# inside tmux: run ./start.sh, then press Ctrl+B then D
tmux attach -t gameVariante Windows Server
Conéctate por Escritorio remoto (limita el puerto 3389 a tu IP o usa una VPN), instala SteamCMD o el servidor del juego en C:\gameserver, abre los puertos en PowerShell (administrador) e inicia el servidor al arrancar con una tarea programada. Programa los reinicios de Windows Update para evitar cortes imprevistos.
New-NetFirewallRule -DisplayName "Game UDP 27015" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "Game TCP 27015" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow
schtasks /Create /TN "GameServer" /TR "C:\gameserver\start.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST /FAlojamiento en casa: redirección de puertos
- Asigna una IP local fija a la máquina (reserva DHCP en el router).
- En el router, redirige (NAT) cada puerto del juego, con el protocolo correcto, a esa IP local.
- Abre también el cortafuegos de la máquina. Prueba desde fuera (4G/5G), no desde la red local.
- Si tu operador usa CGNAT (sin IP pública dedicada), la redirección es imposible: pide una IP pública o usa un VPS o un túnel.
- Exponer tu IP personal conlleva riesgos (DDoS dirigidos): un VPS protegido es más seguro para un servidor público.
Notas sobre ataques DDoS
- El cortafuegos de la máquina no basta contra un ataque volumétrico: la protección debe hacerse aguas arriba, en el proveedor.
- Comprueba qué cubre el anti-DDoS del plan (protocolos UDP/juego, modo «gaming»): no es igual en todos los proveedores.
- No reveles la IP de origen si usas un proxy o túnel; no expongas RCON ni consolas web.
Monitorización
Comandos útiles: registros del servicio, puertos realmente en escucha (compara con el cortafuegos), carga de CPU/RAM y espacio en disco. Para monitorización continua añade una herramienta como Netdata o Prometheus, con alertas de RAM y disco.
journalctl -u gameserver -f
sudo ss -lntup
htop
free -h
df -hCopias de seguridad
Respalda el mundo y la configuración a diario, conserva varias versiones y cópialas fuera del servidor. La herramienta «Generador de script de copias» produce un script completo con retención; ejemplo mínimo (crontab):
30 4 * * * tar -czf /backups/gameserver-$(date +\%Y\%m\%d).tar.gz -C /home/gameadmin server && find /backups -name 'gameserver-*.tar.gz' -mtime +7 -deleteSolución de problemas
- Los jugadores no pueden conectarse: revisa el protocolo (UDP vs TCP), ufw, el cortafuegos del proveedor y que el servidor esté escuchando (sudo ss -lntup).
- «Permission denied (publickey)»: la clave no está en ~/.ssh/authorized_keys del usuario o los permisos son demasiado abiertos (chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys).
- El servidor es terminado («Killed», OOM): memoria insuficiente; revisa «dmesg | grep -i oom», añade RAM o reduce slots y mods. Un archivo swap limita los fallos pero ralentiza.
- El servicio se reinicia en bucle: lee «journalctl -u gameserver -n 100»; revisa rutas, permisos (el servidor debe pertenecer a gameadmin) y bibliotecas de 32 bits que falten para SteamCMD.
- El servidor no aparece en la lista: el puerto de consulta (query) está bloqueado o el servidor no está declarado; añádelo en game-rank.com/jeux para aparecer.
Preguntas frecuentes
- ¿VPS o servidor dedicado para un servidor de juego?
- Un VPS basta para un servidor pequeño o para probar. Pasa a un dedicado para varios servidores, muchos slots o rendimiento estable (sin vecinos ruidosos).
- ¿Ubuntu o Debian?
- Ambas sirven y los comandos son casi idénticos. Elige una versión con soporte (Ubuntu LTS o Debian estable) y comprueba la compatibilidad indicada por el editor del juego.
- ¿De verdad hay que desactivar el acceso root y por contraseña?
- Es muy recomendable: los servidores expuestos reciben miles de intentos al día. Una clave SSH y un usuario no root eliminan la mayor parte del riesgo; conserva una consola de rescate en el proveedor.
- ¿Docker o instalación directa?
- La instalación directa con SteamCMD y systemd es la más simple y la mejor documentada por los editores. Docker aísla y facilita varios servidores en una máquina, pero añade una capa que entender (red, volúmenes, cortafuegos).
