← Blog

Comment créer un serveur DarkRP sur Gmod performant ?

Par Benjamin D. · PDG

· Lecture 8 min

Illustration de l'article : Comment créer un serveur DarkRP sur Gmod performant ?
Sommaire

Un serveur DarkRP fluide repose sur trois piliers : un processeur à haute fréquence, une liste d'addons contrôlée et une configuration Lua propre. Le gamemode reste mono-thread côté logique de jeu, donc la puissance par cœur compte davantage que le nombre de cœurs. Le reste se joue dans le fichier settings.lua, dans la collection Workshop et dans la discipline de modération.



Ce qu'il faut sous le capot pour un serveur DarkRP

Garry's Mod exécute la logique de jeu, la physique et le Lua sur un seul thread principal. Ajouter des cœurs n'accélère donc pas la simulation : ce qui compte, c'est la fréquence et l'IPC du processeur. Un CPU récent comme le Ryzen 9 7950X3D encaisse bien plus de props, d'entités et de timers Lua qu'une puce serveur ancienne à basse fréquence.

La RAM sert surtout à charger la carte, les modèles et les addons Workshop. Une map DarkRP lourde du type evocity, accompagnée de plusieurs centaines d'addons, monte vite en mémoire. Le stockage NVMe, lui, réduit les temps de chargement de map et les à-coups lors des accès disque.

Configuration RPBesoin mémoire indicatifPoint de vigilance
Petit serveur, map légère, addons essentiels4 GoLimiter les props par joueur
Serveur communautaire, collection Workshop moyenne6 à 8 GoEntités persistantes et imprimantes
Gros DarkRP, map urbaine étendue, nombreux jobs10 Go et plusPhysique, ragdolls, véhicules

Une machine partagée avec des voisins bruyants provoque des micro-freezes impossibles à diagnostiquer côté Lua. Sur une offre de Serveur Garry's Mod avec ressources garanties, RAM DDR5 ECC et anti-DDoS inclus, le tick reste stable même quand la population grimpe le soir.



Installer Garry's Mod en dédié et charger le gamemode

Récupérer les fichiers avec SteamCMD

Le serveur dédié Garry's Mod correspond à l'app ID 4020. Sur un panel, l'installation est automatique ; sur une machine que vous gérez vous-même, SteamCMD fait le travail.

./steamcmd.sh +force_install_dir /home/gmod/server \
  +login anonymous \
  +app_update 4020 validate \
  +quit

Poser DarkRP et ses dépendances

DarkRP se place dans garrysmod/gamemodes/darkrp/. La bonne pratique consiste à ne jamais éditer ce dossier : toutes vos modifications passent par l'addon darkrpmodification, ce qui préserve vos réglages lors des mises à jour du gamemode.

cd /home/gmod/server/garrysmod/gamemodes
git clone https://github.com/FPtje/DarkRP.git darkrp

cd /home/gmod/server/garrysmod/addons
git clone https://github.com/FPtje/darkrpmodification.git

Ligne de lancement et collection Workshop

La collection Workshop se charge côté serveur avec host_workshop_collection et une clé API Steam passée via -authkey. Sans cette clé, les clients ne téléchargent pas les addons à la connexion.

./srcds_run -game garrysmod -console -port 27015 \
  -authkey VOTRE_CLE_API_STEAM \
  +maxplayers 48 \
  +gamemode darkrp \
  +host_workshop_collection 1234567890 \
  +map rp_downtown_v4c_v2

Le NexusPanel expose la console live, le WebFTP et le gestionnaire d'addons, ce qui évite de repasser par SSH pour chaque ajustement. Les sauvegardes automatiques prennent en charge la base SQLite et les fichiers du gamemode.



Régler DarkRP sans casser l'économie du roleplay

Les fichiers qui comptent

Tout se joue dans addons/darkrpmodification/lua/. Trois répertoires concentrent l'essentiel du travail d'administration.

CheminRôle
lua/darkrp_config/settings.luaRègles globales du gamemode
lua/darkrp_config/disabled_defaults.luaDésactivation des jobs et armes par défaut
lua/darkrp_customthings/jobs.luaMétiers, équipes, quotas
lua/darkrp_customthings/entities.luaEntités achetables (imprimantes, etc.)
lua/darkrp_customthings/shipments.luaCargaisons et armes du dealer

Un exemple de job propre

