SSD Nodes Learn Hosting plans →
Gidsen Matt ConnorDoor Matt Connor

FiveM server installeren op een VPS: handleiding

Installeer FXServer op Ubuntu, kies de juiste artifact build en configureer uw Cfx.re licentiesleutel. Open poort 30120 en beveilig txAdmin voor een veilige server.

Wat een FiveM-server op een VPS nodig heeft

Een FiveM-server op een VPS bestaat uit één Linux-gebruiker zonder root-rechten, één artifact-build van Cfx.re, één licentiesleutel en één poort die zowel voor TCP als UDP openstaat. De installatie duurt ongeveer tien minuten. De rest van deze handleiding behandelt de onderdelen die bepalen of de server speelbaar is: de snelheid van een enkele CPU-kern, het geheugen dat uw resources nodig hebben en een beheerpaneel dat nooit op een openbaar adres toegankelijk mag zijn.

Drie vereisten staan vast. De server-binaries, artifacts genoemd, zijn afkomstig van de officiële build-lijst van Cfx.re. De licentiesleutel komt uit het Cfx.re-portaal op portal.cfx.re, de dienst die in oudere handleidingen keymaster wordt genoemd, en de sleutel is gekoppeld aan het adres van de machine die deze gebruikt. Elke speler die verbinding maakt, heeft een eigen legitiem exemplaar van GTA V (Grand Theft Auto V) nodig op Steam, de Rockstar Games Launcher of Epic Games, plus een gratis Cfx.re-account. De client controleert bij het opstarten of het spel in bezit is, dus een server die op basis van iets anders is gebouwd, werkt niet; er wordt hier geen enkele vorm van workaround-content behandeld.

Het hosten van de server is een andere taak dan het spelen op de machine zelf, wat of u het spel zelf op een VPS kunt draaien betreft, en is een afzonderlijke vraag met een ander antwoord.

Waarom de single-core snelheid bepaalt hoe een FiveM-server aanvoelt

FXServer, het binary-bestand van de FiveM-server, voert de gamelogica uit op één hoofdthread. Elk resource-script, elke event-handler en elke statusupdate verloopt via die ene lus. Extra cores helpen de kernel, de database en de netwerkstack. Ze splitsen de gamelus niet. Een server met 4 vCPU's op een trage core zal dus haperen onder belasting, terwijl een server met 2 vCPU's op een snelle core soepel blijft draaien.

Dit draait de gebruikelijke gewoonte bij het kopen van een VPS om, waarbij het aantal cores het belangrijkste getal is. Controleer de snelheid per core voordat u geld uitgeeft. Begin met het CPU-model:

lscpu | grep -E 'Model name|MHz'

Zoek vervolgens de gepubliceerde single-thread score van dat model op. De PassMark single-thread rating en de Geekbench single-core score zijn beide openbaar en meten beide het werk van één core; dit is het getal dat hier telt. Meet daarna de server die u daadwerkelijk heeft gekregen:

sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Lees de events per second-regel. Voer hetzelfde commando uit bij twee potentiële providers om ze eerlijk te vergelijken, omdat de werklast identiek is en beperkt blijft tot één core. Een reproduceerbare VPS-benchmark laat zien hoe u die getallen vergelijkbaar houdt tussen verschillende servers.

Controleer vervolgens of de core echt van u is:

vmstat 1 5

De laatste kolom, st, is steal time: het deel van de tijd dat uw virtuele CPU klaar was om te draaien, maar de hypervisor u liet wachten. Een constant cijfer boven 1 of 2 betekent dat u een fysieke core deelt met drukke buren, en een gamelus voelt dat direct als rubber banding. Steal time door een luidruchtige buur beschrijft hoe u die kolom leest en wat u eraan kunt doen.

Geheugengebruik schaalt mee met de resources die u draait, niet alleen met het aantal slots. De basis-serverdata van Cfx.re draait in een paar honderd megabyte. Een roleplay-framework met veertig of vijftig resources en een MariaDB-database op dezelfde server is een andere machine: 4 GB is een verstandig minimum en 8 GB is comfortabel bij 32 tot 64 slots. Dit zijn typische cijfers die door community-setups worden gepubliceerd; beschouw ze als startpunt en monitor free -m onder werkelijke spelersbelasting.

Gebruiker aanmaken en afhankelijkheden installeren

