SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor

Cómo instalar un servidor FiveM en un VPS

Instala FXServer en Ubuntu, fija una compilación de artifacts, añade la clave de licencia de Cfx.re y abre el puerto 30120 en TCP y UDP sin exponer txAdmin.

Qué necesita un servidor FiveM en un VPS

Un servidor FiveM en un VPS necesita un usuario de Linux sin privilegios, una compilación de artifacts de Cfx.re, una clave de licencia y un puerto abierto en TCP y UDP. La instalación tarda unos diez minutos. El resto de esta guía cubre los aspectos que determinan si el servidor se puede usar para jugar: la velocidad de un solo núcleo de CPU, la memoria que necesitan los recursos y un panel de administración que nunca debe quedar expuesto en una dirección pública.

Hay tres requisitos fijos. Los binarios del servidor, llamados artifacts, proceden del listado oficial de compilaciones de Cfx.re. La clave de licencia se obtiene en el portal de Cfx.re, en portal.cfx.re, el servicio que las guías antiguas llaman keymaster, y queda vinculada a la dirección de la máquina que la utiliza. Cada jugador que se conecta necesita una copia legítima de GTA V (Grand Theft Auto V) en Steam, Rockstar Games Launcher o Epic Games, además de una cuenta gratuita de Cfx.re. El cliente comprueba la propiedad del juego al iniciarse, por lo que un servidor basado en cualquier otra cosa no funciona. Este documento no cubre ningún tipo de contenido alternativo.

Alojar el servidor es una tarea distinta de jugar en la máquina. La cuestión de si puede ejecutar el juego en sí en un VPS es independiente y tiene una respuesta diferente.

Por qué la velocidad de un solo núcleo determina cómo se percibe un servidor de FiveM

FXServer, el binario del servidor de FiveM, ejecuta la lógica del juego en un solo hilo principal. Cada script de recurso, cada controlador de eventos y cada actualización de estado pasa por ese bucle único. Los núcleos adicionales ayudan al kernel, a la base de datos y a la pila de red. No dividen el bucle del juego. Por eso, un servidor con 4 vCPU en un núcleo lento puede sufrir tirones bajo carga, mientras que uno con 2 vCPU en un núcleo rápido mantiene una ejecución fluida.

Esto cambia el criterio habitual al elegir un VPS, donde el número de núcleos suele ser la cifra principal. Compruebe la velocidad por núcleo antes de contratar el servicio. Empiece por el modelo de CPU:

lscpu | grep -E 'Model name|MHz'

Después, busque la puntuación publicada de rendimiento monohilo de ese modelo. La puntuación single thread de PassMark y la puntuación single-core de Geekbench son públicas. Ambas miden el trabajo realizado por un solo núcleo, que es la cifra relevante en este caso. Después, mida el servidor que realmente le han asignado:

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

Lea la línea events per second. Ejecute el mismo comando en dos proveedores candidatos para compararlos de forma objetiva, porque la carga de trabajo es idéntica y está limitada a un solo núcleo. Una ejecución reproducible de pruebas de rendimiento en un VPS muestra cómo mantener comparables esas cifras entre servidores.

Después, compruebe que el núcleo esté realmente disponible para usted:

vmstat 1 5

La última columna, st, es el steal time: el porcentaje de tiempo durante el que su CPU virtual estaba lista para ejecutarse, pero el hipervisor la mantuvo en espera. Un valor constante superior a 1 o 2 indica que comparte un núcleo físico con vecinos que generan mucha carga. El bucle del juego lo percibe de inmediato en forma de rubber banding. Steal time causado por un vecino ruidoso explica cómo leer esa columna y qué medidas tomar.

