Aller au contenu
Warcon
Open source, MIT Bun · SvelteKit · Postgres Docker Compose

RCON pour WARDOGS, sans distribuer le mot de passe.

Warcon est un panneau auto-hébergé pour les serveurs dédiés WARDOGS. Gérez vos serveurs depuis un seul endroit, donnez à chaque admin son propre identifiant et son propre rôle, et gardez une trace de ce qui se passe. Le mot de passe RCON reste chiffré sur le serveur : vos admins n’ont jamais besoin de le voir.

Utilisez-le sur console.warcon.app, ou faites tourner votre propre copie avec docker compose up. C’est le même panneau open source dans les deux cas.

Vue d’ensemble d’un serveur WARDOGS dans Warcon avec les scores des équipes, les détails de la carte et le contrôle du match

Capture faite sur le serveur de démo intégré : les chiffres sont fictifs.

Le problème

La console web officielle appelle le serveur de jeu directement depuis le navigateur en HTTP non chiffré. Elle ne peut donc pas être servie en HTTPS, et chaque admin a besoin du mot de passe RCON.

Ce que Warcon fait à la place

Warcon effectue ces appels côté serveur. Le mot de passe est stocké chiffré avec AES-GCM, les admins se connectent avec leurs propres comptes, et chaque action est d’abord vérifiée par rapport à leur rôle.

Et il garde une trace de tout

Une ligne d’audit est écrite avant le renvoi de la réponse : qui a fait quoi, sur quel serveur, à qui, et si le jeu l’a accepté.

Fonctionnalités

Pour les clans et les communautés, avec un serveur ou plusieurs.

01

Vos serveurs au même endroit

Ajoutez chaque serveur WARDOGS que vous gérez, chacun avec son propre mot de passe RCON chiffré. Un processus worker les surveille, et les pages se mettent à jour en direct tant que vous les avez ouvertes.

02

Des comptes, pas un mot de passe partagé

Chaque clan ou communauté est une organisation avec ses propres serveurs et membres. Les liens d’invitation permettent de se connecter avec Discord ou Steam, et les clés d’accès (passkeys) comme les applications d’authentification sont prises en charge. Les rôles sont définis par serveur, et vous pouvez les modifier ou créer les vôtres.

03

Un journal d’audit

Connexions, modifications d’utilisateurs et de serveurs, et commandes de jeu, avec l’auteur, la cible, le résultat et la durée. Filtrez-le, exportez-le en CSV ou JSON et lisez à côté le journal du serveur de jeu lui-même.

04

Statistiques et historique des matchs

Le jeu garde peu d’historique, alors le worker l’enregistre : joueurs en ligne dans le temps, disponibilité, temps par carte, heures de pointe, sessions et temps de jeu, et chaque match avec son tableau des scores. Les classements peuvent être rendus publics serveur par serveur.

05

Historique et notes des joueurs

Ouvrez la fiche d’un joueur pour voir ses sessions, les pseudos qu’il a utilisés et les actions qui l’ont visé sur vos serveurs, avec des notes partagées et une liste de surveillance. Le score de risque, optionnel, n’est qu’un indice : RCON ne donne ni la visée, ni la position, ni les entrées, la triche ne peut donc pas être détectée ainsi.

06

De l’automatisation à tester à blanc

Messages de bienvenue en chuchotement, annonces programmées, réinitialisation de la carte quand le serveur se vide, règles de kick à la connexion et filtre de pseudos. Vous pouvez tester chaque règle sur les dernières 24 heures avant de l’activer, et tout ce qu’elle fait est journalisé.

07

Bans et slots réservés sur plusieurs serveurs

Tenez une seule liste de bans et une seule liste de slots réservés pour l’organisation, avec motifs et dates d’expiration, et le worker les applique sur chacun de vos serveurs.

08

Discord

Publiez certains événements d’audit dans un salon, soyez prévenu quand un joueur surveillé se connecte, ou gardez pour chaque serveur une carte de statut en direct qui se met à jour dans le même message.

09

Les commandes de la console officielle

Statut et tableau des scores, kick, ban, kill, chuchotement, changement d’équipe, annonces, contrôle de la carte et du match, édition de la rotation, slots réservés, score tick, image du sponsor, et ServerSettings.ini avec validation et application.

Fonctionnement

Warcon se place entre vos admins et le jeu.

L’application web sert les pages et tient les sessions. Un processus worker séparé effectue les appels au listener RCON de chaque serveur de jeu. Il interroge chaque serveur toutes les une à deux secondes quand il est actif, moins souvent quand il est vide, et enregistre ce que le jeu ne conserve pas. Les données sont stockées dans Postgres ; avec TimescaleDB, les échantillons plus anciens sont compressés.

Faites-le tourner à côté du serveur de jeu, sur un VPS ou sur un hôte de conteneurs. Il lui suffit d’atteindre le port RCON : directement, via un réseau privé ou à travers un proxy TLS sur la machine de jeu.

Navigateur
Les admins se connectent
HTTPS ▸
Warcon
Web · worker · audit
HTTP ▸
Serveur de jeu
:7776 WDRCON
Postgres
utilisateurs · serveurs · audit · échantillons · matchs

Le protocole a été reconstitué par rétro-ingénierie à partir de la console officielle et est documenté dans le dépôt. Une mise à jour du jeu peut le modifier, et certaines choses peuvent alors ne plus fonctionner le temps que Warcon s’adapte.

Auto-héberger

Docker Compose et un fichier à modifier.

Docker Compose démarre l’application web, le worker et une base TimescaleDB, et applique d’abord les migrations. Ouvrez l’URL, créez le compte propriétaire, ajoutez un serveur et envoyez un lien d’invitation à vos admins. Un serveur de démo intégré vous permet de faire le tour avant de saisir un vrai mot de passe.

  1. 1Une machine avec Docker : un VPS bon marché, un vieux PC ou la machine du serveur de jeu elle-même.
  2. 2L’hôte, le port RCON (généralement 7776) et le mot de passe RCON de votre serveur.
  3. 3En option : Caddy, nginx, Traefik ou un Cloudflare Tunnel devant, pour le HTTPS.
Terminal
git clone https://github.com/warcon-app/warcon.git warcon && cd warcon
cp .env.example .env
# définissez BETTER_AUTH_SECRET, ENCRYPTION_KEY et RELAY_SECRET avec des valeurs de `openssl rand -base64 32`,
# POSTGRES_PASSWORD, et ORIGIN avec l’URL que les gens ouvriront
docker compose up -d
Rôles

Donnez à chaque admin ce dont il a besoin.

Les rôles sont définis par serveur : un membre peut être admin sur un serveur et viewer sur un autre. Chaque organisation démarre avec les trois rôles ci-dessous. Ses propriétaires peuvent modifier ce que chacun autorise, ou ajouter les leurs, par exemple un rôle d’essai qui peut kicker mais pas bannir.

Actionsvieweroperatoradminorg owner
Statut, joueurs, kills, rotation, bans et slots réservés, statistiques, classements, statistiques des joueurs✓✓✓✓
Annonce, chuchotement, kick, kill, changement d’équipe, contrôle du match et de la carte, modifications de rotation en direct, notes sur les joueurs et liste de surveillance·✓✓✓
Bans, slots réservés, listes de bans et de slots réservés de l’organisation, enregistrement de la rotation, configuration et paramètres, automatisation, journal d’audit de tous les membres et journal du serveur, RCON brut··✓✓
Serveurs, membres, rôles, liens d’invitation et webhooks Discord ; journal d’audit de l’organisation···✓