Draai de server als een gewone gebruiker, nooit als root. Hiervoor zijn twee redenen. Root is een slechte gewoonte voor elke service die verbonden is met het internet. Daarnaast draait het Linux-artifact binnen een gebundeld Alpine Linux root-bestandssysteem. Bestanden die door root worden uitgepakt, kunnen door niemand anders worden uitgevoerd; dit is de meest voorkomende reden waarom een nieuwe installatie niet wil starten.

sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivem

Alles hieronder wordt uitgevoerd als de fivem gebruiker. xz-utils is vereist omdat de download een .tar.xz archief is, en git wordt gebruikt om de basis-serverdata te klonen.

Een vastgepinde artifact-build downloaden

De Linux-build bevindt zich in het build_proot_linux-kanaal van de Cfx.re artifact-server. De downloadpagina van de Cfx.re-server markeert één build als Recommended en een nieuwere als Latest. Beide labels verschuiven naar nieuwe builds zodra er nieuwe versies verschijnen. Pin in plaats daarvan de genummerde map. Wanneer u uw server volgende maand opnieuw opbouwt, gebruikt u hetzelfde binaire bestand als deze maand. Een upgrade wordt zo een bewuste keuze.

mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35245-6efb47dff473c0e2a12fb50b08d74c0eb24a50d5/fx.tar.xz
tar xf fx.tar.xz
ls

Build 35245 droeg het Recommended-label toen ik op 9 oktober 2026 de downloadpagina van de Cfx.re-server bekeek. Open die pagina, kies Linux en kopieer de mapnaam uit de huidige fx.tar.xz-link, die bestaat uit het buildnummer plus een commit-hash, naar de URL. De oude lijst met artifact-mappen waar veel handleidingen nog naar verwijzen, leidt nu door naar dezelfde pagina.

Een vastgepinde build heeft een beperkte houdbaarheid. Cfx.re ondersteunt een Recommended-artifact tot zes weken na de opvolger. Het beleid stelt dat niet-ondersteunde server-artifacts die ouder zijn dan drie maanden, niet meer zichtbaar zijn in de serverbrowser. Een verouderde build blijft draaien, maar spelers kunnen er niet meer via de browser bij. Plan daarom upgrades in uw agenda in plaats van deze voor altijd vast te pinnen.

ls zou nu run.sh en een alpine-map moeten tonen. Die map is de kern van de oplossing: het Linux-artifact bevat een eigen klein Alpine root-bestandssysteem en start de server daarbinnen met behulp van proot, een userspace-tool die chroot emuleert zonder root-rechten. Daarom werkt één download op Ubuntu, Debian en Rocky zonder distributiespecifieke pakketten.

Kloon nu de basis-serverdata, die de standaard resources bevat die uw server.cfg opstart:

git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-data

Verkrijg een licentiesleutel en schrijf server.cfg

Meld u aan op portal.cfx.re met uw Cfx.re-account en maak een serversleutel aan. Het portaal vraagt om het IP-adres van de machine die de sleutel gaat gebruiken; de sleutel wordt aan dat adres gekoppeld. Verhuizen naar een nieuwe VPS betekent dat u de sleutel in het portaal moet bewerken, niet dat u een tweede sleutel moet aanmaken. De wijziging wordt direct doorgevoerd, maar FXServer valideert deze pas opnieuw bij een herstart.

Schrijf ~/FXServer/server-data/server.cfg:

endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap

sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false

sv_licenseKey ChangeMe

add_ace group.admin command allow
add_principal identifier.fivem:1 group.admin

sv_maxclients accepteert een waarde van 1 tot 2048. Een waarde van 32 of hoger vereist dat onesync is ingesteld op on of legacy, en een waarde boven 64 vereist on. OneSync is de modus voor statusbewustzijn van de server en stelt de server in staat om het lage aantal slots van het basisspel te overschrijden. Het instellen van 128 slots terwijl OneSync is uitgeschakeld, resulteert niet in 128 slots, maar in een configuratie die de server weigert.

sv_licenseKey bevat de sleutel zonder aanhalingstekens en zonder spaties aan het einde. FXServer splitst die regel op witruimte; één extra teken zorgt er dus voor dat de validatie faalt en de server niet start.

rcon_password ontbreekt bewust in dat bestand. RCON (remote console) wordt alleen ingeschakeld wanneer de variabele is ingesteld en luistert vervolgens op dezelfde UDP-poort als het spel. Een RCON-wachtwoord op een publieke poort is een extern commandokanaal naar uw server. Laat dit oningesteld tenzij u een specifieke behoefte heeft, en kies een lang en willekeurig wachtwoord als u het wel gebruikt.