La memoria depende de los recursos que ejecute, no sólo del número de slots. Los datos base del servidor de Cfx.re usan unos pocos cientos de megabytes. Un framework de roleplay con cuarenta o cincuenta recursos y una base de datos MariaDB en el mismo servidor requiere una configuración distinta: 4 GB es un mínimo razonable y 8 GB ofrece margen con 32 a 64 slots. Son cifras habituales publicadas por configuraciones de la comunidad. Tómelas como punto de partida y supervise free -m con carga real de jugadores.

Crear un usuario e instalar las dependencias

Ejecute el servidor con un usuario normal, nunca como root. Hay dos motivos. Usar root es una mala práctica en cualquier servicio expuesto a Internet. Además, el artefacto de Linux se ejecuta dentro de un sistema de archivos raíz de Alpine Linux incluido en el paquete. Por eso, los archivos desempaquetados por root no pueden ser ejecutados por otros usuarios. Esta es la causa más común de que una instalación nueva no se inicie.

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

Todo lo que aparece a continuación se ejecuta con el usuario fivem. xz-utils es necesario porque la descarga es un archivo .tar.xz, y git se utiliza para clonar los datos base del servidor.

Descargar una compilación de artefacto fijada

La compilación para Linux se encuentra en el canal build_proot_linux del servidor de artefactos de Cfx.re. El listado marca una compilación como la última recomendada, y esa etiqueta cambia a una compilación nueva cada pocas semanas. En su lugar, fije la carpeta numerada. Si vuelve a compilar el servidor el próximo mes, obtendrá el mismo binario que probó este mes. Así, la actualización será una decisión deliberada.

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 compilación 25770 tenía la etiqueta de recomendada cuando consulté el listado en agosto de 2026. Abra el mismo directorio en un navegador para consultar el actual. Después, copie el nombre de esa carpeta, que consta del número de compilación y un hash de commit, en la URL.

ls debería mostrar ahora run.sh y un directorio alpine. Ese directorio es la clave: el artefacto para Linux incluye su propio sistema de archivos raíz reducido de Alpine e inicia el servidor dentro de él mediante proot, una herramienta de espacio de usuario que emula chroot sin privilegios de root. Por eso una sola descarga funciona en Ubuntu, Debian y Rocky sin paquetes específicos de la distribución.

Ahora clone los datos base del servidor, que contienen los recursos predeterminados que inicia server.cfg:

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

Obtenga una clave de licencia y escriba server.cfg

Inicie sesión en portal.cfx.re con su cuenta de Cfx.re y cree una clave de servidor. El portal solicita la dirección IP de la máquina que la utilizará, y la clave queda vinculada a esa dirección. Cambiar a un VPS nuevo implica editar la clave en el portal, no crear otra. El cambio se aplica de inmediato, pero FXServer sólo vuelve a validar la clave cuando se reinicia.

Escriba ~/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 acepta un valor de 1 a 2048. Un valor de 32 o superior requiere que onesync esté establecido en on o legacy, y un valor superior a 64 requiere on. OneSync es el modo de conocimiento del estado del servidor y permite que un servidor supere el número reducido de slots del juego base. Establecer 128 slots con OneSync desactivado no proporciona 128 slots. Proporciona una configuración que el servidor rechaza.

sv_licenseKey recibe la clave sin comillas ni espacios finales. FXServer divide esa línea en espacios en blanco, por lo que un solo carácter adicional rompe la validación y el servidor no se inicia.

rcon_password falta en ese archivo de forma intencionada. RCON (consola remota) sólo se activa cuando se establece la variable y, en ese caso, escucha en el mismo puerto UDP que el juego. Una contraseña de RCON en un puerto público proporciona un canal de comandos remotos hacia el servidor. Déjela sin establecer salvo que tenga una necesidad concreta. Si la utiliza, hágala larga y aleatoria.

sv_scriptHookAllowed permanece en false. La documentación oficial lo marca como no recomendado, porque permitir clientes de Script Hook V expone el servidor a abusos desde el cliente.

