SSD Nodes Learn Hosting plans →
Guide Matt ConnorDi Matt Connor

Come creare un server FiveM su un VPS

Installa FXServer su Ubuntu, blocca una build artifact, aggiungi la licence key Cfx.re e apri la porta 30120 su TCP e UDP senza esporre txAdmin.

Cosa serve a un server FiveM su un VPS

Un server FiveM su un VPS richiede un utente Linux senza privilegi, un artifact build di Cfx.re, una licence key e una porta aperta sia su TCP sia su UDP. L'installazione richiede circa dieci minuti. Il resto di questa guida tratta gli aspetti che determinano la giocabilità del server: la velocità di un singolo core della CPU, la memoria richiesta dalle risorse e un pannello di gestione che non deve mai essere esposto su un indirizzo pubblico.

Tre prerequisiti sono fissi. I binari del server, chiamati artifact, provengono dall'elenco ufficiale delle build di Cfx.re. La licence key si ottiene dal portale Cfx.re all'indirizzo portal.cfx.re, il servizio che le guide meno recenti chiamano keymaster; la chiave è associata all'indirizzo della macchina che la utilizza. Ogni giocatore che si connette deve avere una propria copia legittima di GTA V (Grand Theft Auto V) su Steam, Rockstar Games Launcher o Epic Games, oltre a un account Cfx.re gratuito. Il client verifica il possesso del gioco all'avvio. Di conseguenza, un server basato su qualsiasi altra soluzione non funziona e questa guida non tratta contenuti di aggiramento di alcun tipo.

Ospitare il server è un'attività diversa dal giocare sulla macchina. La possibilità di eseguire il gioco stesso su un VPS è un'altra questione, con una risposta diversa.

Perché la velocità del singolo core determina la reattività di un server FiveM

FXServer, il binario del server FiveM, esegue la logica di gioco su un singolo thread principale. Ogni script delle resource, ogni gestore di eventi e ogni aggiornamento dello stato passa da questo unico ciclo. I core aggiuntivi aiutano il kernel, il database e lo stack di rete. Non distribuiscono il ciclo di gioco su più core. Per questo, un sistema con 4 vCPU su un core lento può presentare scatti sotto carico, mentre un sistema con 2 vCPU su un core veloce resta fluido.

Questo cambia il criterio abituale con cui si sceglie un VPS, dove il numero di core è spesso il dato principale. Verifica la velocità per core prima di acquistare il servizio. Inizia dal modello della CPU:

lscpu | grep -E 'Model name|MHz'

Cerca quindi il punteggio pubblicato per il single thread di quel modello. Il rating single thread di PassMark e il punteggio single-core di Geekbench sono entrambi pubblici e misurano il lavoro eseguito da un singolo core, cioè il dato rilevante in questo caso. Misura poi il sistema che ti è stato effettivamente assegnato:

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

Leggi la riga events per second. Esegui lo stesso comando su due provider candidati per confrontarli in modo corretto, perché il carico di lavoro è identico ed è confinato a un solo core. Un benchmark VPS ripetibile mostra come mantenere confrontabili questi valori tra sistemi diversi.

Verifica quindi che il core sia realmente disponibile per il tuo sistema:

vmstat 1 5

L'ultima colonna, st, indica lo steal time: la percentuale di tempo in cui la CPU virtuale era pronta per l'esecuzione, ma l'hypervisor l'ha fatta attendere. Un valore stabile superiore a 1 o 2 indica che condividi un core fisico con vicini che generano un carico elevato. Il ciclo di gioco lo rileva immediatamente sotto forma di rubber banding. Lo steal time causato da un vicino rumoroso spiega come leggere questa colonna e quali interventi adottare.

