🔧 Chapitre 9 · Ton serveur Garry's Mod sur TeamKit

Commandes, Schedule, Backups et Updates

Mis à jour le 04/10/2026 ·

Ton serveur tourne, tes addons sont en place, tes joueurs arrivent. Reste l'entretien : agir vite depuis la console, redémarrer sans y penser, sauvegarder ce qui compte, et mettre à jour sans tout casser.

Ce chapitre est fait pour être gardé ouvert dans un onglet. Il commence par un aide-mémoire des commandes, puis passe aux trois pages d'AMP qui font l'entretien : Schedule, Backups et le bouton Update. Le fonctionnement général de ces pages est expliqué dans le tuto AMP ; ici, on s'occupe de ce qui change avec Garry's Mod.


1. L'aide-mémoire de la console du serveur #

La page Console d'AMP parle directement au serveur. Les commandes ci-dessous sont des commandes natives du moteur Source : elles ont été vérifiées depuis la console AMP d'un serveur TeamKit.

Commande Ce qu'elle fait
status affiche l'état du serveur et les joueurs connectés
say <texte> envoie un message à tous les joueurs
kickid <userid> <motif> expulse un joueur
banid <minutes> <steamid> kick bannit un joueur pour une durée, et l'expulse
writeid enregistre les bannissements pour qu'ils survivent au redémarrage
changelevel <carte> change de carte
sv_password <mot-de-passe> pose un mot de passe pour rejoindre
lua_run <code> exécute du Lua côté serveur

Trois pièges à connaître #

banid sans writeid ne dure pas. Un bannissement tapé seul disparaît au redémarrage suivant. Prends l'habitude de taper les deux à la suite :

banid <minutes> STEAM_0:X:YYYYYYY kick
writeid

Le SteamID est au format STEAM_0:X:YYYYYYY, pas le SteamID64. Il apparaît dans la console au moment où le joueur se connecte ; le chapitre 7 te montre où le lire.

changelevel veut le vrai nom du .bsp. Exactement comme Custom Map : le nom du fichier de la carte, pas le titre de sa page Workshop. Avec un nom qui ne correspond à aucun .bsp, la commande ne change rien : regarde la réponse dans la console, elle dit si la carte a été trouvée. Sur Custom Map, la même erreur est plus grave : le serveur tourne dans le vide au démarrage (voir le chapitre 5 et le chapitre 8).

lua_run a deux règles. Des guillemets simples dans le code, parce que la console de Source découpe la ligne sur les guillemets doubles. Et, quand ton code vise un joueur, compare son SteamID, jamais son pseudo :

lua_run print('test')

Le chapitre 7 va plus loin avec lua_run.

Ce que la console ne fait pas #

