# Monta tu primer servidor de FiveM

De cero a un servidor al que tus amigos pueden entrar: artifacts, licence key, server.cfg, el puerto en el que tropieza todo el mundo, y cómo cerrarlo antes de invitar a nadie.

- Plataforma: FiveM
- Página canónica: https://devtoolsgg.com/es/guides/fivem/first-server

Este es el camino más corto desde cero hasta un servidor al que tus amigos
pueden entrar, con el razonamiento detrás de cada paso en vez de una lista de
comandos para pegar.

Cuenta con unos cuarenta minutos. La mayor parte es descargar.

> [!NOTE]
> Todo esto vale para **FiveM Legacy**. FiveM for GTAV Enhanced se diferencia en
> unos cuantos puntos, y se señalan según van saliendo.

## Lo que necesitas antes de empezar

| Cosa | Para qué |
|---|---|
| Una copia de GTA V | Solo para jugar. El servidor en sí no necesita ninguna. |
| Una cuenta de Cfx.re | Para crear la licence key, gratis. |
| Windows o Linux | Con 2 núcleos y 4 GB de RAM basta para empezar. |
| Un puerto abierto | 30120 por defecto, TCP **y** UDP. |

Esa última fila es donde mueren casi todos los primeros intentos, así que tiene
su propia sección más abajo.

## 1. Consigue los archivos del servidor

El servidor se llama **FXServer**. Descarga el último build recomendado de la
[página de artifacts de Cfx.re](https://runtime.fivem.net/artifacts/fivem/) y
ponlo en su propia carpeta, por ejemplo `C:\FXServer\server`.

Mantén los archivos del servidor y tus propios datos en **carpetas separadas**:

```text
C:\FXServer\
    server\          los artifacts, se reemplazan en cada actualización
    server-data\     tus resources y tu server.cfg
```

La razón son las actualizaciones. Cuando sale un artifact nuevo, borras `server`
y descomprimes el nuevo. Si tu carpeta `resources` vive dentro, acabas de borrar
tu servidor.

## 2. Consigue tu licence key

Ve a [portal.cfx.re](https://portal.cfx.re), inicia sesión y crea una key. Te
pide una dirección IP: usa la máquina que va a ejecutar el servidor y elige el
tipo correcto, porque una key creada para la IP equivocada sencillamente se
niega a arrancar.

> [!CAUTION]
> La key es un secreto. Cualquiera que la tenga puede levantar un servidor en tu
> nombre y conseguir que te la revoquen. Va en el `server.cfg`, y el
> `server.cfg` no va nunca a un repositorio git público.

## 3. Escribe el server.cfg

Este es el archivo del que cuelga todo lo demás. En vez de copiar el de otro y
preguntarte qué hace la mitad, constrúyete uno con el
[generador de server.cfg](/es/fivem/server-cfg): escribe las secciones en el
orden correcto, usa nombres de convar contrastados con la referencia de comandos
de Cfx.re, y te explica cada opción según la pones.

Las partes que importan en un primer servidor:

```cfg
# Una línea por protocolo, las dos apuntando al mismo puerto.
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

# De 32 slots en adelante hace falta onesync on o legacy; por encima de 64, on.
set onesync on

sv_hostname "Mi primer servidor"
sv_maxClients 48

# Saca esto de portal.cfx.re
sv_licenseKey changeme
```

### El orden de carga no es decoración

Las resources arrancan en el orden en que están listadas. Una resource que
depende de otra tiene que ir **después**:

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

Casi todos los "attempted to index a nil value" en un servidor recién montado
son un problema de orden de carga, no un script roto.

## 4. Abre el puerto, bien

FiveM necesita **TCP y UDP en el mismo puerto**. Abrir solo TCP produce el
síntoma más confuso de toda la afición: el servidor aparece en tu propia lista,
acepta tu conexión y luego se queda colgado en "Connecting".

Hay tres sitios distintos que pueden bloquearlo, y normalmente hay que tocar los
tres:

1. **El firewall de Windows** o `ufw` en Linux: permite 30120 TCP y UDP de
   entrada.
2. **Tu router**, si la máquina está en casa: redirige 30120 TCP y UDP a la IP
   local de la máquina.
3. **El firewall de tu hosting**, si alquilas un VPS. Este es un panel web, no
   la máquina, y es el que se le olvida a todo el mundo.

> [!TIP]
> Para comprobar si de verdad es el puerto, que alguien intente conectarse
> mientras miras la consola del servidor. Si ahí no aparece absolutamente nada,
> el tráfico no te está llegando y el problema es de red, no de config.

## 5. Arráncalo

Desde la carpeta `server-data`:

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

En Linux:

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

En **Enhanced** el ejecutable es `cfx-server.exe`.

Un primer arranque sano imprime una línea diciendo que el servidor está
escuchando, y después una lista de resources. Dos errores son lo bastante
comunes como para nombrarlos:

- *"Could not find licence key"* significa que `sv_licenseKey` falta, está mal o
  está atada a otra IP.
- *"onesync is not enabled"* con más de 32 slots significa que falta
  `set onesync on`.

## 6. Añade un framework, o no

No necesitas ninguno. Un framework te da jobs, dinero, inventario y un sistema
de personajes; sin él tienes free roam, que es un sitio perfectamente bueno para
empezar.

Si quieres uno, elige un solo ecosistema y quédate en él:

| Framework | Cómo es |
|---|---|
| **Qbox** | Mantenido activamente, Lua moderno, construido sobre ox_lib y ox_inventory. |
| **QBCore** | Catálogo de scripts enorme, base de código más antigua. |
| **ESX Legacy** | El más viejo, sigue muy usado, la mayoría de scripts de terceros apuntan a él. |

Mezclarlos es la forma más común de acabar con un servidor que nadie puede
depurar. Elijas el que elijas, el [generador de jobs](/es/fivem/job) y el
[generador de items](/es/fivem/item) escriben el formato correcto para los tres.

## 7. Ciérralo antes de invitar a nadie

Una configuración por defecto no es una configuración segura.

```cfg
# Bloquea archivos de juego modificados. 2 bloquea también los desconocidos.
sv_pureLevel 1

# Controla lo que los clientes pueden crear.
sv_entityLockdown relaxed

# Trainers y menús. Deja esto desactivado.
sv_scriptHookAllowed false
```

Después monta los permisos de admin como toca con el
[generador de permisos ACE](/es/fivem/permissions) en vez de conceder
`group.admin` a mano. Y antes de instalar una sola resource descargada, lee
[cómo detectar un script con backdoor](/es/guides/fivem/spot-a-backdoor). En un
servidor público es cuestión de cuándo, no de si.

> [!IMPORTANT]
> No pongas `rcon_password` salvo que uses RCON de verdad. Una contraseña sin
> poner es una cosa menos que puede filtrarse.

## Por dónde seguir

- [Generador de fxmanifest.lua](/es/fivem/fxmanifest) cuando escribas tu primera
  resource
- [Generador de resources](/es/fivem/resource) para un esqueleto funcional con
  las comprobaciones del lado servidor ya puestas
- [Sprites de blip](/es/fivem/list/blips) y
  [modelos de vehículo](/es/fivem/list/vehicles), las dos listas para las que vas
  a dejar una pestaña abierta


## Cómo citar

Monta tu primer servidor de FiveM, devtoolsgg.com. https://devtoolsgg.com/es/guides/fivem/first-server
