How to set up the ChatServer (global chat) in MU Online
Set up the ChatServer on your MU Online server and enable global chat, private messages, and the friends system: the service's role, the default port, integration with Connect/Join/GameServer, in-game testing, and fixes for the most common errors.
The ChatServer is the service that gives your MU Online server its voice: it makes global chat appear, delivers private messages from one player to another, and, on most emulators, powers the friends list and the guild board. It is not the heart of the game — the GameServer runs without it — but it
The ChatServer is the service that gives your MU Online server its voice: it makes global chat appear, delivers private messages from one player to another, and, on most emulators, powers the friends list and the guild board. It is not the heart of the game — the GameServer runs without it — but it is what turns an "empty" server into one with a living community. The problem is that it almost never works "on the first try": it's a network service, and the smallest IP or port mismatch between it, the GameServer, and the client leaves chat silent without any clear error. This tutorial covers what the ChatServer does, when you actually need it, how to configure it, which port to use, how to integrate it with the rest of the MuServer, and how to solve the most common errors.
What the ChatServer is
Within a MU server's set of services (Connect, Join, DataServer, GameServer, and ChatServer), each one has an isolated function. The ChatServer handles the message traffic that isn't combat or movement: global chat (the channel everyone reads), private messages (whisper/PM), and — depending on the emulator — the friends list, guild invites, and system messages. It works like a "telephone exchange": clients connect to it, and it forwards each message to the right recipient in real time. It talks to the GameServer to know who is online and which account each character belongs to.
When the ChatServer is needed
You need the ChatServer whenever you want these features active:
- Working global chat — the channel that appears for all players.
- Private messages between players (whisper).
- Friends / friend list system — on many emulators the ChatServer is what powers this.
- Guild invites and board — depending on the season and the emulator.
If your only goal is to bring the server up to test login and gameplay, the ChatServer can stay off without stopping the game. But for any server that will host real players, it is practically mandatory: without it, a player clicks "send message" and nothing happens, which gives the impression of a broken server.
Prerequisites
- A MU server already running with Connect, Join, DataServer, and GameServer up (see the server creation tutorial).
- Access to the ChatServer folder (the executable and the configuration file).
- The definitive server IP (the public IP if it's a VPS/dedicated box; or the local IP if it's a test on an internal network).
- Permission to open ports on the Windows firewall and in the provider/VPS panel.
- A backup of the configuration files before any changes.
Files and ports involved
The names vary by emulator (IGCN, MuEMU, X-Team, Season 6). The most common elements:
| Function | Example (varies by emulator) | Note |
|---|---|---|
| Service executable | ChatServer.exe | Comes up in its own window |
| ChatServer config | ChatServer.ini / ChatServer.dat | Defines IP and ports |
| Public port (clients) | 55906 | The port the client/GameServer uses |
| Internal/admin port | 55901 or 55911 | Internal communication/control |
| Reference in the GameServer | GameServerInfo / *.dat | Where the GS points to the ChatServer |
| IP published in the client | main.dll / IPManager | What the player connects to |
> Treat each port number as part of a "trio": what the ChatServer listens on, what the GameServer reports, and what the firewall opens. If the three don't match, global chat won't come up.
Step 1 — Define the ChatServer's IP and ports
Open the ChatServer's configuration file and locate the IP and port keys. On many emulators the block looks like this (key names vary):
[ChatServer]
BindIP = 0.0.0.0
PublicIP = 192.168.0.10
Port = 55906
AdminPort = 55901
GameServerConnect = 127.0.0.1
BindIP = 0.0.0.0makes the service listen on all interfaces (recommended on a VPS).PublicIPis the IP clients use to reach it — on an online server, the public IP.Portis the chat's public port (historical default 55906).AdminPortis the internal control port.
Save it and keep these values written down — you will repeat them in the GameServer and in the firewall.
Step 2 — Point the GameServer to the ChatServer
The GameServer needs to know where the ChatServer is in order to forward message traffic. In the GameServer's info file, locate the keys that mention the ChatServer and fill them with the same IP and port from Step 1:
ChatServerAddress = 192.168.0.10
ChatServerPort = 55906
Here lives beginners' number-one mistake: putting 127.0.0.1 in the ChatServer but the public IP in the GameServer (or vice versa). On a local network server, use the local IP in both; on an online server, use the public IP in both. Consistency is everything.
Step 3 — Publish the correct IP in the client
The player's client also needs to reach the ChatServer. On many emulators, the client uses the same IP as the main server (defined in main.dll / the client's IP file) and only the port changes internally. Confirm that the IP published to players is the same public IP you set as the ChatServer's PublicIP. If the client connects to one IP and the ChatServer listens on another, login works (because the Connect responds), but global chat stays silent.
Step 4 — Open the port in the firewall and NAT
The service is only useful if the port is reachable. Open it at two levels:
- Windows firewall — create an inbound rule allowing the ChatServer's TCP port (e.g., 55906) and the admin port if it is used externally.
- NAT / provider panel — on a VPS or dedicated box, open/forward the same port in the provider panel. Many providers block ports by default.
Example of a quick Windows rule (run as administrator; adjust the port to your emulator):
New-NetFirewallRule -DisplayName "MU ChatServer 55906" -Direction Inbound -Protocol TCP -LocalPort 55906 -Action Allow
To test whether the port is open from outside, use an external port checker pointing at the ChatServer's public IP and port.
Step 5 — Start the services in the right order
The startup order matters. The safe standard is:
- DataServer (database/data).
- Connect Server.
- Join Server.
- GameServer.
- ChatServer last (or alongside the GameServer).
If the ChatServer starts before the GameServer and depends on it to check who is online, it can end up in an error state. Start the GameServer first, confirm it is stable, and then start the ChatServer.
Step 6 — Test chat in-game
- Bring up all services and confirm that the ChatServer window shows it "listening" on the correct port.
- Log in with two accounts (two client instances or two computers).
- Send a message in global chat from one account and confirm the other receives it.
- Test a private message (whisper) from one account to the other.
- Test the friends list: add, confirm the online/offline status, and send a message through the list.
- Confirm that when one account logs out, the other sees the status update.
If global chat works but whisper doesn't (or vice versa), the issue is usually specific to the season/emulator — in that case, review the ChatServer keys related to each feature.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Global chat doesn't appear | IP/port mismatch between ChatServer and GameServer | Match the IP and port in both files |
| ChatServer closes on launch | Port already in use by another service | Change the port or free whatever occupies it |
| Whisper doesn't arrive | Client pointing at a different IP than the ChatServer | Confirm the IP published in the client |
| Works locally, not online | Port blocked in the firewall/NAT | Open the port in Windows and in the provider panel |
| Friends list frozen | ChatServer started before the GameServer | Restart in the correct order (GS before CS) |
| Chat drops after a few minutes | Loss of the GS↔CS connection (wrong internal IP) | Adjust the internal integration IP |
Best practices and performance
- Run it alongside on a small server, split it off on a large one. For few players, the ChatServer on the same machine as the GameServer is enough. If the server grows, moving the ChatServer to another machine relieves the GameServer.
- Document the IP/port trio. Note in one place the IP and port used in the ChatServer, the GameServer, and the client. Most chat problems are a mismatch among these three.
- Don't rely on automatic history. The ChatServer routes in real time; it doesn't store logs. If you need moderation or a record of conversations, plan a separate logging system.
- Restart the trio together. When you change the IP (a VPS migration, for example), update ChatServer, GameServer, and client in the same maintenance window so chat doesn't end up inconsistent.
Launch checklist
- ChatServer IP and port defined and noted.
- GameServer pointing to the same ChatServer IP/port.
- IP published in the client matching the ChatServer's PublicIP.
- Port opened in the Windows firewall and in the provider NAT.
- Services starting in the correct order (ChatServer last).
- Global chat tested between two accounts.
- Private message (whisper) tested.
- Friends list and online/offline status validated.
- Configuration backup saved before the public launch.
With the ChatServer up and tested, your server stops being a silent map and starts to have conversation, rivalry, and community — which is what keeps players around. The natural next step is to standardize system messages and global announcements for events, using the same chat channel to engage everyone online.
Frequently asked questions
Is the ChatServer required for the server to work?
No. The GameServer comes up and the game runs without it. The ChatServer handles global chat, private messages between players, and, on many emulators, the friends list and the guild board. Without it, login works, but those features stay silent or throw errors when used.
Which port does the ChatServer use?
The historical default is port 55906 (plus an internal admin port, commonly 55901/55911). It varies by emulator. Confirm it in the ChatServer's own configuration file and open the port in the firewall and in your provider/VPS NAT before you announce the server.
Does the ChatServer run on the same machine as the GameServer?
It can run alongside it, which is the most common setup on small servers. On larger servers it is split off for performance. What matters is that the GameServer and the Connect know the ChatServer's correct IP and port — if they point to the wrong place, global chat goes down.
Why doesn't global chat show up even with the ChatServer running?
It's almost always an IP/port mismatch between the ChatServer and what the GameServer/Connect reports, a port blocked by the firewall, or the client pointing to a different IP. Check all three: the ChatServer config, the GameServer config, and the IP published in the client.
Does the ChatServer store conversation history?
By default, no. It routes messages in real time between connected players; it is not a chat log database. If you want history/moderation, you need an additional logging system (an emulator plugin or an external solution) — this does not come ready-made in most MuServers.