L2 Game Login Server Config: Ports, IPs and HexID Explained

A correct l2 game login server config comes down to three ports, two addresses and one registration file. Everything else — rates, drops, siege schedules — is tuning. Get these wrong and the server looks healthy in the console while every player times out at the login screen.
This guide covers the settings that decide reachability and account security, with the file names for L2J, L2JMobius and aCis. It assumes the server already installs, starts and lets you log in locally; if it does not, work through the install order first.
The three ports and what each one is for
People conflate these constantly, and it produces firewall rules that open the wrong thing:
| Port | Default | Who connects | Setting |
|---|---|---|---|
| Client → login | 2106 | Every player, before character select | LoginserverPort |
| Game → login | 9014 | Your own game server only | LoginPort |
| Client → game | 7777 | Every player, in world | GameserverPort |
Only 2106 and 7777 belong in a public firewall rule. Port 9014 is the internal handshake between your two Java processes: exposing it to the internet invites fake game-server registrations, which is exactly what AcceptNewGameServer controls.

Where the config files live in each pack
The login and game sides are separate processes with separate files, and no pack puts them in the same place:
- L2J Server: the
configfolder inside each deployed server — login and game have their own, and each carries its owndatabase.properties. - L2JMobius:
login/config/LoginServer.propertiesandgame/config/Server.properties. - aCis:
config/loginserver.propertiesandconfig/server.properties, both under the gameserver folder.
Edit with the server stopped. All three packs read the properties once at boot, so a change made while the process runs is silently ignored until the next restart — a classic "I fixed it and nothing changed" moment.
External vs internal address: the part that breaks public servers
Two different addresses leave the server and they are not interchangeable. The login server sends one address to players coming from the internet and another to players on your own LAN, because a public IP is not routable from inside most home networks.
aCis makes this explicit in the login config:
ExternalHostname = 203.0.113.10
InternalHostname = 192.168.1.50
LoginserverHostname = *
LoginserverPort = 2106
L2JMobius moved the same idea into a separate file. Copy default-ipconfig.xml to ipconfig.xml and put the public address on the gameserver element, leaving the subnet define lines mapping your LAN ranges:
<gameserver address="203.0.113.10">
<define subnet="192.168.0.0/16" address="192.168.1.50" />
</gameserver>
If ipconfig.xml is absent the server guesses its address, which works on a VPS with one interface and fails behind NAT or a second NIC. The symptom is specific: the server appears in the client's server list, then times out when the client tries to open the game connection.
Test from outside your network, on mobile data, before you announce a launch date. A LAN test never exercises the external address path.

HexID, server ID and game-server registration
A game server is not trusted by default; it registers once and gets an identity. In L2JMobius that identity is game/config/hexid.txt, generated or requested on the first start. If you copy a whole server folder to a second machine, you are copying an identity too — delete the hexid on the clone and let it register as a new game server.
RequestServerID asks for a slot in the client's server list (1 = Bartz by default), and AcceptAlternateID decides whether the login server may hand out a different one when the requested slot is taken. For a single-server setup, keep both defaults.
AcceptNewGameServer is the switch that decides whether an unknown game server may register at all. aCis ships it False; L2JMobius ships it True for convenience. On a live server, register your game server, then set it to False so nothing else can claim a slot.
Account settings to change before the first player arrives
Three defaults are fine for a test box and wrong for a live one:
AutoCreateAccounts— when true, any username and password creates an account on first login. Convenient for testing, terrible in production: it bypasses registration checks, email verification and any anti-bot you add later. Set it to false and create accounts through your website.LoginTryBeforeBan/LoginBlockAfterBan— brute-force protection, in seconds and per IP. L2JMobius ships 5 attempts and a 900-second block, aCis 10 and 600. Do not tighten it so far that a shared household locks itself out.ShowLicence— leave it on. aCis recommends the default; it shows the licence window at login and costs players one click.
On the game side, MaximumOnlineUsers and the connection limits in the flood-protector config (MaxConnectionPerIP, FastConnectionLimit) cap how much abuse one address can generate. Size them against your real population, not against the theoretical maximum of the pack.
Client protocol revisions
L2JMobius accepts a list of protocol revisions, for example AllowedProtocolRevisions = 603;606;607;610. A client whose revision is not in that list is dropped at login with a protocol error — or, in some clients, a generic failure players read as a wrong password. If players report "wrong password" on an account you know is correct, check this line and the client's system folder before you reset anything.
Do not add revisions you have not tested. Each one changes packet handling, and a partially supported revision produces crashes that are hard to trace back to this setting.
A five-minute reachability check
netstat -anshows 2106 and 7777 listening on0.0.0.0, not only on127.0.0.1.- The login console reports the game server registered, and no repeated reconnect attempts.
- A machine outside your network reaches the server list and enters the world.
- The game server log shows the external IP it handed to the client.
If step 3 fails while step 2 passes, the problem is the external address or the firewall, never the database.
Before players see the config
Once connections work, the next failure mode is a server nobody finds. A correct config with geodata still missing produces players falling through terrain on day one, so finish geodata before opening. Then get the server in front of players: a free listing on L2Calendar takes minutes and puts it in the chronicle and rate pages people actually browse — add your server. Paid placement sits above the free list and is the faster route to visibility: VIP listing.
