Instalar los archivos de un servidor de Lineage 2: el orden exacto

Para instalar lineage 2 server haces cuatro cosas en un orden fijo: preparar el entorno de ejecución, crear y poblar la base de datos, apuntar las configuraciones del login y del servidor de juego a esa base de datos y, por último, conectar un cliente parcheado. Casi toda primera instalación fallida es un problema de secuencia y no de código: una base de datos instalada después de editar las configuraciones, una versión de Java más nueva de lo que espera el paquete o un servidor de juego que nunca se registró en el login.
Esta es la secuencia completa con un punto de control tras cada etapa, para que sepas qué paso se rompió en lugar de adivinar. Funciona con L2J, L2JMobius y aCis; los nombres de archivo cambian un poco entre paquetes y lo indico donde ocurre. Si todavía estás eligiendo paquete, lee antes los mejores archivos y paquetes de servidor y L2J frente a L2OFF, porque el paquete decide todo lo que viene después.
1. Elige el paquete y la crónica antes que nada
Un paquete de Interlude y uno de High Five necesitan clientes distintos, datapacks distintos y a menudo versiones de Java distintas. Decide la pareja (paquete + crónica) y respétala durante toda la instalación. Mezclar un core de High Five con un datapack de Interlude produce un servidor que arranca, registra errores de NPCs ausentes y desconecta a los jugadores en la selección de personaje.
Dos puntos de partida sensatos, ambos mantenidos:
- L2J Server — la implementación de referencia de High Five del proyecto original. Su documentación oficial está actualizada: guía de instalación de L2J Server.
- L2JMobius — una carpeta por crónica, desde C4 hasta las líneas modernas. Código y versiones en MobiusDevelopment/L2J_Mobius.
- aCis — centrado en Interlude, más ligero que Mobius y popular en servidores de rate bajo. Código en Tryskell/acis_public.
Si prefieres la guía específica de un paquete en lugar del orden general, esos artículos son instalación de L2JMobius y instalación del paquete aCis Interlude.

2. Prepara el entorno: Java, base de datos y herramienta de compilación
Tres piezas de software, instaladas antes de clonar nada:
- JDK. Usa el que espera el paquete, no el más nuevo. La línea actual de L2J compila con JDK 25 y su documentación lo instala con
winget install EclipseAdoptium.Temurin.25.JDK. Las ramas de aCis apuntan a JDK 8, 11 o 21 según la revisión: el README y elbuild.xmllo indican. - Servidor de base de datos. MariaDB es la recomendación; MySQL 8 también sirve. Crea un usuario dedicado para el servidor en lugar de ejecutarlo como
root, y limítalo a su esquema:CREATE USER IF NOT EXISTS 'l2j'@'localhost' IDENTIFIED BY 'cambia-esta-clave'; GRANT ALL PRIVILEGES ON l2j.* TO 'l2j'@'localhost'; FLUSH PRIVILEGES; - Herramienta de compilación. Maven para L2J (incluye wrapper:
mvnw.cmd installen Windows,./mvnw installen el resto), Ant para L2JMobius y aCis, normalmente desde Eclipse.
Punto de control: java --version muestra la versión que espera el paquete y puedes entrar en MariaDB con el usuario nuevo. Si algo falla ahí, detente. Nada de lo que viene después va a funcionar.
ConfiguraJAVA_HOMEy pon%JAVA_HOME%\binprimero en elPATH. Dos JDK en la misma máquina es la causa más común del "ayer compilaba" en Windows.
3. Compila y despliega los archivos del servidor
Compila desde el código en lugar de confiar en un repack. Tarda diez minutos y demuestra que la cadena de herramientas está bien.
L2J tiene tres módulos: servidor de login, servidor de juego y datapack. Compila los tres, despliega los artefactos de login y juego en carpetas separadas y descomprime el datapack dentro de la carpeta del servidor de juego para que tenga un directorio data:
mvnw.cmd install
mkdir C:\opt\l2j\server\login
mkdir C:\opt\l2j\server\game
En L2JMobius y aCis el flujo habitual es una compilación Ant hacia build/ o dist/, y luego copias las carpetas login y game compiladas a una ruta sin espacios. L2JMobius distribuye un datapack por crónica, así que su carpeta data ya está dentro de la carpeta de juego.
Punto de control: cada carpeta desplegada contiene un script de arranque (startLoginServer.bat / LoginServer.vbs según el paquete) y un directorio config con los archivos de propiedades. Sin archivos de configuración no hay despliegue: descomprimiste el artefacto equivocado.