La memoria dipende dalle resource in esecuzione, non soltanto dal numero di slot. I dati di base del server forniti da Cfx.re occupano poche centinaia di megabyte. Un framework roleplay con quaranta o cinquanta resource e un database MariaDB sullo stesso sistema richiede un dimensionamento diverso: 4 GB è una soglia ragionevole e 8 GB offre un margine adeguato con 32-64 slot. Sono valori tipici pubblicati nelle configurazioni della community. Usali quindi come punto di partenza e monitora free -m durante il carico reale dei giocatori.

Crea un utente e installa le dipendenze

Esegui il server come utente ordinario, mai come root. Ci sono due motivi. Usare root è una cattiva pratica per qualsiasi servizio esposto a Internet. Inoltre, l'artefatto Linux viene eseguito all'interno di un filesystem root Alpine Linux incluso nel pacchetto. Di conseguenza, i file estratti da root non possono essere eseguiti dagli altri utenti. Questa è la causa più comune per cui una nuova installazione non si avvia.

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

Tutte le operazioni seguenti vengono eseguite come utente fivem. xz-utils è necessario perché il download è un archivio .tar.xz, mentre git serve per clonare i dati di base del server.

Scaricare una build di artifact fissata

La build Linux si trova nel canale build_proot_linux del server degli artifact di Cfx.re. L'elenco contrassegna una build come ultima versione consigliata, ma questa etichetta passa a una nuova build ogni poche settimane. Usare invece la cartella numerata come riferimento fisso. In questo modo, ricreando il server il mese prossimo si ottiene lo stesso binario testato questo mese e un aggiornamento diventa una scelta esplicita.

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

La build 25770 riportava l'etichetta consigliata quando ho consultato l'elenco ad agosto 2026. Aprire la stessa directory in un browser per vedere quella corrente, quindi incollare il nome della cartella, composto dal numero della build e da un hash di commit, nell'URL.

ls dovrebbe ora mostrare run.sh e una directory alpine. Questa directory contiene l'intero meccanismo: l'artifact Linux include un piccolo filesystem root Alpine e avvia il server al suo interno usando proot, uno strumento in spazio utente che emula chroot senza privilegi root. Per questo un unico download funziona su Ubuntu, Debian e Rocky senza pacchetti specifici della distribuzione.

Ora clonare i dati di base del server, che contengono le risorse predefinite avviate da server.cfg:

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

Ottieni una chiave di licenza e scrivi server.cfg

Accedi a portal.cfx.re con il tuo account Cfx.re e crea una chiave server. Il portale richiede l'indirizzo IP della macchina che la utilizzerà e associa la chiave a quell'indirizzo. Se passi a un nuovo VPS, devi modificare la chiave nel portale, non crearne una seconda. La modifica viene applicata immediatamente, ma FXServer verifica nuovamente la chiave solo dopo il riavvio.

Scrivi ~/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 accetta un valore compreso tra 1 e 2048. Per un valore pari o superiore a 32, onesync deve essere impostato su on o legacy; per un valore superiore a 64 è necessario on. OneSync è la modalità di consapevolezza dello stato del server e consente di superare il numero ridotto di slot previsto dal gioco base. Impostare 128 slot con OneSync disattivato non fornisce 128 slot: produce una configurazione che il server rifiuta.

sv_licenseKey richiede la chiave senza virgolette e senza spazi finali. FXServer separa quella riga in base agli spazi bianchi, quindi un carattere aggiuntivo causa un errore di convalida e impedisce l'avvio del server.

rcon_password manca intenzionalmente da quel file. RCON (console remota) viene attivato solo quando la variabile è impostata e, in tal caso, resta in ascolto sulla stessa porta UDP del gioco. Una password RCON su una porta pubblica crea un canale di comandi remoti verso il server. Lasciala non impostata, salvo esigenze specifiche. Se devi usarla, scegli una password lunga e casuale.

sv_scriptHookAllowed resta false. La documentazione ufficiale lo indica come sconsigliato, perché consentire client Script Hook V espone il server ad abusi lato client.

add_principal identifier.fivem:1 concede i diritti di amministratore all'account Cfx.re con ID 1. Sostituisci 1 con il tuo ID numerico. In caso contrario, avrai concesso i diritti di amministratore all'account di un'altra persona e non al tuo.