TEAM_MECANO = DarkRP.createJob("Mecanicien", {
    color = Color(20, 150, 200, 255),
    model = {"models/player/Group01/male_07.mdl"},
    description = [[Repare les vehicules du quartier.]],
    weapons = {"weapon_physgun"},
    command = "mecano",
    max = 3,
    salary = GAMEMODE.Config.normalsalary,
    admin = 0,
    vote = false,
    hasLicense = false,
    category = "Citoyens"
})

Le champ max est votre meilleur outil d'équilibrage : sans quota, un serveur se retrouve avec dix policiers et aucun citoyen. Reliez le salaire à GAMEMODE.Config.normalsalary plutôt qu'à une valeur figée, cela garde l'économie cohérente quand vous ajustez la base.

Réglages globaux souvent oubliés

GM.Config.propspawning       = false
GM.Config.toolgunallowed     = false
GM.Config.dmgpermission      = true
GM.Config.adminsents         = true
GM.Config.chatsounds         = true
GM.Config.voiceradius        = true
GM.Config.globalshow         = false

Couper le spawn libre de props et le toolgun pour les citoyens élimine la majorité des abus de type prop-kill et prop-block. Le voiceradius activé impose le vocal de proximité, ce qui change radicalement la qualité du roleplay. La documentation officielle du gamemode détaille chaque clé : Source.



Faire tomber les lags : optimisation serveur et client

Le fichier server.cfg

hostname "Mon RP - Ville"
rcon_password "chaine-longue-unique-et-aleatoire"
sv_lan 0
sv_region 3
sv_downloadurl "https://cdn.mondomaine.fr/garrysmod/"
sv_allowdownload 0
sv_allowupload 0
net_maxfilesize 64
sbox_maxprops 25
sbox_maxragdolls 3
sbox_maxvehicles 4
gmod_physiterations 2
sv_hibernate_think 1
sv_kickerrornum 0

Le FastDL via sv_downloadurl évite de saturer le canal de jeu avec des transferts de fichiers. Les clients récupèrent les contenus depuis un espace web, le trafic du serveur reste dédié aux paquets de gameplay. Avec un lien réseau à 1 Gbit/s, les téléchargements Workshop ne pénalisent pas la simulation.

Les vraies sources de lag DarkRP

  • Les entités persistantes : imprimantes, plantations et machines laissées au sol accumulent des timers Lua. Prévoyez un nettoyage sur changement de map.
  • Les addons mal codés : un hook Think exécuté à chaque frame par un menu F4 exotique coûte plus cher que trente joueurs.
  • La physique : ragdolls empilés et véhicules abandonnés font chuter les FPS serveur. Limitez les quotas par joueur.
  • Les maps trop lourdes : une carte urbaine énorme avec peu de joueurs génère plus de coût de rendu que de vrai RP.

Mesurer avant de toucher

Dans la console serveur, stats affiche les FPS serveur et l'usage CPU, tandis que lua_run permet de sonder des variables en direct. Un profileur d'addons identifie les hooks les plus gourmands. Coupez un addon à la fois et relevez les FPS entre chaque test : la méthode est lente mais elle isole toujours le coupable.

