How to set up a MU Online server on MuEMU (Season 6)
Build a MU Online Season 6 server using the MuEMU emulator: SQL Server database, ConnectServer, JoinServer, GameServer, and the Main client. Adjust IPs, ports, experience, drop, and test everything in-game before opening.
Building a MU Online Season 6 server with MuEMU is the most common path for those just starting out: the base is widely documented, runs on Windows, and uses Microsoft SQL Server, which makes it easy to find tutorials, fixes, and community support. But "getting it online" involves orchestrating four
Building a MU Online Season 6 server with MuEMU is the most common path for those just starting out: the base is widely documented, runs on Windows, and uses Microsoft SQL Server, which makes it easy to find tutorials, fixes, and community support. But "getting it online" involves orchestrating four pieces that must talk to each other — the database, the ConnectServer, the JoinServer, and the GameServer — plus a Main client edited to point to your server. Getting one IP, port, or connection string wrong is the number one reason for "the server won't open" or "it hangs at login." This tutorial walks through the entire build, from the database to the in-game test, with the points where MuEMU revisions diverge. If you don't have the base package yet, start with the MU server creation tutorial and come back here for the fine-tuning.
Architecture overview
A MU Season 6 server on MuEMU has, at minimum, five components running together:
- SQL Server — stores accounts, characters, ranking, and persistent settings (
MuOnline,Me_MuOnline, andRankingdatabases). - JoinServer (DataServer) — bridge between the game and the accounts/characters database.
- ConnectServer — the server list that appears in the client; routes the player to the right GameServer.
- GameServer — the world itself: maps, mobs, drop, trading, events.
- Main client — the
Main.exethe player runs, pointed at your ConnectServer.
The login flow is: the client talks to the ConnectServer → picks the server → the GameServer validates the account via the JoinServer → the JoinServer queries SQL Server. If any link is down or misconfigured, the login fails at some point in that chain.
Prerequisites
- Windows (Server or 10/11) for the server. For local testing, your own machine works.
- Microsoft SQL Server installed (2014/2017/2019/2022 or Express) and the SQL Server Management Studio (SSMS).
- MuEMU Season 6 base package (Server Files) and the corresponding Main client.
- Visual C++ Redistributable (several versions — 2010, 2013, 2015+) installed; missing them causes an error when opening the executables.
- Basic knowledge of IP/port and Windows firewall.
- A backup of the whole package before you start editing.
> Always work with a copy of the server files. A corrupted configuration file brings the service down at boot, and without a backup you reinstall everything.
Files and components involved
The exact names vary by MuEMU revision, but the structure is always similar. The main ones:
| Component | Executable (example) | Configuration (example) |
|---|---|---|
| Database | — | .sql scripts / .mdf/.ldf files |
| JoinServer | JoinServer.exe | JoinServerStartUp.dat |
| ConnectServer | ConnectServer.exe | ConnectServerList.dat / ServerList.dat |
| GameServer | GameServer.exe | GameServerInfo (Data/), CommonServer.dat |
| Client | Main.exe | ServerList.bmd / launcher |
> "Varies by emulator/revision": some packages call the JoinServer DataServer, and the IP keys live in files with different names. Always check the files that came in your package instead of assuming the names in this tutorial.
Step 1 — Prepare SQL Server and restore the database
- Install SQL Server in mixed authentication mode (SQL Server and Windows). This lets you use the
sauser with a password, which is what MuEMU usually expects. - Set and write down the
sapassword — it goes into the JoinServer's and GameServer's connection strings. - Open SSMS and connect to your local SQL server (
.\SQLEXPRESSor the instance name). - Restore/create the databases that came in the package. There are two common ways:
- Attach (.mdf/.ldf):
Databases → Attach…and point to theMuOnline.mdf,Me_MuOnline.mdf, andRanking.mdffiles. - Run scripts: open and run the
.sqlfiles that create the tables in each database.
- Confirm that the three databases appear in SSMS:
MuOnline,Me_MuOnline, andRanking.
If SQL Server isn't accepting a TCP connection, enable the TCP/IP protocol in the SQL Server Configuration Manager and restart the service. Many "JoinServer won't connect to the database" cases are just TCP/IP turned off.
Step 2 — Create an ODBC/DSN (when the revision requires it)
Much of the classic MuEMU revisions connect to the database through an ODBC DSN conventionally named MuOnline. If yours requires it:
- Open the ODBC Data Sources (64-bit or 32-bit depending on the emulator's executables).
- Under System DSN, add a new one with the SQL Server driver.
- Name it exactly as the emulator expects (frequently
MuOnline). - Point it to the SQL instance, use SQL authentication with
saand the password, and set the default database toMuOnline. - Test the connection inside the ODBC wizard itself before closing.
> Watch out for 32 vs 64 bits: if the MuEMU executables are 32-bit, the DSN needs to be created in the 32-bit ODBC (C:\Windows\SysWOW64\odbcad32.exe), otherwise the emulator won't see the DSN.
Step 3 — Configure the JoinServer (DataServer)
The JoinServer needs to know how to talk to the database. In its configuration file (e.g., JoinServerStartUp.dat), adjust the credentials:
; Illustrative example — the keys vary by MuEMU revision
ODBC_Name = MuOnline
ODBC_User = sa
ODBC_Pass = YOUR_SA_PASSWORD
JoinServerPort = 55970
- If your revision doesn't use ODBC, the same file will have the connection strings directly (SQL server, user, password).
- Write down the JoinServer port — the GameServer will point to it.
Bring up JoinServer.exe. It should indicate a successful database connection. If it closes on its own, it's almost always a wrong sa password, a nonexistent DSN, or TCP/IP turned off.
Step 4 — Configure the ConnectServer and the server list
The ConnectServer is what the client sees first. Two things matter here: the port the client uses and the list of GameServers.
- In the list file (e.g.,
ServerList.dat), register the server(s) with the GameServer's name, IP, and port:
; Illustrative example
0 127.0.0.1 55901 "ViciadosMU Season 6"
- For local testing, use
127.0.0.1. To open it to the public, swap it for the public/VPS IP. - Confirm the ConnectServer port (commonly
44405) — it goes into the client.
Bring up ConnectServer.exe. It stays listening and showing the configured server list.
Step 5 — Configure the GameServer (IP, database, and rates)
The GameServer is the heart. It needs to point to the JoinServer and to the database, and it's where you define the gameplay.
- In
GameServerInfo(insideData/) and/orCommonServer.dat, adjust:
- JoinServer IP and its port (from Step 3).
- The GameServer's own IP that will be announced (local =
127.0.0.1; public = the VPS IP). - Server code (ServerCode), which must match the one registered in the ConnectServer's list.
- Adjust the main rates (illustrative names — vary by revision):
[GameServerInfo]
ServerName = "ViciadosMU Season 6"
ExperienceRate = 100 ; experience multiplier
DropRate = 30 ; drop chance (%) — scale varies by revision
ZenDropRate = 30
MaxLevel = 400 ; max level (400 normal + Master Level)
PointsPerLevel = 5
- Save and bring up
GameServer.exe. It should connect to the JoinServer and the database, load the maps, and go "online."
> The DropRate and experience scale is not universal across revisions — in some it's a direct percentage, in others it's a multiplier. Start with conservative values, test in-game, and only then calibrate.
Step 6 — Edit the Main client (IP and port)
The client needs to point to your ConnectServer, not the one from the original package.
- Locate where the client stores the IP/port — it's usually a
ServerList.bmd(encrypted) or a launcher configuration. - Change the IP to
127.0.0.1(local) or the public IP (online) and the port to the ConnectServer's (e.g.,44405). - If the file is encrypted (
.bmd), use the community's ServerList editor compatible with your season to decrypt, edit, and re-encrypt it. - Ensure the client is from the same Season/Episode as the emulator — a mismatched version causes a connection error or black screen.
Step 7 — Create an account and test the login
- In SSMS, insert a test account into the accounts table of the
MuOnlinedatabase (or use the registration/site system if the package has one). - Grant GM access to that account by adjusting the type/CtlCode field according to your revision — this way you can test without farming.
- Run
Main.exe, log in, and confirm that the server list appears and that you enter the world. - Create a character, enter the game, and check movement, mob spawn, and chat.
Step 8 — Validate gameplay and GM commands
With the GM character inside the game, validate the essentials before thinking about opening:
- Test drop and pickup of items by killing mobs.
- Test experience by leveling up once and comparing with the configured rate.
- Run GM commands (e.g.,
/make,/move, event commands) to spawn items and teleport. - Open the shop/NPC and test buying/selling basic items.
- Check automatic events (Blood Castle, Devil Square, Chaos Castle) if the package starts them.
Step 9 — Open ports and allow external access (optional)
Only do this when local testing is 100%.
- In the Windows Firewall, create inbound rules for the ConnectServer, GameServer, and (if needed) JoinServer ports.
- On the router/VPS, set up port forwarding of the same ports to the server machine.
- Swap all
127.0.0.1IPs for the public IP — in the ConnectServer (list), in the GameServer (announced IP), and in the client. - Test the login from another network (mobile data, for example) to confirm real external access.
| Component | Typical port (example) | Needs to be open to the public? |
|---|---|---|
| ConnectServer | 44405 | Yes |
| GameServer | 55901 | Yes |
| JoinServer | 55970 | No (internal) |
| SQL Server | 1433 | No (never expose the database) |
> Never expose the SQL Server port to the internet. The database should be accessible only internally by the JoinServer/GameServer.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| JoinServer closes on open | Wrong sa password or TCP/IP off | Check credentials and enable TCP/IP in the Configuration Manager |
| GameServer doesn't connect to the database | Missing DSN or 32/64 bits mismatched | Recreate the DSN in the correct ODBC and test the connection |
| Server list empty in the client | Wrong IP/port in the client | Adjust the client's ServerList to the ConnectServer |
| "Disconnect" at login | Client from a different season than the server | Use the Main from the same Season/Episode as the emulator |
| Server appears but won't enter | Divergent ServerCode | Match the code in the ConnectServer and the GameServer |
| Error opening the .exe files | Missing Visual C++ Redistributable | Install all VC++ Redist versions |
| No one from outside connects | Firewall/port forwarding | Open the ports and swap 127.0.0.1 for the public IP |
Launch checklist
- SQL Server in mixed authentication,
sapassword noted, and TCP/IP active. MuOnline,Me_MuOnline, andRankingdatabases restored and visible.- DSN/ODBC created (in the correct 32/64-bit architecture) and tested.
- JoinServer connected to the database without closing.
- ConnectServer with the correct server list (name, IP, port).
- GameServer pointing to the JoinServer and database, with defined rates.
- Main client edited with the ConnectServer's IP/port and from the same season.
- Test + GM account created; login and character creation working.
- Drop, experience, NPCs, GM commands, and events tested in-game.
- Firewall/port forwarding and public IP configured (if opening to the public).
- Complete backup of the server files and the database saved.
With the four services online and the login validated end to end, you have a stable base to build on: tuning the economy, adding systems (Sockets, Custom Wings), configuring events and, finally, a website with account registration. Document every port, IP, and password in a single secure place — when the server grows, that infrastructure sheet saves hours of rework with every host change.
Frequently asked questions
Is MuEMU free?
The MuEMU base (Season 6 Episode 3) has circulated freely in the community for years and is the most used on private servers. There are paid versions with more features and fixes, but for learning and building a test server the free base is enough. Always confirm the package's origin to avoid tampered files.
Which database does MuEMU use?
Microsoft SQL Server. The classic base was designed for SQL Server 2008/2014, but it runs on newer versions (2017/2019/2022 and Express). You restore the .mdf/.ldf files or run the .sql scripts that come with the package to create MuOnline, Me_MuOnline, and Ranking.
Do I need a static IP or a VPS to open it to the internet?
For local testing, the internal IP (127.0.0.1) is enough. To open it to the public you need a reachable IP — a VPS/dedicated server is ideal — and to open the ConnectServer, JoinServer, and GameServer ports in the firewall and router. Replacing the internal IP with the public IP in the ConnectServer and the client is mandatory.
What's the difference between ConnectServer, JoinServer, and GameServer?
The ConnectServer is the server list the client sees, and it forwards it to the GameServer. The JoinServer bridges the game and the accounts/characters database. The GameServer is the world itself (maps, mobs, drop, trading). All three need to be up and pointing to the database and to each other for login to work.
Where do I adjust the experience and drop rate?
In the GameServer's configuration file (commonly GameServerInfo in Data/), in the ExperienceRate and DropRate keys. The exact names vary by MuEMU revision; edit, save, and restart the GameServer to apply. Always test with a new character before opening to the public.
Does the Main client need to be the same version as the server?
Yes. The client (Main.exe) must be from the same Season/Episode as the emulator, otherwise you get a connection error, black screen, or a disconnect at login. Use the client that comes with the MuEMU package and edit the IP/port in it to match your ConnectServer.