Avvialo una volta manualmente:

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

Da una seconda sessione SSH, chiedi al server informazioni sul proprio stato:

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

Il JSON che contiene i nomi delle variabili e delle risorse del server indica che FXServer è associato alla porta e risponde. Connection refused indica che non è riuscito ad associarsi alla porta, quindi consulta l'output della console invece di procedere per tentativi.

Un server senza chiave visualizza questo messaggio e si arresta:

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

Il messaggio continua a indicare il vecchio indirizzo keymaster. Quell'indirizzo conduce allo stesso portale Cfx.re. Se la chiave è impostata ma il server continua a rifiutarsi di avviarsi, la causa più comune è che l'indirizzo IP registrato per la chiave non corrisponda più a quello di questa macchina.

Quali porte deve avere aperte un server FiveM?

La porta 30120, sia per TCP (Transmission Control Protocol) sia per UDP (User Datagram Protocol). FiveM usa lo stesso numero di porta per due protocolli e richiede entrambi. Se si apre solo TCP, il sintomo è fuorviante: http://your.ip:30120/info.json risponde in un browser, quindi il server sembra funzionare, mentre il client di gioco resta su Failed to get info from server e non completa mai la connessione, perché le query del client e il traffico di gioco utilizzano UDP.

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

Tenere aperta una seconda sessione SSH mentre si abilita un firewall. Le nozioni di base di ufw per un VPS spiega la policy predefinita di negazione, che rende sufficienti da sole le regole precedenti.

La maggior parte dei provider usa anche un firewall di rete esterno alla macchina guest, gestito dal pannello e non dalla shell. Una regola ufw non dimostra nulla su quel livello. Quando TCP risponde dall'esterno ma i giocatori non riescono ancora a connettersi, monitorare il traffico mentre qualcuno tenta la connessione:

sudo tcpdump -ni any udp port 30120

Se arrivano pacchetti, il firewall esterno funziona e il problema si trova all'interno del server. Se non arriva nulla, qualcosa davanti alla macchina sta scartando i pacchetti; controllare quindi il pannello del provider.

Gestire il server con txAdmin senza esporlo

txAdmin è incluso nell'artifact scaricato in precedenza. Avvia run.sh senza l'argomento +exec: viene avviato un pannello Web sulla porta TCP 40120, quindi l'URL del pannello e un PIN a breve scadenza vengono visualizzati nella console. Usa il PIN una sola volta per collegare il tuo account Cfx.re. Da quel momento, accedi con l'account amministratore creato da txAdmin.

txAdmin non ha una password predefinita. Il rischio, quindi, non dipende da una credenziale che hai dimenticato di modificare. Il rischio dipende dalla funzione del pannello: è una console remota. Riavvia il server, modifica server.cfg, distribuisce i dati del server ed esegue comandi con l'account del server. Lasciare 40120 raggiungibile da Internet espone pubblicamente una pagina di accesso a tutte queste funzioni. Gli scanner individuano le porte dei pannelli aperte nel giro di poche ore. Non aprire 40120 nel firewall. Raggiungilo tramite un tunnel SSH dal tuo computer:

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

Apri quindi http://127.0.0.1:40120 nel browser. Il traffico del pannello passa all'interno della connessione SSH. La porta resta chiusa a tutti gli altri client.

Prima di cercare una soluzione diversa, considera un dettaglio importante. txAdmin legge TXHOST_INTERFACE (valore predefinito: 0.0.0.0) per decidere su quale interfaccia mettersi in ascolto. La documentazione specifica che lo stesso valore viene imposto anche a FXServer. Se lo imposti su 127.0.0.1 per nascondere il pannello, anche il game server viene associato all'interfaccia di loopback. Di conseguenza, nessun giocatore può raggiungere il server. Chiudi la porta del pannello con il firewall, non con quella variabile. Per spostare il pannello su un'altra porta, imposta TXHOST_TXA_PORT. Sono accettati tutti i valori tranne 30120. Il convar +set txAdminPort più datato compare in molte guide. La documentazione ufficiale di txAdmin lo indica come deprecato e specifica che smetterà di funzionare in una release futura.

