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 runLeggi 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 5L'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 fivemTutte 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 con artefatto fissato
La build Linux si trova nel canale build_proot_linux del server degli artefatti Cfx.re. La pagina di download del server Cfx.re indica una build come Recommended e una più recente come Latest. Entrambe le etichette passano a nuove build quando vengono rilasciate. Fissa invece la cartella numerata. Se ricostruisci il server il mese prossimo, otterrai lo stesso binario che hai testato questo mese. Un aggiornamento diventa così una decisione consapevole.
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
lsLa build 35245 aveva l'etichetta Recommended quando ho controllato la pagina di download del server Cfx.re il 9 ottobre 2026. Apri la pagina, seleziona Linux e copia il nome della cartella dal link fx.tar.xz corrente, che contiene il numero della build e un hash del commit, nell'URL. Il vecchio elenco della directory degli artefatti, ancora indicato in molte guide, ora reindirizza alla stessa pagina.
Anche una build fissata ha una durata limitata. Cfx.re supporta un artefatto Recommended fino a sei settimane dopo la disponibilità del successivo. La relativa policy stabilisce inoltre che gli artefatti del server non supportati e più vecchi di tre mesi non saranno individuabili dal browser del server. Una build obsoleta continua a funzionare, ma i giocatori non possono più collegarsi tramite il browser. Inserisci quindi gli aggiornamenti in calendario invece di fissare una build per sempre.
ls dovrebbe ora mostrare run.sh e una directory alpine. Questa directory è l'elemento fondamentale: l'artefatto Linux include un proprio piccolo filesystem root Alpine e avvia il server al suo interno usando proot, uno strumento in userspace che emula chroot senza privilegi root. Per questo lo stesso download funziona su Ubuntu, Debian e Rocky senza pacchetti specifici della distribuzione.
Ora clona i dati di base del server, che contengono le risorse predefinite avviate dal tuo server.cfg:
git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-dataOttenere una chiave di licenza e scrivere server.cfg
Accedi a portal.cfx.re con il tuo account Cfx.re e crea una chiave per il 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 subito, ma FXServer esegue una nuova convalida solo al 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.adminsv_maxclients accetta un valore da 1 a 2048. Per un valore pari o superiore a 32, onesync deve essere impostato su on o legacy; per un valore superiore a 64 è necessario anche on. OneSync è la modalità di consapevolezza dello stato del server e consente di superare il numero ridotto di slot del gioco base. Impostare 128 slot con OneSync disattivato non fornisce 128 slot: produce una configurazione che il server rifiuta.
sv_licenseKey accetta la chiave senza virgolette e senza spazi finali. FXServer divide quella riga in base agli spazi. Un solo carattere aggiuntivo interrompe la convalida e impedisce l'avvio del server.
rcon_password manca intenzionalmente da quel file. RCON (console remota) viene attivato solo quando la variabile è impostata; in tal caso, resta in ascolto sulla stessa porta UDP del gioco. Una password RCON su una porta pubblica crea un canale di comandi remoto verso il server. Lasciala non impostata, a meno che tu non ne abbia una necessità specifica. Se la usi, scegli una password lunga e casuale.
sv_scriptHookAllowed rimane false. La documentazione ufficiale lo indica come sconsigliato, perché consentire client Script Hook V espone il server ad abusi lato client.
Le ultime due righe funzionano insieme. add_ace group.admin command allow consente al gruppo group.admin di eseguire ogni comando, mentre add_principal identifier.fivem:1 group.admin fa ereditare all'account Cfx.re con ID 1 i permessi di quel gruppo. È questo che assegna i privilegi di amministratore all'account. La sintassi documentata è add_principal [child_principal] [parent_principal], quindi sono necessarie entrambe le parti: una riga add_principal che contiene soltanto l'account non specifica alcun gruppo da cui ereditare i permessi e non concede nulla. Sostituisci 1 con il tuo ID numerico. In caso contrario, assegni i privilegi 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.cfgDa una seconda sessione SSH, chiedi al server informazioni sul proprio stato:
curl -s http://127.0.0.1:30120/info.json | head -c 200Un JSON che contiene le variabili del server e le risorse indica che FXServer è associato alla porta e risponde. Connection refused indica che non ha mai associato la porta. Leggi quindi l'output della console invece di procedere per tentativi.
Un server senza chiave stampa 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 contiene ancora il vecchio indirizzo di keymaster. L'indirizzo conduce allo stesso portale Cfx.re. Se la chiave è impostata e il server continua a rifiutarsi di avviarsi, la causa più comune è che l'indirizzo IP registrato per la chiave non corrisponde 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 verboseTenere 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 30120Se 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_IPApri 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.targetsudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -fenable --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 arun.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).sqlUn 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 deniedQuesto 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 core veloce è più importante di diversi core lenti, perché FXServer esegue la logica di gioco su un singolo 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 vicino a zero. Per la memoria, i dati di base del server Cfx.re occupano alcune centinaia di megabyte, mentre un framework roleplay con quaranta o cinquanta risorse e un database locale funziona bene con 8 GB e diventa insufficiente sotto 4 GB. Sono valori tipici della community: monitora quindi free -m durante i picchi invece di considerarli garantiti.
I giocatori devono possedere GTA V per entrare nel mio server FiveM?
Sì. Ogni giocatore che si connette deve disporre di una copia legittima e regolarmente acquistata 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 connettersi. Non esiste un metodo supportato per aggirare questo controllo, e l'esecuzione di un server che tenti di farlo non è consentita da Cfx.re.
Quali porte deve avere aperte un server FiveM?
La porta 30120 deve essere aperta 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 soltanto TCP produce il caso fuorviante in cui il server risponde al browser, ma i giocatori visualizzano Failed to get info from server. txAdmin richiede TCP 40120, che dovrebbe rimanere chiusa verso 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 login pubblica espone il servizio ad attacchi alle credenziali che potrebbero non essere rilevati. Lascia 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 connettersi.
Devo fissare una build degli artifact o usare sempre l'ultima build consigliata?
Fissa la directory della build numerata. L'etichetta recommended passa regolarmente a una nuova build. Di conseguenza, uno script che scarica la build consigliata può fornirti un binario diverso a ogni ricostruzione, e un server che funzionava il giorno precedente può interrompersi dopo una nuova distribuzione per motivi non correlati alle tue modifiche. Registra il numero della build e l'hash del commit che hai testato, aggiorna intenzionalmente e conserva la directory precedente sul disco, così puoi tornare indietro modificando un solo percorso nell'unità systemd. Non lasciare però che una build fissata diventi obsoleta: la policy di Cfx.re rende non utilizzabili nel browser del server gli artifact non supportati più vecchi di tre mesi, quindi aggiorna entro il periodo di supporto.