add_principal identifier.fivem:1 concede derechos de administrador a la cuenta de Cfx.re con ID 1. Sustituya 1 por su propio ID numérico. De lo contrario, habrá concedido permisos de administrador a la cuenta de otra persona y no a la suya.

Inícielo una vez manualmente:

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

Desde una segunda sesión SSH, solicite información sobre el servidor:

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

El JSON que muestra las variables y los recursos del servidor indica que FXServer está enlazado y responde. Connection refused significa que nunca enlazó el puerto, así que revise la salida de la consola en lugar de hacer suposiciones.

Un servidor sin clave muestra esto y se detiene:

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

El mensaje todavía muestra la dirección antigua de keymaster. Esa dirección lleva al mismo portal de Cfx.re. Si la clave está configurada y el servidor sigue sin ejecutarse, la causa habitual es que la dirección IP registrada para la clave ya no coincide con la de esta máquina.

¿Qué puertos debe tener abiertos un servidor FiveM?

El puerto 30120, tanto para TCP (protocolo de control de transmisión) como para UDP (protocolo de datagramas de usuario). FiveM usa un mismo número de puerto para dos protocolos y necesita ambos. Si abre sólo TCP, el síntoma resulta confuso: http://your.ip:30120/info.json responde en un navegador, por lo que el servidor parece funcionar, pero el cliente del juego se queda en Failed to get info from server y nunca se conecta, porque las consultas del cliente y el tráfico del juego utilizan UDP.

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

Mantenga abierta una segunda sesión SSH mientras habilita cualquier firewall. Conceptos básicos de ufw para un VPS explica la política predeterminada de denegación que hace que las reglas anteriores sean suficientes por sí solas.

La mayoría de los proveedores también ejecutan un firewall de red fuera del guest, controlado desde el panel y no desde el shell. Una regla de ufw no demuestra nada sobre esa capa. Cuando TCP responde desde el exterior y los jugadores siguen sin poder conectarse, supervise el tráfico mientras alguien lo intenta:

sudo tcpdump -ni any udp port 30120

Si llegan paquetes, el firewall externo funciona y el problema está dentro del servidor. Si no llega ninguno, algo situado delante del equipo los está descartando. Compruebe entonces el panel del proveedor.

Administre el servidor con txAdmin sin exponerlo

txAdmin se incluye en el artifact que ya descargó. Inicie run.sh sin el argumento +exec y abrirá un panel web en el puerto TCP 40120. Después mostrará en la consola la URL del panel y un PIN de corta duración. Use ese PIN una vez para vincular su cuenta de Cfx.re. A partir de entonces, inicie sesión con la cuenta de administrador que txAdmin crea.

txAdmin no tiene una contraseña predeterminada. Por tanto, el riesgo no es una credencial que haya olvidado cambiar. El riesgo es la función del panel: es una consola remota. Reinicia el servidor, edita server.cfg, implementa datos del servidor y ejecuta comandos como el usuario del servidor. Si 40120 queda accesible desde Internet, esa interfaz de inicio de sesión queda publicada en una dirección pública. Los escáneres detectan los puertos de panel abiertos en cuestión de horas. No abra 40120 en el firewall. Acceda mediante un túnel SSH desde su propio equipo:

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

Después, abra http://127.0.0.1:40120 en el navegador. El tráfico del panel circula dentro de la conexión SSH y el puerto permanece cerrado para todos los demás.

Hay un detalle importante que debe conocer antes de intentar resolverlo de otra forma. txAdmin lee TXHOST_INTERFACE (0.0.0.0 de forma predeterminada) para decidir en qué interfaz debe escuchar. La documentación indica expresamente que el mismo valor se aplica también a FXServer. Si lo establece en 127.0.0.1 para ocultar el panel, también vinculará el servidor de juego a loopback. Como resultado, ningún jugador podrá acceder al servidor. Cierre el puerto del panel con el firewall, no con esa variable. Para mover el panel a otro puerto, establezca TXHOST_TXA_PORT, que acepta cualquier valor excepto 30120. El convar anterior +set txAdminPort aparece en muchas guías. La documentación de txAdmin lo marca como obsoleto e indica que dejará de funcionar en una versión futura.