Mantieni il server in esecuzione dopo il logout

bash run.sh termina insieme alla sessione SSH. tmux è utile durante i test: esegui tmux new -s fivem, avvia il server, premi Ctrl-b e poi d per scollegarti, quindi usa tmux attach -t fivem per rientrare. Una sessione tmux non sopravvive a un riavvio, quindi tutto ciò che deve restare disponibile deve essere configurato in un'unità systemd.

Scrivi /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 svolge due funzioni: avvia immediatamente il servizio e lo riavvia dopo un reboot. Un server avviato manualmente non sarà più disponibile dopo il successivo aggiornamento del kernel. Ora la console è journalctl -u fivem -f, perché un servizio systemd non dispone di un terminale in cui inserire comandi. Se invece gestisci il server tramite txAdmin, rimuovi +exec server.cfg da ExecStart e imposta WorkingDirectory su /home/fivem/FXServer/server, perché txAdmin avvia direttamente il game server e mantiene la relativa cartella dati accanto a run.sh.

Cosa eseguire il backup e dove si trovano i dati

Gli artifact non devono essere inclusi nel backup, perché puoi scaricare nuovamente la build fissata in pochi minuti. Ci sono quattro elementi che devi salvaguardare.

  • ~/FXServer/server-data/resources: tutte le risorse che hai installato, acquistato o scritto.
  • server.cfg, ovunque si trovi: l'intera configurazione del server, inclusi i tuoi principal amministrativi.
  • ~/FXServer/server/txData: la configurazione di txAdmin, l'elenco degli amministratori e i log. Con l'artifact Linux, questa cartella viene creata accanto a run.sh.
  • Il database MariaDB o MySQL, se il tuo framework ne usa uno. Personaggi, denaro, veicoli e inventari sono memorizzati lì e in nessun altro punto. Per questo, un backup delle risorse senza un dump del database ripristina un mondo vuoto.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

Un dump archiviato sullo stesso disco del server non è un backup, perché è proprio il disco a poter guastarsi. Trasferiscilo fuori dal server secondo una pianificazione, ad esempio usando restic per i backup da un VPS.

Modalità di errore e messaggi visualizzati

Autorizzazione negata sul loader. Il server si chiude immediatamente e visualizza una riga simile alla seguente:

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

Questo accade perché l'archivio è stato estratto con sudo. Di conseguenza, tutto il contenuto di alpine/ appartiene a root e l'utente fivem non può eseguire il loader al suo interno. Correggi la proprietà con sudo chown -R fivem:fivem /home/fivem/FXServer oppure elimina la directory ed estrai nuovamente l'archivio come fivem.

tar non riesce ad aprire il download. tar (child): xz: Cannot exec: No such file or directory indica che manca il pacchetto xz-utils. Per questo motivo, tar non può decomprimere un archivio .tar.xz. Installa il pacchetto ed esegui nuovamente l'estrazione. Un download che termina molto rapidamente contiene spesso una pagina di errore HTML salvata come fx.tar.xz. tar la segnala come archivio danneggiato.

Il server è in esecuzione, ma nessuno riesce a connettersi. Controlla prima le porte, in questo ordine: la regola ufw per TCP e UDP sulla porta 30120, il firewall di rete del provider e infine l'indirizzo IP registrato per la chiave di licenza. Esegui curl rispetto a info.json dall'esterno del server: con un solo comando puoi distinguere un problema di rete da un problema del server.