sv_scriptHookAllowed blijft false. De officiële documentatie geeft aan dat dit niet wordt aanbevolen, omdat het toestaan van Script Hook V-clients de server kwetsbaar maakt voor misbruik aan de clientzijde.

add_principal identifier.fivem:1 verleent beheerdersrechten aan Cfx.re-account-ID 1. Vervang de 1 door uw eigen numerieke ID, anders verleent u beheerdersrechten aan het account van iemand anders en heeft u zelf geen rechten.

Start de server eenmaal handmatig:

cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfg

Vraag vanuit een tweede SSH-sessie informatie op over de server:

curl -s http://127.0.0.1:30120/info.json | head -c 200

JSON-uitvoer met uw servervariabelen en resources betekent dat FXServer is gebonden en reageert. Connection refused betekent dat de poort niet is gebonden; lees in dat geval de console-uitvoer in plaats van te gissen.

Een server zonder sleutel toont dit bericht en stopt:

This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.

Het bericht verwijst nog naar het oude keymaster-adres. Dat adres leidt naar hetzelfde Cfx.re-portaal. Als de sleutel is ingesteld en de server weigert nog steeds te draaien, is de gebruikelijke oorzaak dat het IP-adres dat bij de sleutel is geregistreerd niet langer overeenkomt met deze machine.

Welke poorten moet een FiveM-server open hebben?

Poort 30120, via TCP (transmission control protocol) en UDP (user datagram protocol). FiveM gebruikt één poortnummer voor twee protocollen en heeft beide nodig. Open alleen TCP en het symptoom is verwarrend: http://your.ip:30120/info.json antwoordt in een browser, dus de server lijkt in orde, terwijl de gameclient blijft hangen op Failed to get info from server en nooit verbinding maakt, omdat de query van de client en het gameverkeer via UDP verlopen.

sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbose

Houd een tweede SSH-sessie open terwijl u een firewall inschakelt. De basis van ufw voor een VPS legt het standaard 'deny'-beleid uit, waardoor de bovenstaande regels op zichzelf voldoende zijn.

De meeste providers draaien ook een netwerkfirewall buiten de guest, die wordt beheerd via het paneel in plaats van via de shell. Een ufw-regel zegt niets over die laag. Wanneer TCP van buitenaf antwoordt en spelers nog steeds geen verbinding kunnen maken, monitor dan het netwerkverkeer terwijl iemand het probeert:

sudo tcpdump -ni any udp port 30120

Als er pakketten aankomen, is de externe firewall in orde en ligt de fout binnen de server. Stilte betekent dat iets voor de server de pakketten tegenhoudt; controleer in dat geval het paneel van de provider.

Beheer de server met txAdmin zonder deze bloot te stellen

txAdmin wordt meegeleverd in het artifact dat u reeds heeft gedownload. Start run.sh zonder +exec argument en er verschijnt een webpaneel op TCP-poort 40120. Vervolgens worden de URL van het paneel en een tijdelijke PIN naar de console geschreven. U gebruikt deze PIN eenmalig om uw Cfx.re-account te koppelen; daarna logt u in met het beheerdersaccount dat wordt aangemaakt.

txAdmin heeft geen standaardwachtwoord, dus het risico is niet een wachtwoord dat u bent vergeten te wijzigen. Het risico is wat het paneel is: een console op afstand. Het herstart de server, bewerkt server.cfg, implementeert serverdata en voert commando's uit als uw servergebruiker. Als u 40120 bereikbaar laat vanaf het internet, plaatst u een inlogpagina voor al deze functies op een openbaar adres, en scanners vinden open paneelpoorten binnen enkele uren. Open poort 40120 niet in de firewall. Benader deze via een SSH-tunnel vanaf uw eigen machine:

ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IP

Open vervolgens http://127.0.0.1:40120 in uw browser. Het verkeer van het paneel verloopt via de SSH-verbinding en de poort blijft voor iedereen anders gesloten.