stats
net_channels
lua_run print(#ents.GetAll())


Administration, sauvegardes et sécurité au quotidien

Droits et modération

DarkRP embarque FAdmin, suffisant pour démarrer. Les communautés qui grandissent basculent vers ULX et ULib pour des groupes fins, des logs et des commandes de modération. Créez des rangs distincts (modérateur, administrateur, développeur) et n'accordez jamais le rcon à un membre de staff junior.

Base de données et persistance

Par défaut, DarkRP stocke tout en SQLite dans garrysmod/sv.db. Dès que vous gérez plusieurs serveurs ou un site communautaire, passez à MySQL via le module mysqloo et le fichier de configuration prévu.

-- lua/darkrp_config/mysql.lua
MySQLConfig = {
    Host = "127.0.0.1",
    Username = "darkrp",
    Password = "mot-de-passe-fort",
    Database_name = "darkrp",
    Database_port = 3306,
    Preferred_module = "mysqloo",
    MultiStatements = false
}

Sauvegardes et hygiène

  • Sauvegarder sv.db ou le dump MySQL, le dossier darkrpmodification et cfg/server.cfg.
  • Utiliser des mots de passe RCON longs et uniques, jamais partagés en Discord public.
  • Tester les mises à jour d'addons sur une instance secondaire avant la production.
  • Journaliser les achats, les kills et les changements de job pour arbitrer les litiges.

Sur un VPS Linux que vous administrez vous-même, ajoutez les bases : clés SSH à la place des mots de passe, ufw pour n'ouvrir que les ports utiles et fail2ban contre le bruteforce. La protection anti-DDoS volumétrique, elle, est déjà assurée côté infrastructure.

ssh-keygen -t ed25519 -C "admin-gmod"
sudo ufw allow 27015/tcp
sudo ufw allow 27015/udp
sudo systemctl enable --now fail2ban

Service systemd pour un démarrage automatique

[Unit]
Description=Serveur Garry's Mod DarkRP
After=network.target

[Service]
User=gmod
WorkingDirectory=/home/gmod/server
ExecStart=/home/gmod/server/srcds_run -game garrysmod -console -port 27015 +gamemode darkrp +map rp_downtown_v4c_v2
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target


Choisir entre panel géré et machine à administrer

Deux approches tiennent la route. L'hébergement de jeu géré vous donne une installation instantanée, un panel avec console live, WebFTP, gestion des addons et sauvegardes automatiques : vous passez votre temps sur le Lua et la communauté, pas sur l'OS.

La machine complète vous ouvre le système, utile si vous faites tourner en parallèle un site, un bot, une base MySQL partagée et plusieurs instances. Elle demande en revanche de maintenir les paquets, le pare-feu et les sauvegardes vous-même.

CritèreServeur de jeu géréVPS à administrer
Mise en routeInstallation instantanéeInstallation manuelle
Accès systèmePanel et WebFTPRoot complet
Multi-servicesInstances séparéesTout sur la même machine
MaintenancePrise en chargeÀ votre charge

Un profil hybride existe : le VPS Pterodactyl combine l'accès système et un panel de conteneurs, pratique quand vous hébergez plusieurs gamemodes ou un serveur de test à côté de la production. Le reste du catalogue est visible sur Tous nos serveurs de jeux.



Conclusion

Priorisez la fréquence CPU avant toute autre dépense de ressources : DarkRP sature un cœur bien avant de manquer de RAM. Passez systématiquement par darkrpmodification, jamais par le dossier du gamemode, sinon la première mise à jour effacera votre travail. L'erreur la plus coûteuse reste l'empilement d'addons Workshop non testés : chaque ajout doit être validé sur une instance de test, chronomètre et FPS serveur à l'appui.



FAQ

Pourquoi mon serveur Garry's Mod n'apparaît-il pas dans la liste publique ?

Vérifiez d'abord que sv_lan est bien à 0 dans server.cfg, puis que sv_region correspond à votre zone. Le port UDP 27015 doit être joignable depuis l'extérieur, ainsi que le port de query. Si le serveur reste invisible, ajoutez un token GSLT généré sur le portail Steam Game Servers via +sv_setsteamaccount, car les serveurs sans token peuvent être filtrés du navigateur public. Les joueurs peuvent toujours rejoindre par IP directe avec la commande connect.

Peut-on tester un autre gamemode sans réinstaller le serveur ?

Oui. Les gamemodes cohabitent dans garrysmod/gamemodes/, il suffit de changer le paramètre +gamemode dans la ligne de lancement puis de redémarrer. Prévoyez toutefois une map compatible : lancer sandbox sur une carte RP fonctionne, mais l'inverse est rarement propre. Attention aux addons spécifiques à DarkRP qui déclenchent des erreurs Lua sur un autre gamemode, mieux vaut créer un profil de démarrage séparé ou une seconde instance dédiée aux tests.

Comment migrer une base DarkRP existante vers un nouvel hébergement ?

Arrêtez le serveur source pour figer les écritures, puis copiez garrysmod/sv.db si vous êtes en SQLite, ou exportez un dump avec mysqldump en MySQL. Transférez ensuite le dossier addons/darkrpmodification, le fichier cfg/server.cfg et vos éventuels addons hors Workshop. Sur la nouvelle machine, restaurez la base avant le premier démarrage, sinon DarkRP recrée des tables vides. Vérifiez enfin les identifiants dans mysql.lua et testez avec un compte administrateur.

À lire aussi

Location de serveur Garry's Mod

à partir de 3,99€/mois

Louer mon serveur Garry's Mod