Les commandes de chat de ton gamemode (celles qu'on tape en jeu) ne marchent pas depuis la console AMP. Ce n'est pas une panne : elles vérifient qu'un joueur les appelle, et dans la console il n'y a pas de joueur. Elles sortent sans un mot. Depuis la console, la porte d'entrée vers le code de ton gamemode, c'est lua_run.

💡 Une commande tapée en console agit sur le serveur en cours. Ce qui doit durer, comme le mot de passe pour rejoindre, se règle dans Configuration → Garry's Mod (ici, Server Password), que tu retrouveras à chaque démarrage.

✅ À retenir banid toujours suivi de writeid. changelevel avec le vrai nom du .bsp. lua_run avec des guillemets simples. Les commandes de chat du gamemode se tapent en jeu, pas en console.


2. La console côté joueur #

Ton jeu a lui aussi une console. Tu l'as déjà ouverte au chapitre 1 pour taper connect ADRESSE:PORT.

Elle te sert surtout pour deux choses :

  • te connecter directement à ton serveur, même quand il n'apparaît pas dans la liste ;
  • lire ce que voit un joueur, quand une erreur ne se produit que de son côté (voir le chapitre 8, section 5).

Ses commandes ne sont pas celles du serveur : ce que tu tapes dans ton jeu agit sur ton jeu. Pour la liste complète et à jour des commandes et réglages côté joueur, la référence est le wiki officiel : https://wiki.facepunch.com/gmod.

✅ À retenir Deux consoles, deux mondes : celle d'AMP pilote le serveur, celle du jeu pilote ton jeu.


3. Schedule : le redémarrage de nuit #

Pourquoi Garry's Mod aime les redémarrages #

Garry's Mod lit plusieurs choses au démarrage seulement (le chapitre 2 le détaille) :

  • garrysmod/settings/users.txt, les admins natifs ;
  • tout le code Lua du gamemode ;
  • les addons du Workshop, montés au lancement.

Un redémarrage quotidien, à une heure où personne ne joue, garantit que ce que tu as modifié dans la journée est réellement pris en compte le lendemain. Et un serveur redémarré repart d'un état propre.

Ce qui est déjà dans ton Schedule #

Ta page Schedule contient déjà deux déclencheurs, désactivés :

Déclencheur Pourquoi le laisser éteint
une sauvegarde toutes les heures une sauvegarde arrête le serveur : il couperait toutes les heures
une mise à jour quotidienne à 12:00 midi, c'est en pleine journée, et une mise à jour non surveillée peut casser tes addons

Créer le redémarrage de nuit #

  1. Ouvre Schedule.
  2. Clique sur Add New Trigger et choisis un horaire quotidien, à une heure creuse pour ta communauté.
  3. Clique sur Add New Task et accroche à ce déclencheur la tâche de redémarrage du serveur.
  4. Crée un second déclencheur cinq minutes plus tôt, avec une tâche qui envoie une commande à la console :
say Redémarrage du serveur dans 5 minutes
  1. Reste devant la console la première fois, pour vérifier que tout se déclenche à la bonne heure.

Le fonctionnement détaillé des déclencheurs et des tâches est dans le chapitre Schedule du tuto AMP.

✅ À retenir Un redémarrage de nuit, un say cinq minutes avant. Les deux déclencheurs livrés restent éteints.


4. Backups : quoi sauvegarder sur un serveur Garry's Mod #

Rappel indispensable : une sauvegarde AMP arrête le serveur le temps de préparer les fichiers, sauf si tu coches Backup While Running. Planifie-les donc la nuit, au même créneau que le redémarrage, ou fais-les à la main quand personne ne joue.

Le reste du fonctionnement (nom, Sticky, restauration, place prise) est dans le chapitre Sauvegardes du tuto AMP. Voici ce qui compte pour Garry's Mod.

Ce qui vient de toi, et seulement de toi #

Chemin Pourquoi c'est précieux
garrysmod/data/ ce que les addons écrivent, dont les grades d'ULib (data/ulib/users.txt)
garrysmod/settings/users.txt tes admins natifs
garrysmod/gamemodes/ les gamemodes déposés à la main, surtout si tu les as modifiés
garrysmod/addons/ les addons hors Workshop
garrysmod/maps/ les cartes déposées à la main

Ce qui se récupère autrement #

  • garrysmod/cache/srcds/ : les .gma du Workshop, que le serveur retélécharge depuis ta collection ;
  • garrysmod/cfg/server.cfg et garrysmod/cfg/mount.cfg : ils sont écrits par AMP à partir de ta page Configuration.

Ce dernier point est important. La vraie source de tes réglages, c'est la page Configuration → Garry's Mod, pas les fichiers. Garde une note à côté de tes sauvegardes avec au moins :

  • ton Workshop Collection ID ;
  • ton Resource Lua Code ;
  • tes Initial Map / Custom Map et Initial Gamemode / Custom Gamemode ;
  • tes Additional Command Line Parameters, Additional Console Variables et Additional Server Settings.

⚠️ Dans ta note, ne recopie pas la clé qui suit -authkey : écris simplement que la ligne existe. La clé, tu peux la redemander sur https://steamcommunity.com/dev/apikey.

Et garde une copie sur ton PC : tes sauvegardes sont ton affaire, et elles partent avec l'instance si ton serveur est libéré.

✅ À retenir Sauvegarde data/, settings/, et ce que tu as déposé à la main. Note tes réglages AMP à part, sans la clé. Une sauvegarde arrête le serveur, sauf Backup While Running.


5. Update : quand et pourquoi #

Le bouton Update de la page Status va chercher ce que Start ne cherche jamais. Sur Garry's Mod, deux situations l'exigent.

Quand Garry's Mod lui-même change #

Le serveur doit être à la même version que le jeu des joueurs. Quand le jeu reçoit une mise à jour, ton serveur a besoin d'un Update.

Quand tu changes le contenu monté #

CSS Content Mode et TF2 Content Mode écrivent le fichier mount.cfg au démarrage, mais ne téléchargent le contenu que pendant un Update. L'aide d'AMP le dit d'ailleurs : « Update the server after changing this setting ».

Cas relevé sur une instance : mount.cfg déclarait les dossiers 232330 (Counter-Strike: Source Dedicated Server) et 232250 (Team Fortress 2 Dedicated Server), alors qu'aucun des deux n'existait. Le réglage était coché, l'Update n'avait jamais été fait. Les deux sont gratuits côté serveur, aucun achat n'est nécessaire.

N'oublie pas la suite, traitée au chapitre 6 : le contenu monté sur le serveur ne remplace pas celui des joueurs.

La bonne façon de faire un Update #

  1. Préviens tes joueurs avec say.
  2. Fais une sauvegarde.
  3. Clique sur Stop.
  4. Clique sur Update, et attends la fin.
  5. Clique sur Start.
  6. Lis la console jusqu'au bout du démarrage, à la recherche d'erreurs Lua nouvelles.

✅ À retenir Update quand le jeu change, et après chaque changement de CSS ou TF2 Content Mode. Toujours avec une sauvegarde avant et une lecture de console après.


6. Mettre à jour un addon proprement #

Un addon ou un gamemode déposé à la main #

  1. Fais une sauvegarde.
  2. Clique sur Stop.
  3. Remplace le dossier entier de l'addon dans garrysmod/addons/ (ou du gamemode dans garrysmod/gamemodes/) plutôt que de copier la nouvelle version par-dessus : un fichier retiré par l'auteur resterait sinon en place.
  4. Si tu avais modifié des fichiers de l'ancienne version, reporte tes modifications.
  5. Clique sur Start et lis la console.

Un addon du Workshop #

Tu ne modifies pas un addon du Workshop : c'est son auteur qui publie les nouvelles versions. Ce que tu contrôles :

  • le moment : les addons du Workshop sont montés au lancement, rien ne change pour ton serveur tant qu'il tourne. Redémarre, puis lis la console ;
  • le contenu de ta collection : une mise à jour peut faire apparaître un doublon, par exemple un pack qui embarque désormais une base que tu as déjà. Un seul exemplaire de chaque chose ;
  • le retrait : si un addon casse ton serveur, retire-le à la fois de ta collection et de Resource Lua Code. Les deux listes doivent rester identiques (voir le chapitre 4).

La règle d'or #

Un addon à la fois. Mets-en un à jour, redémarre, vérifie. Si tu en changes cinq d'un coup et que le serveur casse, tu ne sauras pas lequel accuser.

✅ À retenir À la main : sauvegarde, Stop, dossier entier remplacé, Start. Workshop : redémarrer, surveiller les doublons, retirer des deux listes. Toujours un addon à la fois.


✅ Checklist du chapitre #


❓ Si ça ne marche pas #

Un joueur banni est revenu après le redémarrage. Le writeid a été oublié. Bannis-le de nouveau avec banid, puis tape writeid tout de suite.

kickid ne trouve pas le joueur. La commande attend un userid, pas un pseudo. Tape status pour le lire, puis relance kickid.

Mon lua_run est coupé ou provoque une erreur bizarre. Tu as sans doute utilisé des guillemets doubles dans ton code. Remplace-les par des guillemets simples.

Après un changelevel, la carte ne change pas. Le nom tapé ne correspond sans doute à aucun .bsp présent : lis la réponse de la console juste après la commande. Retrouve le vrai nom du fichier (chapitre 5) et retape la commande.

J'ai coché CSS Content Mode et les textures manquent toujours. Vérifie d'abord que tu as fait un Update après avoir coché. Si c'est fait, le problème est peut-être chez le joueur : le chapitre 6 explique pourquoi.

Le serveur s'arrête toutes les heures. Le déclencheur de sauvegarde horaire est activé. Désactive-le dans Schedule et remplace-le par une sauvegarde de nuit.

Une étape qui coince ? Ouvre un ticket sur le site ou demande sur le Discord TeamKit. Le bot Guide connaît ces pages.