Er is één valkuil die u moet kennen voordat u dit op een andere manier probeert op te lossen. txAdmin leest TXHOST_INTERFACE (standaard 0.0.0.0) om te bepalen aan welke interface het moet binden, en de documentatie is expliciet dat dezelfde waarde wordt afgedwongen voor FXServer. Als u dit instelt op 127.0.0.1 om het paneel te verbergen, bindt u ook de gameserver aan loopback, waardoor geen enkele speler de server kan bereiken. Sluit de paneelpoort met de firewall, niet met die variabele. Om het paneel naar een andere poort te verplaatsen, stelt u TXHOST_TXA_PORT in, wat elke waarde accepteert behalve 30120. De oudere +set txAdminPort convar verschijnt in veel handleidingen; de eigen documentatie van txAdmin markeert deze als verouderd en stelt dat deze in een toekomstige release niet meer zal werken.

De server actief houden na het uitloggen

bash run.sh stopt zodra uw SSH-sessie wordt beëindigd. tmux is handig tijdens het testen: voer tmux new -s fivem uit, start de server, druk op Ctrl-b en vervolgens op d om los te koppelen, en gebruik tmux attach -t fivem om terug te keren. Een tmux-sessie overleeft een herstart niet, dus alles wat belangrijk is, hoort in een systemd-unit thuis.

Schrijf /etc/systemd/system/fivem.service:

