Cómo Crear un Servidor de MU Online en un VPS — Paso a Paso
Aprende a montar un servidor privado de MU Online en un VPS desde cero: configuración del SO, SQL Server, GameServer, ConnectServer y reglas de firewall.
Montar un servidor privado de MU Online en un VPS requiere preparar con cuidado cuatro capas principales: el sistema operativo, el motor de base de datos, los binarios del servidor y la red. Esta guía recorre cada capa en orden para que termines con un entorno de servidor completamente funcional y correctamente asegurado.
Paso 1 — Elección y Configuración Inicial del VPS
Antes de tocar cualquier archivo del servidor, prepara correctamente el entorno de tu VPS. Elige un plan con al menos 4 vCPUs, 8 GB de RAM y 80 GB de SSD. Para más de 150 jugadores concurrentes, escala a 16 GB de RAM y agrega un disco secundario para copias de seguridad de la base de datos.
Instala Windows Server 2019 Standard 64-bit como sistema operativo. La mayoría de los paquetes de archivos de servidor de MU modernos están compilados contra las bibliotecas de Windows presentes en esta versión, y SQL Server 2019 funciona mejor sobre ella.
Tras el primer inicio de sesión por RDP, ejecuta Windows Update completamente antes de instalar cualquier otra cosa. Un sistema base con todos los parches aplicados evita conflictos de compatibilidad durante la instalación de SQL Server y .NET Framework.
> [!ATENCION] > Cambia el puerto RDP predeterminado (3389) por un puerto no estándar y restringe el acceso a tu propia dirección IP inmediatamente después de aprovisionar el VPS. Dejar RDP expuesto a toda internet provoca ataques de fuerza bruta en cuestión de horas desde que la máquina queda en línea.
Crea una cuenta de usuario de Windows dedicada para ejecutar los procesos del servidor. Nunca corras GameServer ni ConnectServer bajo la cuenta Administrador en producción. Esto limita el daño potencial si algún binario llegara a verse comprometido.
Paso 2 — Instalación y Configuración de SQL Server
Los archivos del servidor de MU Online almacenan todos los datos de personajes, cuentas e ítems en una base de datos de Microsoft SQL Server. Las ediciones Developer o Express de SQL Server 2019 son gratuitas para uso no comercial y completamente capaces para cargas de trabajo de servidores privados.
Ejecuta el instalador de SQL Server y selecciona únicamente Servicios del Motor de Base de Datos — no necesitas Analysis Services ni Reporting Services. Durante la instalación, establece el modo de autenticación en Modo Mixto y crea una contraseña robusta para sa. Anota esta contraseña; la referenciarás en cada archivo de configuración del servidor.
Tras la instalación, abre el Administrador de Configuración de SQL Server y verifica que:
- El protocolo TCP/IP esté Habilitado
- El puerto TCP en la pestaña de direcciones IP sea 1433
- El servicio SQL Server Browser esté En ejecución
Importa los archivos de backup de la base de datos de MU usando SQL Server Management Studio (SSMS). El procedimiento estándar es:
→ Abrir SSMS → Conectar a localhost con credenciales sa
→ Clic derecho en Bases de Datos → Restaurar base de datos
→ Seleccionar Dispositivo → ubicar el archivo .bak de cada base de datos:
MuOnline → datos de personajes e ítems
MuBilling → registros de cuentas y facturación
EventChipDB → seguimiento de eventos estacionales (si aplica)
→ Establecer el nombre de la base de datos de destino exactamente
como lo esperan los archivos del servidor
→ Pestaña Opciones → marcar "Sobrescribir la base de datos existente" → Aceptar
> [!CONSEJO] > Tras restaurar, ejecuta DBCC CHECKDB ('MuOnline') en una nueva ventana de consulta de SSMS. Un resultado limpio sin errores confirma que el backup está íntegro antes de invertir tiempo en configurar el resto.
Una vez restaurada, crea un inicio de sesión SQL dedicado con solo los permisos que necesitan los procesos del servidor:
-- Crear login de aplicación (reemplaza StrongPassword123 por el tuyo)
CREATE LOGIN muserver_app WITH PASSWORD = 'StrongPassword123';
-- Otorgar db_owner en cada base de datos de MU
USE MuOnline;
CREATE USER muserver_app FOR LOGIN muserver_app;
ALTER ROLE db_owner ADD MEMBER muserver_app;
USE MuBilling;
CREATE USER muserver_app FOR LOGIN muserver_app;
ALTER ROLE db_owner ADD MEMBER muserver_app;
Nunca uses sa en los archivos de configuración del servidor. El login dedicado mantiene tus credenciales de sa aisladas.
Paso 3 — Despliegue de los Binarios del Servidor
Organiza los archivos del servidor bajo una estructura de directorios limpia antes de configurar cualquier cosa:
C:\MuServer\
├── ConnectServer\ → binario CS y Config\
├── GameServer\ → binario GS, Data\, Maps\, Config\
├── DataServer\ → binario DS y Config\
└── Logs\ → carpeta de salida de logs compartida
Configuración del ConnectServer
El ConnectServer actúa como punto de entrada — le dice a los clientes a qué GameServer deben conectarse. Abre ConnectServer\Config\CSConfig.ini y establece:
[ServerInfo]
ServerPort → 55901 ; puerto al que se conectan los clientes primero
ServerListPort → 44405 ; puerto en el que el GS se registra
MaxConnections → 5000 ; ajustar según el pico esperado de jugadores
ServerIP → 0.0.0.0 ; escuchar en todas las interfaces
[Log]
LogDirectory → C:\MuServer\Logs\CS\
LogLevel → 1 ; 0=solo errores, 1=estándar, 2=detallado
Configuración del GameServer
La configuración del GameServer es más extensa. Abre GameServer\Config\GameServerInfo.ini:
[DBConnection]
SQLServer → 127.0.0.1,1433
SQLUser → muserver_app
SQLPassword → StrongPassword123
DBName → MuOnline
[Network]
GameServerCode → 0 ; ID del servidor mostrado a los clientes
GameServerPort → 55902 ; puerto principal del juego
MaxConnections → 1000 ; límite de jugadores concurrentes
[ConnectServer]
ConnectServerIP → 127.0.0.1 ; usar IP LAN si CS está en la misma máquina
ConnectServerPort → 44405
[Rates]
ExpRate → 100 ; multiplicador de experiencia
DropRate → 50 ; multiplicador de caída de ítems
127.0.0.1 para la comunicación entre procesos. Usar la IP pública para el tráfico interno pasa innecesariamente por la pila de red y añade latencia.Inicia los procesos en orden: primero DataServer, luego ConnectServer y finalmente GameServer. Revisa el directorio de Logs de cada uno para detectar errores de inicio antes de arrancar el siguiente proceso.
Paso 4 — Firewall y Configuración de Red
El Firewall de Windows debe permitir el tráfico entrante en los puertos del juego. Abre PowerShell como Administrador y ejecuta:
# ConnectServer — punto de entrada de clientes
netsh advfirewall firewall add rule `
name="MU ConnectServer" dir=in action=allow `
protocol=TCP localport=55901
# GameServer — tráfico de juego
netsh advfirewall firewall add rule `
name="MU GameServer" dir=in action=allow `
protocol=TCP localport=55902-55910
# Bloquear SQL Server desde el exterior (debe ser solo local)
netsh advfirewall firewall add rule `
name="Bloquear SQL Externo" dir=in action=block `
protocol=TCP localport=1433 remoteip=!LocalSubnet
Si tu proveedor de VPS tiene un panel de firewall de nube o grupo de seguridad independiente (común en los grandes proveedores), replica estas reglas también allí. Los firewalls a nivel de nube descartan paquetes antes de que lleguen al sistema operativo, proporcionando una capa defensiva adicional.
Verifica la conectividad desde una máquina cliente usando Telnet o un escáner de puertos: telnet TU_IP_VPS 55901. Una conexión exitosa significa que el ConnectServer es alcanzable. Si se queda colgado o rechaza la conexión, revisa las reglas del Firewall de Windows y confirma que el proceso ConnectServer está realmente en ejecución.
Paso 5 — Pruebas y Hardening Antes del Lanzamiento
Con todos los servicios funcionando, realiza una prueba completa de extremo a extremo:
- Apunta el
main.inide un cliente de prueba (o el archivo de configuración equivalente para tu Season) a la IP pública de tu VPS. - Crea una cuenta de prueba directamente en la base de datos
MuBillingo a través de un panel de administración. - Inicia sesión, crea un personaje y camina por Lorencia para confirmar que el juego básico funciona.
- Revisa el log del GameServer en busca de líneas de error repetidas — resuelve cualquier error de conexión a base de datos o advertencia de archivos Data faltantes antes de abrir al público.
Más allá de las pruebas funcionales, implementa estas medidas de hardening antes del lanzamiento público:
- Copias de seguridad automatizadas — programa un trabajo diario de backup de SQL Server mediante SQL Agent que exporte archivos
.baka un disco separado o almacenamiento remoto. - Watchdog de procesos — usa el Programador de Tareas de Windows con un script de PowerShell que compruebe si el proceso GS está vivo y lo reinicie automáticamente si se cuelga.
- Rotación de logs — los logs del servidor de MU crecen rápido; configura una limpieza semanal que archive los logs con más de 14 días de antigüedad en un archivo zip.
- Línea base anti-DDoS — documenta las capacidades de mitigación DDoS de tu proveedor de VPS y activa los niveles de protección incluidos antes de anunciar públicamente tu servidor.
Un servidor que sobrevive sus primeras 48 horas de tráfico público es aquel que fue probado a fondo antes de abrir las puertas.
Perguntas frequentes
¿Cuáles son los requisitos mínimos de un VPS para correr un servidor de MU Online?
Para un servidor pequeño de hasta 100 jugadores simultáneos necesitas al menos 4 vCPUs, 8 GB de RAM y 80 GB de almacenamiento SSD. Solo SQL Server puede consumir entre 2 y 4 GB de RAM en momentos de carga elevada, por lo que operar con menos de 8 GB causará inestabilidad.
¿Qué versión de Windows Server debo usar en el VPS?
Windows Server 2019 Standard de 64 bits es la opción más compatible para los archivos de servidor modernos de MU. Soporta SQL Server 2019, tiene buena estabilidad de RDP y recibe actualizaciones de seguridad regulares. Windows Server 2022 también funciona, aunque algunos archivos de Season antiguas pueden requerir parches de compatibilidad.
¿Es necesario abrir todos los puertos en el firewall del VPS?
No. Solo expone los puertos que tu servidor realmente utiliza: 55901 (ConnectServer), 55902–55910 (puertos de juego del GameServer), 1433 (SQL Server — solo interno, nunca exponerlo a internet), 3389 (RDP — restringido a tu propia IP) y 80/443 si alojas un sitio web. Exponer puertos innecesarios amplía tu superficie de ataque.
¿Cómo evito que los jugadores se desconecten cuando actualizo los archivos del servidor?
Programa ventanas de mantenimiento y anúncialas en Discord con al menos 30 minutos de antelación. Usa el script de reinicio del GS con un aviso de cuenta regresiva dentro del juego mediante el comando /notice de GM. Mantén siempre una copia de seguridad completa antes de cualquier actualización de archivos para poder revertir en menos de 5 minutos si algo falla.