Mantener el servidor en ejecución después de cerrar la sesión

bash run.sh termina junto con la sesión SSH. tmux es útil durante las pruebas: ejecute tmux new -s fivem, inicie el servidor, pulse Ctrl-b y después d para separarse, y use tmux attach -t fivem para volver. Una sesión de tmux no sobrevive a un reinicio, por lo que todo lo que deba conservarse debe estar en una unidad de systemd.

Escriba /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 realiza dos tareas: inicia el servicio de inmediato y lo vuelve a iniciar después de un reinicio. Un servidor iniciado manualmente deja de estar disponible tras la siguiente actualización del kernel. journalctl -u fivem -f es ahora su consola, porque un servicio de systemd no tiene un terminal en el que pueda escribir. Si administra el servidor mediante txAdmin, elimine +exec server.cfg de ExecStart y haga que WorkingDirectory apunte a /home/fivem/FXServer/server, porque txAdmin inicia el servidor de juego y mantiene su carpeta de datos junto a run.sh.

Qué respaldar y dónde se encuentra

No es necesario respaldar los artefactos, porque puede volver a descargar la compilación fijada en un minuto. Hay cuatro elementos que sólo le pertenecen a usted.

  • ~/FXServer/server-data/resources: todos los recursos que instaló, compró o escribió.
  • server.cfg, esté donde esté: toda la configuración del servidor, incluidos los principales administrativos.
  • ~/FXServer/server/txData: la configuración, la lista de administradores y los registros de txAdmin. Con el artefacto de Linux, esta carpeta se crea junto a run.sh.
  • La base de datos de MariaDB o MySQL, si su framework usa una. Los personajes, el dinero, los vehículos y los inventarios se almacenan allí y en ningún otro sitio. Por tanto, un respaldo de los recursos sin un volcado de la base de datos restaura un mundo vacío.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

Un volcado almacenado en el mismo disco que el servidor no es un respaldo, porque el disco es el elemento que puede fallar. Transfiéralo fuera del servidor según una programación. Para eso sirven los respaldos de restic desde un VPS.

Modos de fallo y mensajes que verá

Permiso denegado en el cargador. El servidor se cierra inmediatamente y muestra una línea similar a esta:

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

Esto ocurre porque el archivo se extrajo con sudo. Por tanto, todo lo que hay bajo alpine/ pertenece a root y el usuario fivem no puede ejecutar el cargador que contiene. Corrija el propietario con sudo chown -R fivem:fivem /home/fivem/FXServer o elimine el directorio y vuelva a extraerlo como fivem.

tar no puede abrir la descarga. tar (child): xz: Cannot exec: No such file or directory significa que falta el paquete xz-utils, por lo que tar no puede descomprimir un archivo .tar.xz. Instálelo y vuelva a extraer el archivo. Una descarga que termina demasiado rápido suele ser una página de error HTML guardada como fx.tar.xz. tar informa de ello como un archivo dañado.

El servidor se ejecuta, pero nadie puede conectarse. Compruebe primero los puertos, en este orden: la regla de ufw para TCP y UDP en 30120, el firewall de red del proveedor y, por último, la IP registrada en la clave de licencia. Ejecute curl contra info.json desde fuera del servidor. Esto permite distinguir un problema de red de un problema del servidor con un solo comando.

El tiempo de tick aumenta cuando llegan jugadores. El panel de rendimiento de txAdmin muestra el tiempo de tick del servidor. Si aumenta con el número de jugadores mientras el uso total de CPU parece bajo, un recurso está saturando el hilo principal. Recuerde el cálculo: en un servidor con 4 vCPU, un solo núcleo completamente ocupado representa aproximadamente el 25 por ciento de la CPU total en top. El sistema parece inactivo, pero no lo está. Detenga los recursos de uno en uno y supervise el tiempo de tick para encontrar cuál consume esa capacidad.