[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -f

enable --now voert twee taken uit: het start de service onmiddellijk en zorgt ervoor dat de service na een herstart weer wordt opgestart. Een handmatig gestarte server is na de volgende kernel-update verdwenen. journalctl -u fivem -f is nu uw console, omdat een systemd-service geen terminal heeft waarin u kunt typen. Als u de server in plaats daarvan beheert via txAdmin, verwijder dan +exec server.cfg uit ExecStart en laat WorkingDirectory naar /home/fivem/FXServer/server wijzen, omdat txAdmin de gameserver zelf start en de datamap naast run.sh bewaart.

Wat u moet back-uppen en waar dit zich bevindt

De artifacts zijn het niet waard om te back-uppen, aangezien u de vastgezette build binnen een minuut opnieuw kunt downloaden. Vier zaken zijn uitsluitend van u.

  • ~/FXServer/server-data/resources: elke resource die u heeft geïnstalleerd, gekocht of geschreven.
  • server.cfg, waar deze zich ook bevindt: de volledige serverconfiguratie, inclusief uw admin-principals.
  • ~/FXServer/server/txData: de configuratie, de admin-lijst en de logs van txAdmin. Bij de Linux-artifact wordt deze map naast run.sh aangemaakt.
  • De MariaDB- of MySQL-database, als uw framework er een gebruikt. Personages, geld, voertuigen en inventarissen bevinden zich daar en nergens anders; een resource-back-up zonder database-dump herstelt dus een lege wereld.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

Een dump die op dezelfde schijf staat als de server is geen back-up, omdat de schijf zelf het onderdeel is dat defect raakt. Verplaats deze volgens een schema naar een andere locatie, waarvoor restic backups from a VPS bedoeld is.

Foutmodi en de meldingen die u zult zien

Permission denied on the loader. De server sluit onmiddellijk af met een regel zoals deze:

run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission denied

Dit gebeurt omdat het archief is uitgepakt met sudo, waardoor alles onder alpine/ eigendom is van root en de fivem-gebruiker de loader daarin niet kan uitvoeren. Herstel het eigenaarschap met sudo chown -R fivem:fivem /home/fivem/FXServer, of verwijder de map en pak deze opnieuw uit als fivem.

tar weigert het downloadbestand te openen. tar (child): xz: Cannot exec: No such file or directory betekent dat het xz-utils-pakket ontbreekt, waardoor tar een .tar.xz-archief niet kan decomprimeren. Installeer het pakket en pak het archief opnieuw uit. Een download die veel te snel klaar is, is meestal een HTML-foutpagina die is opgeslagen als fx.tar.xz, en tar rapporteert dit als een corrupt archief.

De server draait en niemand kan verbinden. Controleer eerst de poorten in deze volgorde: de ufw-regel voor zowel TCP als UDP op 30120, vervolgens de netwerkfirewall van de provider zelf, en daarna het IP-adres dat bij de licentiesleutel hoort. curl tegen info.json vanaf een externe locatie scheidt in één commando een netwerkprobleem van een serverprobleem.

Tick time loopt op naarmate er meer spelers komen. Het prestatiepaneel van txAdmin toont de tick time van de server. Wanneer deze stijgt met het aantal spelers terwijl het totale CPU-gebruik laag lijkt, verzadigt één resource de hoofdthread. Onthoud de rekensom: op een server met 4 vCPU's wordt één volledig belaste core weergegeven als ongeveer 25 procent totale CPU in top; dit ziet er inactief uit, maar dat is het niet. Stop resources één voor één en observeer de tick time om te achterhalen welke resource de oorzaak is.

Dimensionering in vergelijking met andere gameservers

Een speelbare FiveM-server vereist een snelle single-core en voldoende geheugen voor de resource-lijst die u daadwerkelijk draait. Het aantal slots vloeit voort uit deze twee factoren; extra vCPU's compenseren een trage core niet. Het kiezen van een VPS voor gameservers behandelt deze afweging voor een gevarieerd serverpark, en het draaien van een Minecraft-server op een VPS vertoont onderliggend hetzelfde patroon: één centrale tick-loop, waardoor de snelheid per core ook daar het plafond bepaalt.

FAQ

Hoeveel CPU en RAM heeft een FiveM server nodig?

Eén snelle core is belangrijker dan meerdere langzame, omdat FXServer de spellogica op één hoofdthread uitvoert. Vergelijk de gepubliceerde single-thread score van het CPU-model, bevestig dit op de server met sysbench cpu --threads=1 run en controleer of vmstat een steal time van bijna nul aangeeft. Wat betreft het geheugen: de basis Cfx.re serverdata draait in enkele honderden megabytes, terwijl een roleplay-framework met veertig of vijftig resources plus een lokale database comfortabel draait op 8 GB en krap is onder de 4 GB. Dit zijn typische cijfers uit de community; monitor daarom free -m tijdens piekuren in plaats van blind op deze cijfers te vertrouwen.

Moeten spelers GTA V bezitten om lid te worden van mijn FiveM server?

Ja. Elke speler die verbinding maakt, heeft een legitieme, gelicentieerde kopie van GTA V nodig op Steam, de Rockstar Games Launcher of Epic Games, plus een gratis Cfx.re account. De FiveM client controleert het eigendom van de game voordat er verbinding wordt gemaakt. Er is geen ondersteunde manier om dit te omzeilen, en het draaien van een server die dit probeert te omzeilen valt buiten wat Cfx.re toestaat.

Welke poorten moet een FiveM server openzetten?

Poort 30120 op zowel TCP als UDP. De HTTP-endpoints zoals info.json en het downloaden van resources gebruiken TCP, en het gameverkeer van de client gebruikt UDP. Het alleen openen van TCP leidt tot de verwarrende situatie waarin de server reageert op een browser, maar spelers Failed to get info from server zien. txAdmin heeft TCP 40120 nodig, en die poort moet gesloten blijven voor het internet.

Is het veilig om txAdmin bereikbaar te laten op poort 40120?

Nee. txAdmin is een console op afstand waarmee u de server kunt herstarten, de configuratie kunt bewerken en commando's kunt uitvoeren. Een blootgesteld paneel is dus een blootgesteld controlepaneel voor de gehele gameserver. Er is geen standaardwachtwoord, maar een openbare inlogpagina nodigt uit tot inlogpogingen die u niet kunt inzien. Laat 40120 gesloten in de firewall en benader het paneel via een SSH-tunnel met ssh -N -L 40120:127.0.0.1:40120 user@server, en navigeer vervolgens naar http://127.0.0.1:40120. Bind txAdmin niet aan 127.0.0.1 met TXHOST_INTERFACE, omdat die instelling ook de gameserver dwingt naar loopback, waardoor geen enkele speler verbinding kan maken.

Moet ik een artifact-build vastzetten of altijd de laatst aanbevolen versie gebruiken?

Zet de genummerde build-map vast. Het label 'recommended' wijzigt regelmatig naar een nieuwe build. Een script dat de aanbevolen build ophaalt, kan u bij elke herbouw een ander binair bestand geven. Een server die gisteren werkte, kan bij een herimplementatie kapotgaan door redenen die niets met uw wijzigingen te maken hebben. Noteer het buildnummer en de commit-hash die u heeft getest, voer upgrades bewust uit en bewaar de vorige map op de schijf zodat u kunt terugschakelen door één pad in uw systemd-unit aan te passen. Laat een vastgezette versie echter niet verouderen: het beleid van Cfx.re zorgt ervoor dat niet-ondersteunde artifacts ouder dan drie maanden niet meer zichtbaar zijn in de serverbrowser. Upgrade daarom binnen het ondersteuningsvenster.

#fivem#game-server#txadmin#single-thread#vps