Un petit VPS comme flotte de serveurs de jeu
Tous nos mondes en ligne – le portail, les mondes officiels, les mondes créés par les joueurs – tournent sur un seul serveur Linux loué (un VPS). Pas de centre de données, pas de facture cloud à cinq chiffres. Dans cet article, je montre comment le serveur est configuré et ce que nous avons appris en chemin.
La sécurité d'abord. Avant que le jeu ait le droit de s'installer sur le serveur, il y a eu la protection de base : un pare-feu (ufw) qui n'ouvre que les ports nécessaires, fail2ban contre les tentatives de connexion automatisées, et SSH uniquement avec des clés. Caddy fait office de reverse proxy, dans sa version Docker – il récupère automatiquement les certificats TLS et dirige les requêtes vers les bons conteneurs.
Un conteneur par monde. Le jeu lui-même tourne sous forme d'image Docker, et chaque monde reçoit son propre conteneur avec des limites fixes : 768 Mo de RAM et 2 cœurs de CPU par monde, au maximum dix mondes actifs en même temps. Ainsi, un monde seul ne peut jamais faire tomber tout le serveur.
Une surveillance qui nous appelle. Netdata surveille le serveur avec plus de 140 alertes – de « disque presque plein » à « le portail ne répond pas ». Si quelque chose se déclenche, une notification push arrive sur le téléphone (via ntfy). Comme ça, nous apprenons les problèmes avant les joueurs.
La découverte la plus surprenante : quand nous avons mesuré au repos, environ la moitié de la mémoire utilisée n'allait pas du tout au jeu – mais à Docker et à la surveillance elle-même. L'infrastructure qui porte le jeu pèse plus lourd au repos que le jeu. Un bon rappel qu'il faut mesurer au lieu de deviner.
Le bilan après quelques mois d'exploitation : un petit serveur, correctement sécurisé, fait tourner sans problème un jeu multijoueur indépendant – à condition de fixer des limites et de garder un œil sur tout.
Commentaires