Comparación con otros servidores de juegos

Un servidor de FiveM jugable necesita un núcleo rápido y suficiente memoria para la lista de recursos que ejecuta realmente. El número de slots depende de esos dos factores, y ninguna cantidad de vCPU compensa un núcleo lento. Elegir un VPS para servidores de juegos analiza ese equilibrio para una flota heterogénea, y ejecutar un servidor de Minecraft en un VPS presenta la misma estructura subyacente: un bucle principal de ticks, por lo que la velocidad por núcleo también determina allí el límite.

FAQ

¿Cuánta CPU y RAM necesita un servidor de FiveM?

Importa más un núcleo rápido que varios lentos, porque FXServer ejecuta la lógica del juego en un único subproceso principal. Compare la puntuación de subproceso único publicada para el modelo de CPU y confírmela en el servidor con sysbench cpu --threads=1 run. Compruebe también que vmstat muestre un tiempo de steal cercano a cero. En cuanto a la memoria, los datos base del servidor de Cfx.re ocupan unos pocos cientos de megabytes, mientras que un framework de roleplay con cuarenta o cincuenta recursos y una base de datos local funciona con comodidad con 8 GB y queda limitado por debajo de 4 GB. Son cifras habituales de la comunidad. Por eso, supervise free -m durante los picos en lugar de confiar en ellas.

¿Los jugadores deben tener GTA V para conectarse a mi servidor de FiveM?

Sí. Cada jugador que se conecte necesita una copia legítima y con licencia de GTA V en Steam, Rockstar Games Launcher o Epic Games, además de una cuenta gratuita de Cfx.re. El cliente de FiveM comprueba que el juego sea propiedad del usuario antes de permitir la conexión. No existe un método compatible para evitar este requisito. Ejecutar un servidor que intente eludirlo no está permitido por Cfx.re.

¿Qué puertos necesita abiertos un servidor de FiveM?

El puerto 30120, tanto en TCP como en UDP. Los endpoints HTTP, como info.json, y las descargas de recursos usan TCP. El tráfico del juego del cliente usa UDP. Abrir sólo TCP produce el caso confuso en el que el servidor responde en un navegador, pero los jugadores ven Failed to get info from server. txAdmin necesita el puerto TCP 40120. Ese puerto debe permanecer cerrado a Internet.

¿Es seguro dejar txAdmin accesible en el puerto 40120?

No. txAdmin es una consola remota que reinicia el servidor, modifica la configuración y ejecuta comandos. Por tanto, un panel expuesto equivale a exponer el plano de control de todo el servidor del juego. No hay una contraseña predeterminada, pero una página de inicio de sesión pública invita a ataques contra las credenciales que no podrá detectar. Mantenga el puerto 40120 cerrado en el firewall y acceda al panel mediante un túnel SSH con ssh -N -L 40120:127.0.0.1:40120 user@server. Después, abra http://127.0.0.1:40120 en el navegador. No vincule txAdmin a 127.0.0.1 con TXHOST_INTERFACE, porque esa configuración también obliga al servidor del juego a usar loopback y ningún jugador podrá conectarse.

¿Debo fijar una compilación de artifact o usar siempre la última recomendada?

Fije la carpeta de la compilación numerada. La etiqueta recomendada cambia periódicamente a una compilación nueva. Por tanto, un script que descargue la compilación recomendada puede proporcionarle un binario diferente en cada reconstrucción, y un servidor que funcionaba ayer puede fallar al volver a desplegarlo por motivos ajenos a sus cambios. Registre el número de compilación y el hash de commit que probó. Actualice de forma deliberada y conserve la carpeta anterior en el disco para poder volver a ella editando una sola ruta en la unidad de systemd.

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