Install Lineage 2 Server Files: The Exact Order of Steps

To install lineage 2 server files you do four things in a fixed order: prepare the runtime, create and populate the database, point the login and game server configs at it, then connect a patched client. Nearly every failed first install is a sequencing problem rather than a code problem — a database installed after the configs were edited, a Java version newer than the pack expects, or a game server that never registered with the login server.
This is the whole sequence with a checkpoint after each stage, so you know which step broke instead of guessing. It works for L2J, L2JMobius and aCis; the file names differ slightly between packs, and I flag where. If you are still choosing a pack, read best server files and packs and L2J vs L2OFF first, because the pack decides everything below.
1. Pick the pack and the chronicle before anything else
An Interlude pack and a High Five pack need different clients, different datapacks and often different Java versions. Decide the pair (pack + chronicle) and stay with it for the whole install. Mixing a High Five core with an Interlude datapack produces a server that starts, logs errors about missing NPCs, and disconnects players at character select.
Two sane starting points, both actively maintained:
- L2J Server — the reference High Five implementation from the original project. Official installation docs are current and precise: L2J Server installation guide.
- L2JMobius — one folder per chronicle, from C4 through the modern lines. Source and releases live at MobiusDevelopment/L2J_Mobius.
- aCis — Interlude-focused, lighter than Mobius, popular for low-rate servers. Source at Tryskell/acis_public.
If you want the pack-specific walkthrough instead of the general order, the dedicated guides are L2JMobius setup and aCis Interlude pack setup.

2. Prepare the runtime: Java, database, build tool
Three pieces of software, installed before you clone anything:
- JDK. Match what the pack targets, not what is newest. The current L2J line builds on JDK 25 and its docs install it with
winget install EclipseAdoptium.Temurin.25.JDK. aCis branches target JDK 8, 11 or 21 depending on the revision — the README andbuild.xmlstate which. - Database server. MariaDB is the recommendation; MySQL 8 works. Create a dedicated user for the server instead of running it as
root, and scope it to the schema:CREATE USER IF NOT EXISTS 'l2j'@'localhost' IDENTIFIED BY 'change-this-password'; GRANT ALL PRIVILEGES ON l2j.* TO 'l2j'@'localhost'; FLUSH PRIVILEGES; - Build tool. Maven for L2J (it ships a wrapper:
mvnw.cmd installon Windows,./mvnw installelsewhere), Ant for L2JMobius and aCis, usually driven from Eclipse.
Checkpoint: java --version prints the version the pack expects, and you can log into MariaDB with the new user. If either fails, stop. Nothing downstream will work.
SetJAVA_HOMEand put%JAVA_HOME%\binfirst onPATH. Two JDKs on one machine is the most common cause of "it compiled yesterday" on Windows.
3. Build and deploy the server files
Build from source rather than trusting a repack. It takes ten minutes and it proves the toolchain is correct.
L2J has three modules — login server, game server and datapack. Build all three, deploy the login and game artifacts into separate folders, then unpack the datapack into the game server folder so it has a data directory:
mvnw.cmd install
mkdir C:\opt\l2j\server\login
mkdir C:\opt\l2j\server\game
For L2JMobius and aCis, the usual flow is an Ant build into a build/ or dist/ folder, then you copy the compiled login and game folders somewhere without spaces in the path. L2JMobius ships one datapack per chronicle, so its data folder already sits inside the game folder.
Checkpoint: each deployed folder contains a start script (startLoginServer.bat / LoginServer.vbs depending on the pack) and a config directory with the properties files. No config files, no deploy — you unzipped the wrong artifact.

4. Install the database schema
Both servers need tables, and they need separate installs even when they share one database name. L2J does it through its CLI with an explicit mode and type:
l2jcli.bat
db install -sql C:\opt\l2j\server\login\sql -u l2j -p YOURPASS -m FULL -t LOGIN -c -mods
db install -sql C:\opt\l2j\server\game\sql -u l2j -p YOURPASS -m FULL -t GAME -c -mods
L2JMobius ships a db_installer folder with a login installer and a game installer; forks that do not ship one give you the login and game SQL folders to import in order. Run both against the same schema and accept the defaults unless you deliberately split databases.
Checkpoint: two table families exist in the schema — accounts and login-side tables, plus the game tables. If the game install stops halfway, fix the error and re-run with a full install; do not proceed with a partial schema.
5. Point both configs at the database
This is where most installs stall, because the credentials have to be edited in two places and the file names differ per pack:
| Pack | Login server config | Game server config |
|---|---|---|
| L2J Server | login/config/database.properties | game/config/database.properties |
| L2JMobius | login/config/LoginServer.properties | game/config/Server.properties |
| aCis | config/loginserver.properties | config/server.properties |
Set the URL, user and password in both. Leave the hosts at their defaults until the server runs locally — the LAN/WAN setup is a separate job, covered in game and login server configuration.
Checkpoint: the first login-server start reaches "listening" without a JDBC error, and the game server logs a successful database connection. A Communications link failure here means credentials or the URL, not the schema.
6. Start the login server, then the game server
Order matters: the game server registers itself with the login server on start, so the login server must be up first.
- Start the login server. Default client-facing port: 2106.
- Start the game server. It connects to the login server on 9014 and opens 7777 for players.
- Watch the login-server log for the registration line, then check the game server stayed alive for a full minute.
Checkpoint: the login server reports a registered game server and the game server stops logging "not registered". If the game server exits immediately, the usual suspects are a wrong Java version, a missing datapack path, or a database user without rights on the game schema.
7. Patch the client and log in
For a local test the documented L2J approach does not touch the client: either add the host entry
127.0.0.1 l2authd.lineage2.com
or launch the binary with an IP argument (l2.bin IP=127.0.0.1). Neither route edits a client file. The L2J documentation states that client modifications, including GameGuard and L2.ini changes, are not allowed, so keep the client clean and use one of these two methods.
Create an admin account from the CLI (account create -u YourName -p -a 8, where 8 is master access), log in, and confirm you land in the world rather than at a disconnected character list.
Checkpoint: you can create a character and walk ten steps without the client freezing. That one test exercises the login handshake, the game server and the datapack at once.
8. One table to diagnose a failed install
| Symptom | Stage that failed | What to check |
|---|---|---|
| Build errors on Ant or Maven | Runtime | JDK version vs pack target, JAVA_HOME |
db install stops early | Schema | DB user grants, SQL folder path, MariaDB version |
| Login server starts, game server exits | Config | Credentials, datapack root, port already in use |
| Servers run, client cannot connect | Network | Ports 2106/7777, external address config, firewall |
| Login works, character list empty | Datapack | Wrong chronicle datapack for the core |
Fix the stage, not the symptom. Reinstalling the database because the client cannot connect wastes an evening and changes nothing.
9. Before you invite anyone
A local login is not a live server. Geodata has to be loaded (otherwise players walk through walls and mobs aggro through them), rates and drops need to match the server you advertised, and the client patch has to be distributed with a launcher. Load geodata next — geodata setup explains the files and the three settings that matter.
When the server is ready for players, list it where people actually look. A free listing on L2Calendar takes a few minutes and puts the server in front of players browsing by chronicle and rate: add your server. If you want the top of the category instead of page three, VIP placement is the paid option, and it is worth reading whether VIP is worth it before you spend.
