Cómo Configurar MuServer para tu Servidor de MU Online
Guía técnica completa para instalar, configurar y poner en marcha MuServer: archivos clave, puertos, base de datos y primeras pruebas de conexión.
Montar un servidor privado de MU Online desde cero es un proceso técnico que involucra varios componentes interdependientes: el motor del servidor (MuServer), la base de datos relacional, los archivos de configuración de cada servicio y la apertura correcta de puertos. Esta guía cubre cada etapa con precisión, sin atajos que generen problemas difíciles de depurar más adelante.
Arquitectura general de MuServer
MuServer no es un binario único. Es un conjunto de procesos que se comunican entre sí y que deben levantarse en un orden específico. Antes de tocar cualquier archivo de configuración, conviene entender qué hace cada componente.
| Proceso | Ejecutable | Función |
|---|---|---|
| ConnectServer | ConnectServer.exe | Punto de entrada del cliente; distribuye conexiones a los GameServers disponibles |
| GameServer | GameServer.exe | Lógica del juego, mapas, mobs, combate |
| DataServer | DataServer.exe | Caché de datos entre GameServer y SQL |
| EventServer | EventServer.exe | Eventos programados (BC, DS, IT) |
| WebServer | WebServer.exe | API interna para registro y estadísticas web |
El orden de arranque correcto es: SQL Server → DataServer → ConnectServer → GameServer → EventServer. Arrancar el GameServer antes que el DataServer produce errores silenciosos que solo se manifiestan cuando el primer jugador intenta iniciar sesión.
localhost y 127.0.0.1 no son equivalentes en todos los drivers ODBC; usa siempre el nombre de la instancia SQL o la IP real de la interfaz de red.Preparar la base de datos
Crear la instancia y el esquema
Abre SQL Server Management Studio y ejecuta los siguientes pasos antes de configurar cualquier archivo .ini:
- Crea un nuevo login dedicado al servidor de MU. Nunca uses
saen producción. - Crea la base de datos
MuOnlinecon collationLatin1_General_CI_AS. - Ejecuta los scripts SQL incluidos en la carpeta
SQL/de tu distribución de MuServer en este orden exacto:
scripts/
├── 01_MuOnline_Schema.sql → tablas principales (Character, Account, Guild)
├── 02_MuOnline_StoredProcs.sql → procedimientos almacenados del GameServer
├── 03_MuOnline_InitData.sql → datos base (ítems, mapas, monsters)
└── 04_MuOnline_Events.sql → tablas de eventos (BloodCastle, DevilSquare)
Ejecutarlos fuera de este orden genera errores de foreign key que no siempre son obvios en el log.
Configurar el DSN ODBC
En el Panel de Control → Herramientas administrativas → Orígenes de datos ODBC (64 bits), crea un DSN de sistema con los siguientes parámetros:
Nombre del origen → MuOnline
Driver → SQL Server Native Client 11.0
Servidor → .\SQLEXPRESS (o el nombre de tu instancia)
Base de datos → MuOnline
Autenticación → SQL Server (usuario/contraseña)
Haz clic en "Probar origen de datos" antes de continuar. Si la prueba falla, ningún componente de MuServer levantará correctamente.
Configurar los archivos .ini principales
DBServer.ini — la conexión a SQL
Este archivo es compartido por DataServer y GameServer. Cada parámetro incorrecto aquí bloquea el arranque completo.
[ODBC]
DSN → MuOnline ; nombre exacto del DSN creado en el paso anterior
USER → mu_admin ; usuario SQL con permisos db_owner sobre MuOnline
PASSWORD → TuPasswordSegura ; no uses caracteres especiales sin escapar
TIMEOUT → 30 ; segundos antes de que la conexión se considere perdida
[LOG]
SaveLog → 1 ; habilitar log de errores de DB
LogPath → Logs\DBServer\ ; el directorio debe existir antes del arranque
> [!ATENCION] > El parámetro PASSWORD en DBServer.ini queda en texto plano. Asegúrate de que el directorio de MuServer tenga permisos restrictivos: solo el usuario del sistema operativo que ejecuta los servicios debe tener acceso de lectura. Nunca expongas este directorio por red compartida.
ConnectServer.ini — distribución de conexiones
[Setting]
ServerGroup → 1 ; identificador del grupo de servidores
MaxUser → 10000 ; máximo de conexiones simultáneas al ConnectServer
Port → 44405 ; puerto que el cliente contacta primero
[SERVER_INFO_1]
ServerCode → 0 ; código que el cliente recibe al conectar
ServerIP → 0.0.0.0 ; usa la IP pública del servidor si hay NAT
ServerPort → 55901 ; debe coincidir con el Port del GameServer
ServerName → Lorencia ; nombre visible en la lista de servidores del cliente
MaxUser → 500 ; máximo de usuarios en este GameServer específico
Cada instancia de GameServer adicional requiere un bloque [SERVER_INFO_N] incrementando el índice y el puerto (55902, 55903, etc.).
GameServer.ini — configuración del juego
[GameServerInfo]
ServerCode → 0
ServerPort → 55901
MaxUser → 500
[Rates]
ExpRate → 10 ; multiplicador de experiencia (1 = rate oficial)
DropRate → 5 ; multiplicador de drop de ítems
ZenRate → 5 ; multiplicador de zen obtenido
[DBServer]
IP → 127.0.0.1
Port → 55980 ; puerto interno del DataServer, no de SQL directamente
> [!CONSEJO] > Durante las primeras pruebas, establece MaxUser → 5 y ExpRate → 100. Esto permite verificar que el servidor funciona correctamente con un ciclo de prueba rápido (subir de nivel en minutos) sin necesidad de abrir el servidor a conexiones externas. Ajusta a los valores definitivos solo cuando el servidor esté estable.
Secuencia de arranque y verificación
Arrancar los servicios
Con todos los .ini configurados, levanta los componentes en este orden desde sus respectivos directorios:
1. [SQL Server] → asegúrate de que la instancia está activa en services.msc
2. DataServer.exe → espera el mensaje "DataServer Ready" en la consola
3. ConnectServer.exe → espera "ConnectServer Listening on port 44405"
4. GameServer.exe → el arranque tarda 20-60 segundos mientras carga los mapas
5. EventServer.exe → opcional en la primera prueba
Si algún proceso cierra su consola inmediatamente, el error está en los logs. Cada componente escribe en su propia carpeta Logs/; el archivo más reciente con extensión .log contiene el motivo exacto del fallo.
Verificar conectividad
Desde la máquina donde corre el servidor, abre una terminal y ejecuta:
netstat -an | findstr "44405 55901"
Debes ver ambos puertos en estado LISTENING. Si alguno no aparece, el componente correspondiente no levantó correctamente, independientemente de lo que muestre su consola.
Para probar desde la red local antes de abrir puertos externos, edita el archivo main.ini del cliente y apunta connect_server_ip a la IP local del servidor. Si el cliente muestra la lista de servidores con el nombre configurado en ServerName, el ConnectServer está funcionando.
Gestión de puertos y firewall
Abre las siguientes reglas de entrada en el firewall de Windows (o en tu router si el servidor está detrás de NAT):
Puerto 44405 TCP → ConnectServer (entrada de clientes)
Puerto 55901 TCP → GameServer instancia 0
Puerto 55980 TCP → DataServer (solo red interna, nunca exponer externamente)
Puerto 1433 TCP → SQL Server (solo red interna)
El DataServer y SQL Server no deben ser accesibles desde Internet. Si tu entorno tiene un firewall perimetral, crea reglas de allow solo para los puertos 44405 y 559xx entre la IP del servidor y el rango de IPs de los jugadores.
Próximos pasos
Con el servidor levantado y verificado, los siguientes temas de administración son:
- Backup automático de la base de datos: programa un SQL Agent Job que genere un
.bakdiario de la baseMuOnline. - Múltiples instancias de GameServer: duplica el directorio del GameServer, asigna un
ServerCodeyServerPortdistintos, y añade el bloque correspondiente enConnectServer.ini. - Configuración de eventos: el
EventServer.inicontrola horarios de Blood Castle, Devil Square e Ilusion Temple; cada evento requiere que el mapa correspondiente esté habilitado en el GameServer. - Monitoreo de logs: establece una tarea programada que comprima y archive los logs más antiguos de 7 días; en servidores con actividad media, los logs pueden ocupar varios GB por semana.
La estabilidad de un servidor privado de MU Online depende casi completamente de que la base de datos esté sana y de que los archivos .ini sean consistentes entre sí. Cualquier discrepancia en códigos de servidor, puertos o cadenas de conexión produce síntomas que parecen errores del cliente pero tienen su origen en la configuración del servidor.
Perguntas frequentes
¿Qué versión de SQL Server es compatible con MuServer?
MuServer es compatible con Microsoft SQL Server 2008 R2, 2012, 2014 y 2016. Se recomienda SQL Server 2014 Express como punto de partida por su facilidad de instalación. Versiones más recientes como 2019 o 2022 pueden requerir ajustes en los drivers ODBC y en la cadena de conexión del archivo DBServer.ini.
¿Cuáles son los puertos mínimos que debo abrir en el firewall?
Los puertos esenciales son 44405 (ConnectServer), 55901–55910 (GameServer, uno por instancia), 80 (WebServer si aplica) y 3306 o 1433 según el motor de base de datos. Abre también el puerto 13580 si utilizas el módulo de castillo de sangre.
¿Por qué los clientes se conectan pero no aparecen personajes?
Este síntoma casi siempre apunta a un error en la cadena de conexión del GameServer o a permisos insuficientes del usuario SQL sobre la base de datos MuOnline. Revisa el archivo GameServer.ini → sección [DBServer], verifica usuario/contraseña y ejecuta EXEC sp_changedbowner 'muonline_user' en SQL Management Studio.
¿Cómo aumentar el límite de jugadores simultáneos?
El parámetro MaxUser en GameServer.ini controla el límite por instancia. Para escalar más allá de 500 usuarios por instancia es necesario ajustar también los parámetros de memoria del proceso (MaxMemory) y garantizar que el servidor tenga al menos 4 GB de RAM libres por instancia activa. Múltiples instancias de GameServer pueden ejecutarse en paralelo apuntando a puertos distintos.