Cómo Crear un Servidor MTA:SA desde Cero en VPS Windows: Guía Completa
Aprende a montar un servidor MTA:SA desde cero en VPS Windows: descarga oficial, configuración de mtaserver.conf, puertos, ACL y primera conexión estable.
Montar un servidor Multi Theft Auto: San Andreas en VPS Windows no requiere stack compleja, pero hay detalles que traban a quien empieza: puerto 22126 UDP cerrado y el servidor nunca aparece en la lista pública, ACL mal configurada y el admin no logra loguear, o mtaserver.conf editado con etiqueta malformada y el proceso ni siquiera inicia. Este tutorial cubre el camino completo desde cero — descarga del paquete oficial, configuración mínima funcional, firewall, ACL y validación de conectividad.
El público objetivo es quien nunca corrió un MTA Server y quiere empezar con base sólida para evolucionar después a freeroam, race o gamemode personalizado en Lua. Tiempo de ejecución: cerca de 30 minutos desde el primer RDP hasta que el servidor aparece en el cliente y acepta la primera conexión real.
La elección por Windows Server tiene sentido para quien prefiere ambiente familiar, RDP directo para ajustar configs y ecosistema de tools .NET para automatización. Linux corre el mismo binario con tarball propio, pero queda fuera del alcance de esta guía.
Prerrequisitos
VPS Windows Server 2019 o 2022 con mínimo 2 vCPUs, 4 GB de RAM y 20 GB de disco SSD. Acceso administrativo vía RDP, cliente MTA:SA 1.6 instalado en tu máquina para probar la conexión, y copia legítima del GTA: San Andreas (el cliente MTA es gratuito; el juego base es requisito del cliente).
Windows Server 2022 1.6 (estable) 22003 UDP 22126 UDP 22005 TCP 4 GB Si estás dimensionando capacidad, el cuello de botella principal de MTA Server es CPU single-thread — el loop principal del servidor no distribuye carga entre núcleos. Por eso 2 vCPUs de frecuencia alta entregan más que 4 vCPUs más lentas. Disco SSD evita stutter cuando el servidor hace hot-reload de resources.
Descargar el paquete oficial de MTA Server
El servidor MTA se distribuye como ZIP por el MTA Team en el sitio oficial. Siempre descarga desde la fuente canónica: paquetes de terceros frecuentemente vienen con resources inyectados o binarios parcheados que comprometen la seguridad de la VPS entera.
Conecta a la VPS vía RDP usando las credenciales del aprovisionamiento. Abre PowerShell como administrador y crea la estructura de carpetas:
New-Item -Path "C:\MTAServer" -ItemType Directory
Set-Location "C:\MTAServer"Mantener el servidor fuera de C:\Program Files\ evita problemas de permisos del UAC cuando el proceso intenta escribir logs y cache de scripts.
Descarga el paquete 1.6 estable directo del sitio oficial usando PowerShell:
Invoke-WebRequest -Uri "https://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" -OutFile "mta.tar.gz"Para Windows, el instalador oficial está en https://mtasa.com/. Haz la descarga vía navegador en la propia VPS y extrae el contenido dentro de C:\MTAServer. El instalador Windows ajusta variables de entorno y crea la estructura server/, mods/deathmatch/ y los binarios MTA Server.exe.
Verifica la estructura final esperada:
C:\MTAServer\
├── MTA Server.exe
├── server\
│ └── mods\
│ └── deathmatch\
│ ├── mtaserver.conf
│ ├── acl.xml
│ └── resources\
└── x64\Si falta la carpeta resources, el servidor sube pero no tiene ningún modo de juego cargado — los clientes conectan y quedan mirando el mapa vacío.
Configurar mtaserver.conf
El archivo mtaserver.conf define identidad, puertos, ACL y qué resources suben en el boot. Es XML — cualquier etiqueta mal cerrada impide que el binario inicie.
Abre C:\MTAServer\server\mods\deathmatch\mtaserver.conf en Notepad++ (no uses el Notepad estándar — desorganiza el encoding en archivos con caracteres no-ASCII). Ajusta los bloques esenciales:
<servername>Mi Servidor Hostini</servername>
<serverip>auto</serverip>
<serverport>22003</serverport>
<httpport>22005</httpport>
<maxplayers>32</maxplayers>
<ase>1</ase>
<donotbroadcastlan>0</donotbroadcastlan><ase>1</ase> es lo que registra tu servidor en la lista pública vía UDP 22126. Sin eso, nadie te encuentra incluso con todo configurado.
Configura los resources que suben en el boot. Busca el bloque <resource ... /> y ajusta para el modo freeroam estándar:
<resource src="freeroam" startup="1" protected="0" />
<resource src="admin" startup="1" protected="0" />
<resource src="parachute" startup="1" protected="0" />Esos tres cubren el mínimo funcional: spawn de player, panel admin web en el puerto HTTP e ítem de paracaídas. Puedes evolucionar después a race, deathmatch oficial o gamemode personalizado.
Antes de iniciar el servidor por primera vez, define una contraseña fuerte para el usuario admin en acl.xml o vía comando addaccount en la consola. Servidor MTA sin contraseña de admin expuesto en internet se convierte en blanco en horas — bots barren el puerto 22003 buscando ACL default.
Liberar puertos en el firewall de Windows
Por defecto Windows Server bloquea todos los puertos inbound excepto RDP. Es necesario crear reglas explícitas para los tres puertos de MTA antes del primer boot.
Abre PowerShell como administrador y crea las reglas de firewall:
New-NetFirewallRule -DisplayName "MTA Server Game" -Direction Inbound `
-Protocol UDP -LocalPort 22003 -Action Allow
New-NetFirewallRule -DisplayName "MTA Server ASE" -Direction Inbound `
-Protocol UDP -LocalPort 22126 -Action Allow
New-NetFirewallRule -DisplayName "MTA Server HTTP" -Direction Inbound `
-Protocol TCP -LocalPort 22005 -Action AllowEl puerto 22003 es el tráfico de gameplay (sincronización de posición, RPC entre client y server). El 22126 es el ASE — Anti-cheat Stats Exchange, usado por el servidor maestro de MTA para pinguear el tuyo y listarlo públicamente. El 22005 TCP es el servidor HTTP interno que sirve scripts client-side descargables durante la conexión.
Verifica que las reglas están activas:
Get-NetFirewallRule -DisplayName "MTA Server*" | Format-Table DisplayName, Enabled, Direction, ActionSalida esperada: tres líneas con Enabled True y Action Allow. Si aparece False en alguna, corre Set-NetFirewallRule -DisplayName "MTA Server Game" -Enabled True.
Primer boot y validación
Con todo configurado, es hora de subir el servidor y confirmar que el tráfico está fluyendo.
Ejecuta el servidor por primera vez directamente desde el binario:
Set-Location "C:\MTAServer"
.\"MTA Server.exe"Verás la consola abrir con log de inicialización. Las líneas críticas son Resource 'freeroam' loaded, Networking started on port 22003 y ASE service started. Si aparece WARNING: Resource failed to load, anota el nombre — algún archivo está corrupto o ausente.
Crea la cuenta de admin directamente en la consola del servidor. Escribe:
addaccount admin ContraseñaFuerteAqui123
aclrequest list adminEl primer comando crea el usuario; el segundo lo asocia al grupo Admin definido en acl.xml. Sin eso, incluso logueado no puedes ejecutar comandos privilegiados in-game.
Desde tu máquina local, abre el cliente MTA:SA e intenta conectar directamente por IP. En el menú principal, ve a Quick Connect e ingresa:
ip-de-tu-vps:22003Si conecta y spawneas, el servidor está operacional. En paralelo, espera 5-10 minutos y busca el nombre del servidor en la pestaña Internet — ese es el tiempo medio que el master server tarda en propagar.
Para producción, registra el MTA Server.exe como servicio Windows usando NSSM. Esto garantiza auto-start en el boot de la VPS, restart automático en crash y logs separados en archivo. NSSM es open source y toma 5 minutos para configurar — vale la inversión sobre correr dentro de una sesión RDP que cae cuando te desconectas.
Verificación
La forma técnica de confirmar que todo funcionó en 3 capas:
# 1. Proceso corriendo
Get-Process "MTA Server"
# 2. Puertos abiertos escuchando
netstat -an | Select-String "22003|22005|22126"
# 3. Firewall liberando
Test-NetConnection -ComputerName ip-de-la-vps -Port 22003 -InformationLevel Detailed
La salida esperada de netstat muestra UDP 0.0.0.0:22003, TCP 0.0.0.0:22005 LISTENING y UDP 0.0.0.0:22126. Si falta alguno, el mtaserver.conf se guardó con etiqueta malformada o el binario no tiene permiso para abrir el puerto.
Resolución de problemas comunes
El servidor no aparece en la lista pública
Verifica en este orden: <ase>1</ase> está en el mtaserver.conf, el puerto 22126 UDP está liberado en el firewall, y la IP de la VPS es pública (no RFC 1918). Espera 10 minutos después del boot — el master server hace polling en intervalos largos.
”Connection timeout” en el cliente incluso con servidor corriendo
Casi siempre es firewall: o Windows está bloqueando el 22003 UDP, o el proveedor de la VPS tiene firewall de red por encima del OS. Prueba con Test-NetConnection desde una máquina externa para confirmar dónde muere el paquete.
Los resources no cargan después de editar mtaserver.conf
XML mal formado es la causa en el 90% de los casos. Abre el archivo en un validador XML online o en Notepad++ con plugin XML Tools — cualquier etiqueta no cerrada rompe el parse y el servidor ignora todos los resources que vienen después del error.
En ambiente de producción, crea un usuario dedicado (MTAService o similar) con permisos limitados solo a la carpeta C:\MTAServer y corre el servicio como ese usuario. Servidor MTA corriendo como SYSTEM significa que cualquier exploit en resource personalizado da acceso total a la VPS.
Próximos pasos
Con el servidor base funcionando, los caminos naturales de evolución son:
- Instalar un gamemode completo (Race, Freeroam personalizado, MTA RPG) descargándolo de Community MTA
- Configurar MySQL para persistir cuentas, stats e inventario de jugadores
- Habilitar HTTPS en el servidor de resources con certificado Let’s Encrypt
- Registrar el
MTA Server.execomo servicio Windows vía NSSM para auto-start - Configurar backup automático de la carpeta
resources/yacl.xml
Si estás llevando esto a producción y necesitas latencia baja para Latinoamérica, una VPS Hostini en São Paulo entrega pings de 10-25ms para gran SP y ofrece protección DDoS incluida — relevante porque un servidor MTA con IP expuesta es blanco recurrente de UDP flood en el puerto 22003.
Preguntas frecuentes
¿Cuál es la diferencia entre MTA Server 1.5 y 1.6?
La versión 1.6 es la línea estable actual, con correcciones de protocolo, mejor compatibilidad con clientes modernos y soporte HTTPS en el servidor de resources. La 1.5 aún funciona, pero los resources nuevos de la comunidad ya asumen 1.6 como base. Para un servidor nuevo, siempre empieza en la 1.6.
¿Necesito abrir los puertos en TCP o UDP?
MTA:SA usa UDP en los puertos 22003 (game) y 22126 (ASE/lista pública). El puerto 22005 es TCP, usado por el servidor HTTP interno de resources. Abrir solo TCP impide que los jugadores conecten; abrir solo UDP impide la descarga de scripts client-side.
¿Por qué mi servidor no aparece en la lista oficial del MTA?
Las causas comunes son: ase=1 ausente en mtaserver.conf, puerto 22126 UDP bloqueado en el firewall, servidor corriendo detrás de NAT sin port forwarding, o IP listada como reservada por la RFC 1918. El servidor maestro de MTA hace polling en UDP 22126 — sin respuesta, no aparece.
¿Cuántos slots aguantan 4 GB de RAM y 2 vCPUs?
Un servidor freeroam vanilla con 5 a 10 resources corre 64 slots tranquilo en esa configuración. Con gamemode pesado tipo MTA Race competitivo o roleplay con MySQL y 40+ resources, espera 32 slots estables. El cuello de botella es CPU single-thread: MTA no escala bien en múltiples núcleos.
¿Necesito Windows Server o Windows 10 normal me sirve?
Windows Server 2019 o 2022 es la elección técnica: scheduler mejor para procesos largos, sin límite de 20 conexiones inbound como en las versiones desktop, y soporte oficial para correr como servicio vía NSSM. Windows 10/11 funciona para dev local, pero en producción chocarás con el techo de conexiones en hora pico.
¿Cómo hago que el servidor se reinicie solo si cae?
La forma limpia es registrar el MTA Server como servicio Windows usando NSSM (Non-Sucking Service Manager), configurando reinicio automático en fallo. Una alternativa rápida es un archivo .bat con loop, pero pierdes control de la restart policy. NSSM acepta hasta dependencias, logs separados y recovery configurable.