// VPS

Steam-gameserver op je VPS: SteamCMD, poorten en systemd

Steam-gameserver op je VPS: SteamCMD, poorten en systemd

Met SteamCMD, de commandoregelversie van Steam, zet je de dedicated server van games als Valheim, Palworld en Satisfactory op een Linux-VPS. Je installeert het pakket steamcmd, haalt de server binnen met +login anonymous +app_update en het app-ID van de server, zet de spelpoorten open in de firewall en laat een systemd-service hem starten en bijwerken.

Wanneer je zelf een Steam-server op een VPS draait

Een eigen VPS is logisch als je meer wilt dan één server: Valheim en Palworld naast elkaar, een Discord-bot erbij, eigen scripts, mods die je zelf bijhoudt, of gewoon leren hoe het werkt. Je krijgt root-toegang en beslist alles zelf, ook wanneer er geüpdatet wordt.

Wil je vooral spelen, dan is een kant-en-klare gameserver minder werk: het paneel regelt installatie, updates en instellingen. Hoe dat bij Valheim gaat, lees je in Valheim dedicated server: de complete gids, en voor Satisfactory in Satisfactory dedicated server instellen.

Welke VPS voor een Steam-gameserver?

Kies Linux, bijvoorbeeld Ubuntu 22.04 of nieuwer: de meeste Steam-servers hebben een Linux-versie, en je houdt meer geheugen over dan met Windows. Voor de cpu geldt wat voor bijna elke gameserver geldt: de wereldsimulatie leunt op één hoofdthread, dus een snelle core telt meer dan veel cores. Daarom past de Premium VPS met Ryzen 9 hier goed: AMD Ryzen 9 9950X*, DDR5 en NVMe. Voor het geheugen gebruiken we deze ondergrenzen, met ongeveer 1 GB extra voor het besturingssysteem:

GameGeheugen voor de serverPremium VPSPer maand
Valheim (tot 4 spelers)vanaf 4 GB, vanaf 5 spelers 1–2 GB extra4 vCores, 8 GB€ 15,30
Palworld12–16 GB6 vCores, 16 of 20 GB€ 28,00 / € 33,60
Rustvanaf 12 GB6 vCores, 16 GB€ 28,00

Een kleine Valheim-server voor een vaste groep kan ook op de KVM VPS op EPYC: 4 vCores en 8 GB kosten daar € 9,50 per maand. De EPYC 7443P haalt tot 4,0 GHz, dus per core minder dan de Ryzen; dat merk je vooral als de wereld en het aantal spelers groeien. Draai je meer dan één game, tel het geheugen dan op; hoe je dat aanpakt, staat in Meerdere gameservers op één VPS. Hoeveel geheugen Palworld echt vraagt, lees je in Hoeveel RAM heeft je Palworld-server nodig?

* of AMD Ryzen 9 7950X3D, afhankelijk van de node.

SteamCMD installeren op Ubuntu

SteamCMD staat in de multiverse-repository van Ubuntu en heeft 32-bitsbibliotheken nodig. Log in via SSH en voer uit:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd

Tijdens de installatie vraagt het pakket je de licentie van Steam te accepteren. Het programma komt in /usr/games/steamcmd. Maak daarna een aparte gebruiker voor je servers, zodat een lek in een gameserver niet meteen root-toegang geeft:

sudo adduser --disabled-password --gecos "" steam
sudo -iu steam

De server downloaden met app_update

Elke dedicated server heeft een eigen app-ID op Steam. Als gebruiker steam haal je bijvoorbeeld Valheim zo binnen:

steamcmd +force_install_dir /home/steam/servers/valheim +login anonymous +app_update 896660 validate +quit

Zet +force_install_dir altijd vóór +login; andersom geeft SteamCMD een waarschuwing. Met +login anonymous download je de meeste dedicated servers zonder Steam-account, dus je eigen wachtwoord hoeft niet op de VPS. validate controleert alle bestanden en zet gewijzigde bestanden terug. Gebruik het bij de eerste download en als iets kapot lijkt, niet bij elke update als je in de servermap zelf bestanden hebt aangepast.

Mappenboom van een Steam-gameserver op een VPS: SteamCMD-servers onder /home/steam, Valheim-wereld in worlds_local en valheim.service in systemd
Wat staat waar: de server, de wereld en de systemd-service, met Valheim als voorbeeld.
GameApp-ID van de serverLinux-server
Valheim896660ja
Palworld2394010ja
Satisfactory1690800ja
Project Zomboid380870ja
Rust258550ja
7 Days to Die294420ja
Enshrouded2278520nee, alleen Windows
ARK: Survival Ascended2430930nee, alleen Windows

Eerlijk over Windows-only servers. Enshrouded en ARK: Survival Ascended hebben geen Linux-server. Je kunt de Windows-versie op Linux binnenhalen met +@sSteamCmdForcePlatformType windows vóór +login en hem onder Proton of Wine starten, maar dat is niet officieel ondersteund en een game-update kan het zomaar breken. Liever stabiel? Neem Windows Server (bij de KVM VPS en de VDS te kiezen bij het bestellen, bij de Premium VPS te installeren via het VPS-paneel), of een kant-en-klare server zoals in Enshrouded-server maken.

Poorten en firewall

