Garry's Mod's dedicated server installs from its own free app ID, separate from the paid client, and the gamemode you pick changes the sizing conversation more than almost any other detail — a sandbox box for four friends and a public DarkRP server want very different amounts of RAM before either one has a single Workshop addon loaded.Der Dedicated Server von Garry's Mod installiert sich über eine eigene, kostenlose App-ID, getrennt vom kostenpflichtigen Client, und der gewählte Gamemode verändert die Dimensionierungsfrage stärker als fast jedes andere Detail — eine Sandbox-Kiste für vier Freunde und ein öffentlicher DarkRP-Server wollen sehr unterschiedliche Mengen RAM, noch bevor auch nur ein einziges Workshop-Addon geladen ist.
Unlike Counter-Strike 2, Garry's Mod does split its dedicated server into its own SteamCMD app:Anders als Counter-Strike 2 teilt Garry's Mod seinen Dedicated Server tatsächlich in eine eigene SteamCMD-App auf:
+login anonymous even though the client itself (app 4000) is a paid gameApp-ID 4020 — Garry's Mod Dedicated Server, anonym installierbar mit +login anonymous, obwohl der Client selbst (App 4000) ein kostenpflichtiges Spiel istsrcds_run, sitting at the root of your install directory, not a raw binary you call directlydas Startskript ist srcds_run, im Wurzelverzeichnis deiner Installation, keine rohe Binary, die du direkt aufrufstsrcds_run is a wrapper, inherited from the old Source-1 hlds_run lineage: it sets up the library path, launches the real srcds_linux binary underneath it, and has its own crash-restart loop layered on top of whatever restart policy you give it in systemd. Keep that in mind in Step 6 — it explains a quirk that catches people later.srcds_run ist ein Wrapper, geerbt von der alten Source-1-Linie hlds_run: Es richtet den Library-Pfad ein, startet darunter die eigentliche srcds_linux-Binary und hat seine eigene Crash-Restart-Schleife, die über jeder Neustart-Policy liegt, die du ihm in systemd gibst. Behalte das für Schritt 6 im Hinterkopf — es erklärt eine Eigenheit, die Leute später überrascht.
Garry's Mod's Lua VM runs on one core per server instance, the same lesson as most Source-engine game servers: a fast single core beats a wide VPS with a mediocre clock, and adding vCPUs past what one server process can use does little on its own.Die Lua-VM von Garry's Mod läuft pro Server-Instanz auf einem Kern, dieselbe Lektion wie bei den meisten Source-Engine-Gameservern: Ein schneller Einzelkern schlägt einen breiten VPS mit mittelmäßigem Takt, und mehr vCPUs, als ein einzelner Serverprozess nutzen kann, bringen für sich genommen wenig.
RAM is where the gamemode matters. Sandbox, the default, is comparatively light at idle — most of its load comes from player-built physics contraptions rather than the gamemode's own code, so a handful of builders fits in 2 to 3 GiB without drama. TTT adds a moderate, mostly static addon stack (weapons, roles, maps) on top of vanilla sandbox and behaves similarly at a given player count. DarkRP is the heavy one: a large Lua codebase, dozens of jobs and doors, a persistent economy, and a stack of community addons all running think hooks and timers continuously, whether or not anyone is on the server. Budget 4 GiB or more for a real public DarkRP box once you add the addon list most servers actually run, and expect RAM to climb over days of uptime rather than staying flat — more on that in Step 6.Beim RAM kommt es auf den Gamemode an. Sandbox, die Standardeinstellung, ist im Leerlauf vergleichsweise leicht — der Großteil der Last stammt von Spieler-gebauten Physik-Konstruktionen, nicht vom Code des Gamemodes selbst, sodass eine Handvoll Bastler locker in 2 bis 3 GiB passt. TTT legt einen moderaten, größtenteils statischen Addon-Stack (Waffen, Rollen, Maps) auf das normale Sandbox obendrauf und verhält sich bei gleicher Spielerzahl ähnlich. DarkRP ist der Schwergewichtler: eine große Lua-Codebasis, Dutzende Jobs und Türen, eine dauerhafte Wirtschaft und ein Stapel Community-Addons, die alle ständig Think-Hooks und Timer laufen lassen, egal ob jemand auf dem Server ist. Plane 4 GiB oder mehr für eine echte öffentliche DarkRP-Kiste ein, sobald du die Addon-Liste ergänzt, die auf den meisten Servern tatsächlich läuft, und rechne damit, dass der RAM-Verbrauch über Tage der Laufzeit steigt statt konstant zu bleiben — mehr dazu in Schritt 6.
Deploy an Ubuntu LTS image, then do the security basics before anything is reachable: a non-root user, your SSH key on it, password login switched off, a firewall that defaults to deny. We cover that in connect to your VPS over SSH and secure your VPS.Setze ein Ubuntu-LTS-Image auf und erledige dann die Sicherheitsgrundlagen, bevor irgendetwas erreichbar ist: ein Non-Root-Nutzer mit deinem SSH-Key darauf, Passwort-Login ausgeschaltet, eine Firewall, die standardmäßig blockiert. Das behandeln wir unter über SSH mit deinem VPS verbinden und deinen VPS absichern.
Garry's Mod's Linux binaries are still 32-bit, so the 32-bit runtime is not optional the way it sometimes is on newer engines:Garry's Mods Linux-Binaries sind noch 32-Bit, die 32-Bit-Runtime ist also nicht optional, wie sie es bei neueren Engines manchmal ist:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tar
sudo useradd -m -s /bin/bash gmod
Run the server as this dedicated gmod account, never as root and never as your own login.Betreibe den Server über diesen dedizierten gmod-Account, niemals als root und niemals unter deinem eigenen Login.
Everything below runs as the gmod user:Alles Folgende läuft als der Nutzer gmod:
sudo -u gmod -i
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sSL https://media.steampowered.com/client/installer/steamcmd_linux.tar.gz | tar zxf -
./steamcmd.sh +force_install_dir /home/gmod/server \
+login anonymous \
+app_update 4020 validate \
+quit
Run the same command again after every Facepunch update. A client on a newer build can fail to join an older server outright, so a stale server is worth catching before players report it.Führe denselben Befehl nach jedem Facepunch-Update erneut aus. Ein Client auf einem neueren Build kann einem älteren Server komplett die Verbindung verweigern, es lohnt sich also, einen veralteten Server zu erwischen, bevor Spieler es melden.
The wrapper script lives at the root of your install:Das Wrapper-Skript liegt im Wurzelverzeichnis deiner Installation:
cd /home/gmod/server
./srcds_run -game garrysmod -console \
+map gm_construct \
+gamemode sandbox \
-port 27015 \
+maxplayers 16
-game garrysmod — tells srcds_run which content set to load; this is the flag that makes it a Garry's Mod server rather than any other Source game the same wrapper could launch-game garrysmod — sagt srcds_run, welches Content-Set geladen wird; dieses Flag macht es zu einem Garry's-Mod-Server statt zu irgendeinem anderen Source-Spiel, das derselbe Wrapper starten könnte+map gm_construct — the boot map; changing gamemode does not change map, so pick one that suits it (a DarkRP map, not gm_construct, for a DarkRP box)+map gm_construct — die Startmap; ein Wechsel des Gamemodes ändert nicht die Map, wähle also eine passende (eine DarkRP-Map, nicht gm_construct, für eine DarkRP-Kiste)+gamemode sandbox — swap for ttt or darkrp once the matching addon is installed under garrysmod/gamemodes/; the gamemode folder has to exist before the flag does anything+gamemode sandbox — gegen ttt oder darkrp tauschen, sobald das passende Addon unter garrysmod/gamemodes/ installiert ist; der Gamemode-Ordner muss existieren, bevor das Flag überhaupt etwas bewirkt-port 27015 — change it if you run more than one server on the box, and read Step 5 before you do-port 27015 — ändern, wenn du mehr als einen Server auf der Kiste betreibst, und lies vorher Schritt 5+maxplayers 16 — hard player cap; raising it does not raise the RAM budget above on its own, but it does raise how much of that budget gets used+maxplayers 16 — harte Spieler-Obergrenze; sie zu erhöhen erhöht das RAM-Budget von oben nicht von selbst, aber es erhöht, wie viel von diesem Budget tatsächlich genutzt wirdA public Garry's Mod server needs a Game Server Login Token, generated from your own Steam account against app 4020, or it runs unverified and can be rate-limited. Add it to garrysmod/cfg/server.cfg:Ein öffentlicher Garry's-Mod-Server braucht ein Game Server Login Token, erzeugt aus deinem eigenen Steam-Account gegen App 4020, sonst läuft er unverifiziert und kann ratenbegrenzt werden. Füge es in garrysmod/cfg/server.cfg ein:
hostname "My GMod Server"
sv_setsteamaccount YOUR_GSLT_HERE
rcon_password "CHANGE_THIS_RCON_PASSWORD"
sv_lan 0
Lock the file down as soon as you save it — a heredoc or editor run as the gmod user writes it under the default Ubuntu umask (022), which leaves new files at 644 — world-readable — with a live RCON password and Steam token sitting in plain text:Sperre die Datei ab, sobald du sie gespeichert hast — ein Heredoc oder Editor, ausgeführt als der Nutzer gmod, schreibt sie unter der Standard-Ubuntu-umask (022), was neue Dateien bei 644 belässt — für alle lesbar — mit einem aktiven RCON-Passwort und Steam-Token im Klartext:
chmod 600 /home/gmod/server/garrysmod/cfg/server.cfg
Treat the GSLT like a credential: it identifies this specific server to Steam, and reusing one token across two running servers makes them fight over the same identity. rcon_password travels over the same port as the game itself, not a separate one — once 27015 is opened to every player per Step 6, a firewall rule can no longer single out RCON traffic on that port. Keep remote RCON access to a VPN, or run your RCON client locally on the box over SSH, and rely on a long, random rcon_password as the actual barrier against anyone who can reach that port.Behandle das GSLT wie ein Credential: Es identifiziert diesen konkreten Server gegenüber Steam, und ein und dasselbe Token über zwei laufende Server hinweg wiederzuverwenden lässt beide um dieselbe Identität konkurrieren. rcon_password läuft über denselben Port wie das Spiel selbst, nicht über einen separaten — sobald 27015 gemäß Schritt 6 für jeden Spieler geöffnet ist, kann eine Firewall-Regel RCON-Traffic auf diesem Port nicht mehr gesondert herausfiltern. Beschränke entfernten RCON-Zugriff auf ein VPN, oder führe deinen RCON-Client lokal auf der Kiste über SSH aus, und verlasse dich auf ein langes, zufälliges rcon_password als eigentliche Barriere gegen jeden, der diesen Port erreichen kann.
To load an entire curated Workshop collection of maps and addons on startup, add its numeric collection ID to the launch line or server.cfg:Um beim Start eine ganze kuratierte Workshop-Collection aus Maps und Addons zu laden, füge ihre numerische Collection-ID zur Startzeile oder zu server.cfg hinzu:
+host_workshop_collection 123456789
Every client connecting downloads that same collection automatically, which is what keeps a modded server's addon list in sync across everyone who joins — confirm the exact current syntax against Facepunch's own wiki before you build a rotation around it, since Workshop handling has changed across updates before.Jeder verbindende Client lädt dieselbe Collection automatisch herunter, wodurch die Addon-Liste eines modifizierten Servers bei allen, die beitreten, synchron bleibt — prüfe die genaue aktuelle Syntax gegen Facepunchs eigenes Wiki, bevor du eine Rotation darauf aufbaust, da sich die Workshop-Handhabung über Updates hinweg schon geändert hat.
A lot of community maps and props reference Counter-Strike: Source materials rather than shipping their own, and Garry's Mod does not include that content by default. The standard fix is to install the free CS:S dedicated server content alongside it, anonymously, via its own SteamCMD app ID:Viele Community-Maps und -Props referenzieren Counter-Strike: Source-Materialien, statt eigene mitzuliefern, und Garry's Mod enthält diesen Content standardmäßig nicht. Die Standardlösung ist, den kostenlosen CS:S-Dedicated-Server-Content daneben zu installieren, anonym, über dessen eigene SteamCMD-App-ID:
./steamcmd.sh +force_install_dir /home/gmod/css-content \
+login anonymous \
+app_update 232330 validate \
+quit
Then point Garry's Mod at that content directory in garrysmod/cfg/mount.cfg — check the current key format against the Garry's Mod wiki's content-mounting page, since a wrong path here fails silently: the server starts fine and just shows the missing-texture checkerboard on anything that needed the mounted assets.Verweise Garry's Mod dann in garrysmod/cfg/mount.cfg auf dieses Content-Verzeichnis — prüfe das aktuelle Schlüsselformat gegen die Content-Mounting-Seite des Garry's-Mod-Wikis, denn ein falscher Pfad scheitert hier still: Der Server startet einwandfrei und zeigt bei allem, was die eingebundenen Assets gebraucht hätte, nur das Fehltextur-Schachbrettmuster.
Garry's Mod needs 27015 reachable, and — the same catch as most Source-family games — as both UDP and TCP, not just one:Garry's Mod braucht 27015 erreichbar, und — dieselbe Falle wie bei den meisten Source-Familie-Spielen — als sowohl UDP als auch TCP, nicht nur eins:
sudo ufw allow 27015/tcp
sudo ufw allow 27015/udp
Confirm ufw is actually enforcing anything first: sudo ufw status. A fresh Ubuntu install ships with it inactive, and an allow rule against an inactive firewall is a silent no-op until you run sudo ufw enable.Bestätige zuerst, dass ufw überhaupt etwas durchsetzt: sudo ufw status. Eine frische Ubuntu-Installation liefert es inaktiv aus, und eine allow-Regel gegen eine inaktive Firewall ist ein stiller No-op, bis du sudo ufw enable ausführst.
Read this before you buy: on NAT IPv4, you get a small, fixed set of forwarded ports rather than the ability to open anything you like, and whether 27015 is in that set depends on the plan — confirm it rather than assuming. If it is not forwarded, or you want it guaranteed, a dedicated IPv4 is available on request by e-mail rather than as a self-service add-on. Background on the trade-off is in NAT IPv4 vs a dedicated IP and NAT IPv4, ports and forwarding.Lies das, bevor du kaufst: Bei NAT-IPv4 bekommst du einen kleinen, festen Satz weitergeleiteter Ports statt der Möglichkeit, beliebige zu öffnen, und ob 27015 in diesem Satz enthalten ist, hängt vom Tarif ab — bestätige es, statt es anzunehmen. Ist er nicht weitergeleitet, oder willst du ihn garantiert, ist eine dedizierte IPv4 auf Anfrage per E-Mail verfügbar statt als Self-Service-Add-on. Hintergrund zu diesem Trade-off findest du unter NAT IPv4 vs. dedizierte IP und NAT IPv4, Ports und Weiterleitung.
Save as /etc/systemd/system/gmod.service:Speichere als /etc/systemd/system/gmod.service:
[Unit]
Description=Garry's Mod dedicated server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=gmod
WorkingDirectory=/home/gmod/server
ExecStart=/home/gmod/server/srcds_run -game garrysmod -console +map gm_construct +gamemode sandbox -port 27015 +maxplayers 16
Restart=on-failure
RestartSec=10
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target
srcds_run already retries on a crash by itself, so this Restart=on-failure is a backstop for the rarer case where the wrapper process dies too, not the primary safety net. After sudo systemctl enable --now gmod, confirm a stop actually stops it rather than leaving an orphan bound to the port: sudo systemctl stop gmod followed by ss -tulnp | grep 27015 should show nothing.srcds_run versucht bei einem Absturz bereits selbst einen erneuten Start, dieses Restart=on-failure ist also ein Backstop für den selteneren Fall, dass auch der Wrapper-Prozess stirbt, nicht das primäre Sicherheitsnetz. Bestätige nach sudo systemctl enable --now gmod, dass ein Stopp ihn tatsächlich stoppt, statt eine Leiche zurückzulassen, die noch an den Port gebunden ist: sudo systemctl stop gmod, gefolgt von ss -tulnp | grep 27015, sollte nichts anzeigen.
This is the thing that bites later, and it is specific to DarkRP more than any other gamemode: a heavy addon stack with jobs, doors and a live economy tends to grow its memory footprint over days of continuous uptime rather than holding flat, and a server nobody restarts eventually gets sluggish or crashes at the worst moment. Most public DarkRP servers run a scheduled restart — a nightly systemctl restart gmod from cron or a systemd timer, timed for the server's quietest hour — as ordinary maintenance, not a workaround for a bug you caused.Das ist die Sache, die einen später beißt, und sie ist spezifisch für DarkRP mehr als für jeden anderen Gamemode: Ein schwerer Addon-Stack mit Jobs, Türen und einer laufenden Wirtschaft neigt dazu, seinen Speicher-Footprint über Tage durchgehender Laufzeit hinweg wachsen zu lassen, statt konstant zu bleiben, und ein Server, den niemand neu startet, wird irgendwann träge oder stürzt im ungünstigsten Moment ab. Die meisten öffentlichen DarkRP-Server fahren einen geplanten Neustart — ein nächtliches systemctl restart gmod aus cron oder einem systemd-Timer, gelegt auf die ruhigste Stunde des Servers — als normale Wartung, nicht als Workaround für einen selbst verursachten Bug.
Updates are the same SteamCMD command from Step 2, run again:Updates sind derselbe SteamCMD-Befehl aus Schritt 2, erneut ausgeführt:
sudo -u gmod /home/gmod/steamcmd/steamcmd.sh +force_install_dir /home/gmod/server \
+login anonymous +app_update 4020 validate +quit
sudo systemctl restart gmod
Full disclosure: this is what we sell. A DarkRP or TTT server with a real workshop collection and CS:S content mounted in wants Pro's 4 vCPU, 8 GiB and 120 GB disk for headroom on addon RAM and asset storage; a small sandbox server for friends is fine on Standard (2 vCPU, 4 GiB, 80 GB) and only worth moving up once the addon list and player count both grow.Zur vollen Transparenz: Das ist, was wir verkaufen. Ein DarkRP- oder TTT-Server mit einer echten Workshop-Collection und eingebundenem CS:S-Content will die 4 vCPU, 8 GiB und 120 GB Speicher von Pro als Spielraum für Addon-RAM und Asset-Storage; ein kleiner Sandbox-Server für Freunde ist auf Standard (2 vCPU, 4 GiB, 80 GB) gut aufgehoben und lohnt sich erst höherzustufen, wenn Addon-Liste und Spielerzahl beide wachsen.
Linux KVM VPS — EUR 4.99 to EUR 59.99 a month, on our own single-tenant bare metal in Dallas, TX and Charlotte, NC. Full hardware virtualisation (KVM), your own kernel, full root. Six tiers, vps-starter to vps-ultra. Starter is 1 vCPU, 1 GiB RAM, 25 GB disk.Linux-KVM-VPS — 4,99 bis 59,99 EUR im Monat, auf unserer eigenen Single-Tenant-Bare-Metal-Hardware in Dallas, TX und Charlotte, NC. Vollständige Hardware-Virtualisierung (KVM), eigener Kernel, volles Root. Sechs Tarife, vps-starter bis vps-ultra. Starter hat 1 vCPU, 1 GiB RAM, 25 GB Speicher.
You order in the shop, pay by card (Stripe) or SEPA bank transfer, and your login details are e-mailed to you once the service is set up. Support is e-mail, run by one person, with no guaranteed response time. All prices are final totals under the German small-business rule (§19 UStG); no VAT is added or shown.Du bestellst im Shop, zahlst per Karte (Stripe) oder SEPA-Überweisung, und deine Zugangsdaten werden dir per E-Mail zugeschickt, sobald der Dienst eingerichtet ist. Support läuft per E-Mail, von einer einzelnen Person betrieben, ohne garantierte Reaktionszeit. Alle Preise sind Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer ausgewiesen.
Order vps-pro → · Linux KVM VPS overviewvps-pro bestellen → · Übersicht Linux-KVM-VPS
Written by the person who runs overnight.host: a small, honest hosting company on dedicated bare metal — Linux VPS, game servers, web hosting. Live status at up.overnight.host.Geschrieben von der Person, die overnight.host betreibt: ein kleines, ehrliches Hosting-Unternehmen auf dedizierter Bare-Metal-Hardware — Linux-VPS, Gameserver, Webhosting. Live-Status unter up.overnight.host.
Facepunch ships the dedicated server as its own free SteamCMD app, ID 4020, distinct from the paid client at app 4000. That is why +login anonymous works for the server install even though playing the client normally requires owning the game.Facepunch liefert den Dedicated Server als eigene, kostenlose SteamCMD-App, ID 4020, getrennt vom kostenpflichtigen Client bei App 4000. Deshalb funktioniert +login anonymous für die Server-Installation, obwohl das Spielen des Clients normalerweise den Besitz des Spiels voraussetzt.
For anything public, yes. A Game Server Login Token for app 4020, set with sv_setsteamaccount in server.cfg, is what Steam uses to verify your server. Without one, expect it to run unverified rather than listed normally.Für alles Öffentliche: ja. Ein Game Server Login Token für App 4020, gesetzt mit sv_setsteamaccount in server.cfg, ist das, womit Steam deinen Server verifiziert. Ohne eines läuft er erwartungsgemäß unverifiziert, statt normal gelistet zu werden.
Plain sandbox with a handful of builders is comfortable in 2 to 3 GiB. A real public DarkRP server, with its usual stack of jobs, doors and economy addons, wants 4 GiB or more, and that number climbs with uptime rather than staying flat — which is the reason scheduled restarts are normal practice rather than a red flag.Reines Sandbox mit einer Handvoll Bastlern ist komfortabel in 2 bis 3 GiB. Ein echter öffentlicher DarkRP-Server, mit seinem üblichen Stapel aus Jobs, Türen und Wirtschafts-Addons, will 4 GiB oder mehr, und diese Zahl steigt mit der Laufzeit statt konstant zu bleiben — weshalb geplante Neustarts normale Praxis sind und kein Warnsignal.
Check the port first: 27015 needs to be forwarded as both UDP and TCP, and on a NAT IPv4 plan whether it is forwarded at all depends on which ports are in your set. Confirm that before chasing anything else, or ask about a dedicated IPv4 if you want the default port guaranteed.Prüfe zuerst den Port: 27015 muss sowohl als UDP als auch als TCP weitergeleitet sein, und bei einem NAT-IPv4-Tarif hängt es davon ab, welche Ports in deinem Satz enthalten sind, ob er überhaupt weitergeleitet ist. Bestätige das, bevor du irgendetwas anderem hinterherjagst, oder frag nach einer dedizierten IPv4, wenn du den Standardport garantiert haben willst.
No — the free CS:S dedicated server content, app ID 232330, installs anonymously through the same SteamCMD flow as the game server itself, with no purchase or ownership required. Pointing mount.cfg at that install directory is what actually makes the content available in-game.Nein — der kostenlose CS:S-Dedicated-Server-Content, App-ID 232330, installiert sich anonym über denselben SteamCMD-Ablauf wie der Game-Server selbst, ohne Kauf oder Besitz vorauszusetzen. mount.cfg auf dieses Installationsverzeichnis zu verweisen ist das, was den Content tatsächlich im Spiel verfügbar macht.
Prices are final totals; no VAT is shown (§19 UStG). Need something the shop does not list? Email us for a written offer.Alle Preise sind Endpreise ohne ausgewiesene USt. (§19 UStG). Du brauchst etwas, das nicht im Shop steht? Schreib uns für ein schriftliches Angebot.
Order now →Jetzt bestellen → Request a custom configIndividuelle Konfiguration anfragen