Il tick time aumenta quando arrivano i giocatori. Il pannello delle prestazioni di txAdmin mostra il tick time del server. Se aumenta con il numero di giocatori mentre l'utilizzo complessivo della CPU sembra basso, una risorsa sta saturando il thread principale. Ricorda il calcolo: su un server con 4 vCPU, un singolo core completamente utilizzato corrisponde a circa il 25 percento della CPU totale in top. Il valore sembra basso, ma non lo è. Arresta le risorse una alla volta e monitora il tick time per individuare quella che consuma più risorse.

Dimensionamento rispetto agli altri server di gioco

Un server FiveM utilizzabile richiede un singolo core veloce e una quantità di memoria sufficiente per l’elenco di risorse effettivamente in esecuzione. Il numero di slot dipende da questi due fattori; nessuna quantità di vCPU può compensare un core lento. Scegliere un VPS per i server di gioco analizza questo compromesso per un’infrastruttura mista, mentre eseguire un server Minecraft su un VPS segue lo stesso principio: c’è un ciclo di elaborazione principale, quindi anche in questo caso la velocità per core determina il limite massimo.

FAQ

Quanta CPU e RAM richiede un server FiveM?

Un singolo core veloce è più importante di diversi core lenti, perché FXServer esegue la logica di gioco su un unico thread principale. Confronta il punteggio single-thread pubblicato per il modello di CPU, quindi verifica il dato sul server con sysbench cpu --threads=1 run e controlla che vmstat mostri uno steal time prossimo allo zero. Per la memoria, i dati di base del server Cfx.re occupano poche centinaia di megabyte, mentre un framework roleplay con quaranta o cinquanta risorse e un database locale funziona bene con 8 GB e diventa limitato sotto 4 GB. Sono valori tipici della community: controlla quindi free -m nei momenti di picco invece di considerarli garantiti.

I giocatori devono possedere GTA V per collegarsi al mio server FiveM?

Sì. Ogni giocatore che si collega deve disporre di una copia legittima e concessa in licenza di GTA V su Steam, Rockstar Games Launcher o Epic Games, oltre a un account Cfx.re gratuito. Il client FiveM verifica il possesso del gioco prima di stabilire la connessione. Non esiste un metodo supportato per aggirare questo requisito; eseguire un server che tenta di farlo non è consentito da Cfx.re.

Quali porte deve avere aperte un server FiveM?

La porta 30120, sia su TCP sia su UDP. Gli endpoint HTTP come info.json e i download delle risorse usano TCP, mentre il traffico di gioco del client usa UDP. Aprire solo TCP produce il caso confuso in cui il server risponde a un browser, ma i giocatori visualizzano Failed to get info from server. txAdmin richiede la porta TCP 40120, che deve restare chiusa a Internet.

È sicuro lasciare txAdmin raggiungibile sulla porta 40120?

No. txAdmin è una console remota che riavvia il server, modifica la configurazione ed esegue comandi. Un pannello esposto equivale quindi a esporre il piano di controllo dell'intero game server. Non esiste una password predefinita, ma una pagina di accesso pubblica espone a tentativi di attacco alle credenziali che potresti non rilevare. Lascia la porta 40120 chiusa nel firewall e raggiungi il pannello tramite un tunnel SSH con ssh -N -L 40120:127.0.0.1:40120 user@server, quindi apri http://127.0.0.1:40120 nel browser. Non associare txAdmin a 127.0.0.1 con TXHOST_INTERFACE, perché questa impostazione forza anche il game server a usare il loopback e impedisce ai giocatori di collegarsi.

Devo fissare una build di artifact o usare sempre l'ultima consigliata?

Fissa la cartella della build numerata. L'etichetta recommended passa regolarmente a una nuova build. Di conseguenza, uno script che scarica la build recommended può fornirti un binario diverso a ogni ricostruzione, e un server che funzionava il giorno prima può non avviarsi dopo un nuovo deployment per motivi non correlati alle tue modifiche. Registra il numero della build e l'hash del commit che hai testato, esegui gli upgrade intenzionalmente e conserva sul disco la cartella precedente. In questo modo puoi ripristinarla modificando un solo percorso nella tua unit systemd.

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