# Tira su il tuo primo server FiveM

Da zero a un server dove i tuoi amici possono entrare: artifact, licence key, server.cfg, la porta su cui inciampano tutti, e come chiuderlo prima di invitare qualcuno.

- Piattaforma: FiveM
- Pagina canonica: https://devtoolsgg.com/it/guides/fivem/first-server

Questa è la strada più corta da zero a un server dove i tuoi amici possono
entrare, con il ragionamento dietro ogni passo invece di una lista di comandi da
incollare.

Metti in conto una quarantina di minuti. La maggior parte è download.

> [!NOTE]
> Tutto qui vale per **FiveM Legacy**. FiveM for GTAV Enhanced differisce su
> alcuni punti, segnalati man mano che saltano fuori.

## Cosa ti serve prima

| Cosa | Perché |
|---|---|
| Una copia di GTA V | Solo per giocare. Il server in sé non ne ha bisogno. |
| Un account Cfx.re | Per creare la licence key, gratis. |
| Windows o Linux | 2 core e 4 GB di RAM bastano per iniziare. |
| Una porta aperta | 30120 di default, TCP **e** UDP. |

È su quest'ultima riga che muore la maggior parte dei primi tentativi, quindi ha
una sua sezione più sotto.

## 1. Prendi i file del server

Il server si chiama **FXServer**. Scarica l'ultimo build consigliato dalla
[pagina degli artifact Cfx.re](https://runtime.fivem.net/artifacts/fivem/) e
mettilo in una cartella tutta sua, per esempio `C:\FXServer\server`.

Tieni i file del server e i tuoi dati in **cartelle separate**:

```text
C:\FXServer\
    server\          gli artifact, sostituiti a ogni aggiornamento
    server-data\     le tue resource e il tuo server.cfg
```

Il motivo sono gli aggiornamenti. Quando esce un artifact nuovo cancelli
`server` e scompatti quello nuovo. Se la tua cartella `resources` sta lì dentro,
hai appena cancellato il tuo server.

## 2. Prendi la tua licence key

Vai su [portal.cfx.re](https://portal.cfx.re), accedi e crea una key. Ti chiede
un indirizzo IP: usa la macchina che farà girare il server e scegli il tipo
giusto, perché una key creata per l'IP sbagliato semplicemente si rifiuta di
partire.

> [!CAUTION]
> La key è un secret. Chiunque ce l'abbia può far girare un server a tuo nome e
> fartela revocare. Va nel `server.cfg`, e il `server.cfg` non finisce mai in un
> repository git pubblico.

## 3. Scrivi il server.cfg

È il file a cui è appeso tutto il resto. Invece di copiare quello di qualcun
altro e chiederti cosa faccia metà della roba, costruiscine uno con il
[generatore di server.cfg](/it/fivem/server-cfg): scrive le sezioni nell'ordine
giusto, usa nomi di convar verificati sul riferimento dei comandi Cfx.re, e ti
spiega ogni opzione mentre la imposti.

Le parti che contano su un primo server:

```cfg
# Una riga per protocollo, entrambe sulla stessa porta.
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

# Da 32 slot in su serve onesync on o legacy; oltre 64 serve on.
set onesync on

sv_hostname "Il mio primo server"
sv_maxClients 48

# Questa la prendi da portal.cfx.re
sv_licenseKey changeme
```

### L'ordine di caricamento non è decorazione

Le resource partono nell'ordine in cui sono elencate. Una resource che dipende
da un'altra deve venire **dopo**:

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure my_own_script
```

Quasi ogni "attempted to index a nil value" su un server appena montato è un
problema di ordine di caricamento, non uno script rotto.

## 4. Apri la porta, come si deve

FiveM ha bisogno di **TCP e UDP sulla stessa porta**. Aprire solo il TCP produce
il sintomo più confuso di tutto l'hobby: il server compare nella tua lista,
accetta la tua connessione e poi si pianta su "Connecting".

Ci sono tre posti diversi che possono bloccarla, e di solito vanno sistemati
tutti e tre:

1. **Il firewall di Windows** o `ufw` su Linux: consenti 30120 TCP e UDP in
   ingresso.
2. **Il tuo router**, se la macchina è a casa: inoltra 30120 TCP e UDP all'IP
   locale della macchina.
3. **Il firewall del tuo host**, se noleggi un VPS. Questo è un pannello web,
   non la macchina, ed è quello che tutti dimenticano.

> [!TIP]
> Per capire se è davvero la porta, fai provare a connettersi a qualcuno mentre
> guardi la console del server. Se lì non compare assolutamente niente, il
> traffico non ti sta arrivando e il problema è di rete, non di config.

## 5. Avvialo

Dalla cartella `server-data`:

```batch
C:\FXServer\server\FXServer.exe +exec server.cfg
```

Su Linux:

```bash
bash /home/fivem/server/run.sh +exec server.cfg
```

Su **Enhanced** l'eseguibile è `cfx-server.exe`.

Un primo avvio sano stampa una riga che dice che il server è in ascolto, poi una
lista di resource. Due errori sono abbastanza comuni da meritare un nome:

- *"Could not find licence key"* significa che `sv_licenseKey` manca, è sbagliata
  o è legata a un altro IP.
- *"onesync is not enabled"* con più di 32 slot significa che manca
  `set onesync on`.

## 6. Aggiungi un framework, oppure no

Non ti serve. Un framework ti dà job, soldi, inventario e un sistema di
personaggi; senza, hai il free roam, che è un punto di partenza più che
dignitoso.

Se ne vuoi uno, scegli un unico ecosistema e resta lì:

| Framework | Com'è |
|---|---|
| **Qbox** | Mantenuto attivamente, Lua moderno, costruito su ox_lib e ox_inventory. |
| **QBCore** | Catalogo di script enorme, codebase più vecchia. |
| **ESX Legacy** | Il più antico, ancora molto usato, la maggior parte degli script di terze parti punta a lui. |

Mescolarli è il modo più comune di ritrovarsi con un server che nessuno riesce a
debuggare. Qualunque tu scelga, il [generatore di job](/it/fivem/job) e il
[generatore di item](/it/fivem/item) scrivono il formato corretto per tutti e
tre.

## 7. Chiudilo prima di invitare qualcuno

Una configurazione di default non è una configurazione sicura.

```cfg
# Blocca i file di gioco modificati. 2 blocca anche quelli sconosciuti.
sv_pureLevel 1

# Controlla cosa i client possono creare.
sv_entityLockdown relaxed

# Trainer e menu. Lascialo disattivato.
sv_scriptHookAllowed false
```

Poi imposta i permessi di admin come si deve con il
[generatore di permessi ACE](/it/fivem/permissions) invece di dare `group.admin`
a mano. E prima di installare anche una sola resource scaricata, leggi
[come riconoscere uno script con backdoor](/it/guides/fivem/spot-a-backdoor). Su
un server pubblico è questione di quando, non di se.

> [!IMPORTANT]
> Non impostare `rcon_password` se non usi davvero RCON. Una password non
> impostata è una cosa in meno che può fuoriuscire.

## Dove andare dopo

- [Generatore di fxmanifest.lua](/it/fivem/fxmanifest) quando scriverai la tua
  prima resource
- [Generatore di resource](/it/fivem/resource) per uno scheletro funzionante con
  i controlli lato server già al loro posto
- [Sprite dei blip](/it/fivem/list/blips) e
  [modelli di veicolo](/it/fivem/list/vehicles), le due liste per cui terrai una
  tab aperta


## Come citare

Tira su il tuo primo server FiveM, devtoolsgg.com. https://devtoolsgg.com/it/guides/fivem/first-server