4. Instala el esquema de la base de datos
Ambos servidores necesitan tablas, y necesitan instalaciones separadas aunque compartan el mismo nombre de base de datos. L2J lo hace desde su CLI con modo y tipo explícitos:
l2jcli.bat
db install -sql C:\opt\l2j\server\login\sql -u l2j -p TUCLAVE -m FULL -t LOGIN -c -mods
db install -sql C:\opt\l2j\server\game\sql -u l2j -p TUCLAVE -m FULL -t GAME -c -mods
L2JMobius incluye una carpeta db_installer con un instalador para login y otro para juego; los forks que no la traen te dan las carpetas SQL de login y de juego para importarlas en orden. Ejecuta ambos contra el mismo esquema y acepta los valores por defecto salvo que quieras separar bases de datos a propósito.
Punto de control: existen dos familias de tablas en el esquema, las de cuentas y login y las del juego. Si la instalación del juego se corta a medias, corrige el error y repite con instalación completa; no sigas con un esquema parcial.
5. Apunta ambas configuraciones a la base de datos
Aquí se atascan casi todas las instalaciones, porque las credenciales se editan en dos sitios y los nombres de archivo cambian según el paquete:
| Paquete | Config del login | Config del juego |
|---|---|---|
| L2J Server | la carpeta config de cada servidor desplegado: cada lado tiene su propio database.properties | |
| L2JMobius | login/config/LoginServer.properties | game/config/Server.properties |
| aCis | config/loginserver.properties | config/server.properties |
Configura URL, usuario y contraseña en ambas. Deja los hosts por defecto hasta que el servidor funcione en local: la configuración LAN/WAN es otro trabajo, cubierto en configuración del servidor de juego y login.
Punto de control: el primer arranque del login llega a "listening" sin error JDBC y el servidor de juego registra una conexión correcta a la base de datos. Un Communications link failure aquí es credenciales o URL, no esquema.
6. Arranca primero el login y después el servidor de juego
El orden importa: el servidor de juego se registra en el login al arrancar, así que el login tiene que estar levantado antes.
- Arranca el servidor de login. Puerto por defecto de cara al cliente: 2106.
- Arranca el servidor de juego. Se conecta al login por 9014 y abre 7777 para los jugadores.
- Mira el log del login para ver la línea de registro y comprueba que el servidor de juego sigue vivo un minuto entero.
Punto de control: el login informa de un servidor de juego registrado y el servidor de juego deja de registrar "not registered". Si el servidor de juego se cierra de inmediato, los sospechosos habituales son una versión de Java incorrecta, una ruta de datapack ausente o un usuario de base de datos sin permisos sobre el esquema del juego.
7. Parchea el cliente y entra
Para una prueba local el método documentado de L2J no toca el cliente: o añades la entrada de host
127.0.0.1 l2authd.lineage2.com
o lanzas el binario con un argumento de IP (l2.bin IP=127.0.0.1). Ninguna de las dos rutas edita un archivo del cliente. La documentación de L2J indica que las modificaciones del cliente, incluidos GameGuard y los cambios en L2.ini, no están permitidas, así que mantén el cliente limpio y usa uno de estos dos métodos.
Crea una cuenta de administrador desde la CLI (account create -u TuNombre -p -a 8, donde 8 es acceso maestro), entra y confirma que llegas al mundo y no a una lista de personajes desconectada.
Punto de control: puedes crear un personaje y caminar diez pasos sin que el cliente se congele. Esa sola prueba ejercita el handshake del login, el servidor de juego y el datapack a la vez.
8. Una tabla para diagnosticar una instalación fallida
| Síntoma | Etapa que falló | Qué revisar |
|---|---|---|
| Errores de compilación en Ant o Maven | Entorno | Versión de JDK frente al objetivo del paquete, JAVA_HOME |
db install se corta | Esquema | Permisos del usuario, ruta de la carpeta SQL, versión de MariaDB |
| El login arranca, el juego se cierra | Configuración | Credenciales, raíz del datapack, puerto ya en uso |
| Los servidores corren, el cliente no conecta | Red | Puertos 2106/7777, dirección externa, firewall |
| El login va, la lista de personajes está vacía | Datapack | Datapack de una crónica distinta al core |
Arregla la etapa, no el síntoma. Reinstalar la base de datos porque el cliente no conecta cuesta una noche y no cambia nada.
9. Antes de invitar a nadie
Un login local no es un servidor en producción. Hay que cargar geodata (si no, los jugadores atraviesan paredes y los mobs agreden a través de ellas), los rates y drops deben coincidir con lo que anunciaste, y el parche de cliente tiene que distribuirse con un launcher. Lo siguiente es cargar geodata: configuración de geodata explica los archivos y los tres ajustes que importan.
Cuando el servidor esté listo para jugadores, publícalo donde la gente mira. Un listado gratuito en L2Calendar tarda unos minutos y pone el servidor delante de jugadores que navegan por crónica y rate: añade tu servidor. Si quieres la parte alta de la categoría en lugar de la tercera página, el listado VIP es la opción de pago, y conviene leer si el VIP merece la pena antes de gastar.
