top of page

Un VPS pequeño como flota de servidores de juego

Foto del escritor: Marcel Dütscher
Marcel Dütscher
5 jul
2 min de lectura

Todos nuestros mundos en línea (el portal, los mundos oficiales, los mundos creados por los jugadores) funcionan en un único servidor Linux alquilado (VPS). Sin centro de datos, sin una factura de nube de cinco cifras. En este artículo te enseño cómo está montado el servidor y qué aprendimos por el camino.


Primero, blindarlo. Antes de que el juego pudiera entrar en el servidor, tocaba la seguridad básica: un cortafuegos (ufw) que solo abre los puertos necesarios, fail2ban contra los intentos automatizados de inicio de sesión y SSH solo con claves. Como proxy inverso funciona Caddy en su versión Docker: obtiene los certificados TLS automáticamente y envía las peticiones a los contenedores correctos.


Cada mundo, su propio contenedor. El juego en sí funciona como imagen Docker, y cada mundo tiene su propio contenedor con límites fijos: 768 MB de RAM y 2 núcleos de CPU por mundo, y como máximo diez mundos activos a la vez. Así, un solo mundo nunca puede tumbar todo el servidor.


Una monitorización que nos llama. Netdata vigila el servidor con más de 140 alarmas, desde “el disco se está llenando” hasta “el portal no responde”. Si salta algo, nos llega una notificación push al teléfono (a través de ntfy). Así nos enteramos de los problemas antes que los jugadores.


El hallazgo más sorprendente: cuando medimos en reposo, aproximadamente la mitad de la memoria ocupada no se la llevaba el juego, sino Docker y la propia monitorización. La infraestructura que sostiene el juego pesa más en reposo que el juego. Un buen recordatorio de que hay que medir en lugar de adivinar.


El balance tras unos meses en funcionamiento: un servidor pequeño y bien blindado sostiene sin problemas un juego multijugador indie, siempre que pongas límites y estés atento.

Entradas recientes

Ver todo

Comentarios


Ya no es posible comentar esta entrada. Contacta al propietario del sitio para obtener más información.
bottom of page