Zet alleen de poorten open die je game gebruikt, en SSH altijd als eerste, anders sluit je jezelf buiten:

sudo ufw allow OpenSSH
sudo ufw allow 2456:2457/udp   # Valheim: poort en poort+1
sudo ufw allow 8211/udp        # Palworld
sudo ufw allow 7777            # Satisfactory, TCP en UDP
sudo ufw allow 8888/tcp        # Satisfactory, sinds versie 1.1
sudo ufw enable

Kies je in de startopties een andere poort, pas de regel dan mee aan. Hoe je SSH en de rest van de VPS dichtzet, lees je in VPS beveiligen: de eerste 30 minuten.

Automatisch starten en updaten met systemd

Valheim levert een startscript mee, start_server.sh, maar volgens Iron Gate wordt dat bestand bij elke update teruggezet. Zet je instellingen daarom in een eigen service, /etc/systemd/system/valheim.service:

[Unit]
Description=Valheim dedicated server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
WorkingDirectory=/home/steam/servers/valheim
Environment=LD_LIBRARY_PATH=/home/steam/servers/valheim/linux64
Environment=SteamAppId=892970
ExecStartPre=/usr/games/steamcmd +force_install_dir /home/steam/servers/valheim +login anonymous +app_update 896660 +quit
ExecStart=/home/steam/servers/valheim/valheim_server.x86_64 -name "Onze wereld" -port 2456 -world "Dedicated" -password "kies-iets-langs" -public 1
KillSignal=SIGINT
TimeoutStartSec=600
TimeoutStopSec=60
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
journalctl -u valheim -f
  • ExecStartPre haalt bij elke start eerst de nieuwste versie op. Dat is nodig, want na een game-update kunnen spelers vaak pas weer verbinden als de server dezelfde versie draait. Updaten is daarmee sudo systemctl restart valheim; TimeoutStartSec=600 geeft een grote update de tijd.
  • KillSignal=SIGINT stopt de server zoals Ctrl+C in de console: de manier van afsluiten die Iron Gate zelf voorschrijft. TimeoutStopSec=60 geeft hem een minuut om netjes te stoppen.
  • Restart=on-failure start hem opnieuw na een crash, en enable zorgt dat hij na een herstart van de VPS vanzelf opstart.

Het wachtwoord moet minstens 5 tekens hebben en mag niet in de servernaam staan, anders start Valheim niet. Voor Palworld bouw je de service op dezelfde manier, met PalServer.sh in de installatiemap als ExecStart en app-ID 2394010; kijk in de documentatie van elke game welke startopties hij kent. Wil je elke nacht een verse herstart, zet dan in de crontab van root: 0 5 * * * systemctl restart valheim.

Back-ups en saves: waar staat je wereld?

Bij Valheim op Linux staat de wereld niet in de servermap, maar in de thuismap van de gebruiker: /home/steam/.config/unity3d/IronGate/Valheim/worlds_local. Valheim maakt zelf ook automatische back-ups, maar die staan op dezelfde schijf. Regel daarom zelf een kopie, bijvoorbeeld elke nacht met cron als gebruiker steam (maak eerst ~/backups aan):

30 4 * * * tar -czf /home/steam/backups/valheim-$(date +\%F).tar.gz -C /home/steam/.config/unity3d/IronGate/Valheim worlds_local

In een crontab moet het procentteken een backslash krijgen, vandaar \%F. Ruim oude archieven op, bijvoorbeeld met find /home/steam/backups -mtime +14 -delete, en haal ze regelmatig naar een andere machine of je eigen pc, bijvoorbeeld via SFTP. Een back-up die alleen op dezelfde VPS staat, is geen back-up. Bij andere games staan de saves elders; zoek per game op welke map je moet meenemen voordat je iets wist of opnieuw installeert.

Veelgestelde vragen

Wat is SteamCMD?

SteamCMD is de commandoregelversie van de Steam-client van Valve. Je gebruikt hem om dedicated servers van Steam-games te downloaden en bij te werken, zonder grafische omgeving. Op Ubuntu installeer je hem als pakket steamcmd uit de multiverse-repository.

Moet ik inloggen met mijn eigen Steam-account?

Voor de meeste dedicated servers niet: met +login anonymous download je onder meer Valheim, Palworld, Satisfactory en Rust zonder account. Zo hoeft er geen wachtwoord van je eigen Steam-account op de VPS te staan. Vraagt een server toch om een account, dan staat dat in de documentatie van die game.

Welke gameservers draaien niet op Linux?

Enshrouded en ARK: Survival Ascended hebben alleen een Windows-server. Op Linux kan dat onder Proton of Wine, maar dat is niet officieel ondersteund en kan bij een game-update breken. Kies voor die games Windows Server op je VPS of een kant-en-klare gameserver.

Hoeveel geheugen heeft een Steam-gameserver nodig?

Dat verschilt per game. Wij gaan uit van minimaal 4 GB voor Valheim (vanaf 5 spelers 1 tot 2 GB extra), 12 tot 16 GB voor Palworld en minimaal 12 GB voor Rust en ARK. Tel daar ongeveer 1 GB voor het besturingssysteem bij, en tel bij meerdere servers het geheugen op.

Verder lezen

// ZELF PROBEREN
Je Minecraft-server binnen 60 seconden online
Bekijk de pakketten →