How to configure Windows Server from scratch for MU Online
Set up a clean Windows Server for MU Online: system, runtimes, SQL Server, directories, firewall and services in the correct order until the server runs stable.
A freshly provisioned Windows Server is a blank page: no runtimes, no database, useless services running and a firewall that either blocks everything or nothing. Turning that clean machine into a solid foundation for MU Online requires following a specific order — system, runtimes, SQL Server, direc
A freshly provisioned Windows Server is a blank page: no runtimes, no database, useless services running and a firewall that either blocks everything or nothing. Turning that clean machine into a solid foundation for MU Online requires following a specific order — system, runtimes, SQL Server, directories, configuration files, firewall and startup — because each step depends on the previous one. Skipping any of them usually results in the classic GameServer that opens and closes in a second. This guide walks through the complete process, from the first RDP access to the server processes coming up stable. Paths, versions and ports here are examples and vary depending on the MU package and version.
Prerequisites
- A VPS or machine with a clean Windows Server 2019/2022 and Administrator access.
- RDP access (public IP, username and password from the provider).
- A compatible SQL Server installer (2017 or 2019 are safe for modern servers).
- SQL Server Management Studio (SSMS) to administer the database.
- The MuServer package for the desired version (ConnectServer, DataServer, GameServer, EventServer) and the
.sqlscripts to create/restore the database. - Visual C++ Redistributable packages (2010, 2013, 2015-2022, x86 and x64).
- A grasp of the general server structure — if you do not have it yet, review the guide on how to create a MU Online server.
Part 1 — Operating system preparation
Step 1: First access and identifying the machine
Connect via RDP with the Administrator user. Open PowerShell as Administrator and rename the machine to make log reading easier, as well as adjusting the time zone:
# Rename the server (reboots at the end)
Rename-Computer -NewName "MU-PROD-01" -Restart
# After the reboot, set the Brazil time zone (UTC-3)
Set-TimeZone -Id "E. South America Standard Time"
# Check the Windows build and version
[System.Environment]::OSVersion.Version
Step 2: Update Windows before installing anything
Apply the pending updates first — installing SQL Server on top of an outdated system can cause dependency failures. Then configure Windows Update to not restart on its own, preventing the machine from going down while players are online.
# Set it to download and notify, with no automatic restart
# (via Group Policy: gpedit.msc → Windows Update)
# Computer Configuration → Administrative Templates →
# Windows Components → Windows Update →
# "Configure Automatic Updates" = option 3 (download and notify)
Step 3: Disable unnecessary services
A game server does not need search indexing, printing or app preloading. Turning them off frees CPU and I/O:
# Windows Search — unnecessary disk I/O
Set-Service -Name "WSearch" -StartupType Disabled
Stop-Service -Name "WSearch" -Force
# SysMain (Superfetch) — useless on a server
Set-Service -Name "SysMain" -StartupType Disabled
Stop-Service -Name "SysMain" -Force
# Print Spooler — no printer on a VPS
Set-Service -Name "Spooler" -StartupType Disabled
Stop-Service -Name "Spooler" -Force
Step 4: Install the Visual C++ runtimes
The MuServer binaries are compiled expecting specific runtimes. Their absence is the number-one cause of the GameServer that closes on open. Install all with the following coverage, x86 and x64:
- Visual C++ 2010 Redistributable
- Visual C++ 2013 Redistributable
- Visual C++ 2015-2022 Redistributable
Step 5: Add exclusions in Windows Defender
Many MuServer executables are flagged as false positives. Instead of turning off the antivirus, exclude only the server's folders and processes:
Add-MpPreference -ExclusionPath "C:\MuServer"
Add-MpPreference -ExclusionProcess "GameServer.exe"
Add-MpPreference -ExclusionProcess "ConnectServer.exe"
Add-MpPreference -ExclusionProcess "DataServer.exe"
Add-MpPreference -ExclusionProcess "EventServer.exe"
Part 2 — SQL Server installation and configuration
Step 6: Install SQL Server
Run the installer choosing the Custom installation and select, at a minimum, Database Engine Services. Configure the instance as the Default Instance (MSSQLSERVER), which removes the need to specify an instance name in the MuServer connection strings. During installation, select mixed authentication mode (SQL Server and Windows) and set a strong password for the sa user.
Step 7: Enable TCP/IP and port 1433
Open the SQL Server Configuration Manager:
- Expand SQL Server Network Configuration → Protocols for MSSQLSERVER.
- Enable TCP/IP (right-click → Enable).
- Double-click TCP/IP → IP Addresses tab → under IPAll, set TCP Port =
1433. - Restart the service in
services.msc→ SQL Server (MSSQLSERVER).
Step 8: Cap the SQL Server memory
Without a limit, SQL Server consumes almost all the RAM and leaves the GameServer without resources. Adjust it according to the VPS total (the example below is for a 4 GB machine):
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
-- Reserve at most 2 GB for SQL on a 4 GB VPS
EXEC sp_configure 'max server memory', 2048;
RECONFIGURE;
Step 9: Create the database and the dedicated user
Never use sa in the server's connection string. Create an exclusive login:
-- Main database with the collation expected by MU
CREATE DATABASE MuOnline COLLATE Latin1_General_CI_AS;
GO
CREATE DATABASE MuOnlineLog COLLATE Latin1_General_CI_AS;
GO
-- Login dedicated to the GameServer
CREATE LOGIN muserver_user WITH PASSWORD = 'Senh@ForteExemplo2024',
DEFAULT_DATABASE = MuOnline,
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF;
GO
USE MuOnline;
GO
CREATE USER muserver_user FOR LOGIN muserver_user;
EXEC sp_addrolemember 'db_owner', 'muserver_user';
GO
Step 10: Restore or create the MuServer tables
If the package ships a .bak file, restore it; if it ships .sql scripts, run them in the order indicated by the package. The data path varies by SQL version — the example uses SQL Server 2019 (MSSQL15); on 2017 it would be MSSQL14.
USE master;
GO
RESTORE DATABASE MuOnline
FROM DISK = 'C:\MuServer\backup\MuOnline.bak'
WITH MOVE 'MuOnline' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\MuOnline.mdf',
MOVE 'MuOnline_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\MuOnline_log.ldf',
REPLACE, STATS = 10;
GO
Part 3 — Organizing the server files
Step 11: Directory structure
Keep everything under a single root, which simplifies antivirus exclusions, backups and permissions:
C:\MuServer\
├── ConnectServer\
│ └── ConnectServer.exe
├── DataServer\
│ └── DataServer.exe
├── EventServer\
│ └── EventServer.exe
├── GameServer\
│ ├── Data\
│ ├── Logs\
│ └── GameServer.exe
├── backup\
└── StartAll.bat
Step 12: Configure the connection strings
Adjust the .ini files to point to the local SQL. The exact names vary by package (DBConfig.ini, DBConnectConfig.ini, DSConfig.ini). GameServer example:
[DBCONFIG]
DBServer=127.0.0.1
DBPort=1433
DBName=MuOnline
DBUser=muserver_user
DBPass=Senh@ForteExemplo2024
And the DataServer:
[DataServer]
ServerCode=0
DB_Ip=127.0.0.1
DB_Port=1433
DB_Name=MuOnline
DB_User=muserver_user
DB_Pass=Senh@ForteExemplo2024
Step 13: Point the ConnectServer to the public IP
The client connects to the GameServer via the IP the ConnectServer reports. Use the VPS public IP, never 127.0.0.1:
[ServerInfo0]
ServerCode=0
ServerName=Lorencia
GameServerIPAddress=YOUR_PUBLIC_IP
GameServerPort=55901
Part 4 — Firewall and ports
Step 14: Create the inbound rules
Open only the necessary ports. The exact ports vary by package — confirm them in the .ini files before applying:
New-NetFirewallRule -DisplayName "MU-ConnectServer" -Direction Inbound -Protocol TCP -LocalPort 44405 -Action Allow
New-NetFirewallRule -DisplayName "MU-GameServer" -Direction Inbound -Protocol TCP -LocalPort 55901-55910 -Action Allow
New-NetFirewallRule -DisplayName "MU-DataServer" -Direction Inbound -Protocol TCP -LocalPort 55960 -Action Allow
New-NetFirewallRule -DisplayName "MU-WebPanel" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
127.0.0.1) and needs no firewall rule. Exposing 1433 is one of the most exploited flaws on MU servers.Also remember the provider firewall in the VPS panel, which is separate from the Windows firewall. The same ports need to be opened there.
Part 5 — Startup and verification
Step 15: Startup script in the correct order
The order is mandatory: DataServer → EventServer → ConnectServer → GameServer. Create C:\MuServer\StartAll.bat:
@echo off
echo Starting DataServer...
start "" "C:\MuServer\DataServer\DataServer.exe"
timeout /t 5 /nobreak
echo Starting EventServer...
start "" "C:\MuServer\EventServer\EventServer.exe"
timeout /t 3 /nobreak
echo Starting ConnectServer...
start "" "C:\MuServer\ConnectServer\ConnectServer.exe"
timeout /t 3 /nobreak
echo Starting GameServer...
start "" "C:\MuServer\GameServer\GameServer.exe"
echo All services started.
Always run it as Administrator.
Step 16: Check ports and database connection
# Confirm that the ports are listening
netstat -ano | findstr ":44405 :55901 :55960"
-- Confirm database integrity (the table varies by version)
USE MuOnline;
GO
SELECT * FROM T_CommonServerInfo;
GO
Common errors and fixes
| Error | Likely cause | Fix |
|---|---|---|
| GameServer opens and closes | Missing VC++ runtime | Install all Visual C++ (x86 and x64) |
| GameServer does not connect to the database | TCP/IP disabled or wrong credentials | Enable TCP/IP, review the .ini files and the SQL login |
| "Cannot connect to DataServer" | Wrong startup order | Bring up the DataServer before the GameServer |
| Client cannot enter the game | Internal IP in the ConnectServer | Replace 127.0.0.1 with the public IP |
| SQL consumes all the RAM | No memory limit | Set max server memory |
| Antivirus false positive | Defender blocking the .exe | Add folder and process exclusions |
| Ports closed externally | Provider firewall | Open the ports in the VPS panel as well |
| Server reboots on its own | Automatic Windows Update | Configure it to download and notify |
Launch checklist
- Windows Server renamed and time zone adjusted
- Updates applied and automatic reboot disabled
- Unnecessary services disabled
- Visual C++ runtimes (x86 and x64) installed
- Windows Defender exclusions added
- SQL Server installed in mixed authentication mode
- TCP/IP enabled and port 1433 set
- SQL Server memory capped
- Database created/restored and dedicated login configured
- Directory structure organized under C:\MuServer
.iniconnection strings adjusted- ConnectServer pointing to the public IP
- Firewall rules created (Windows and provider)
- StartAll.bat script in the correct order
- Ports checked with netstat and database intact
Conclusion
Configuring Windows Server from scratch for MU Online is a chain of dependencies: the system needs the runtimes, the GameServer needs the database, the database needs TCP/IP enabled, and the whole set needs to start in the right order. By following the steps in this guide — system preparation, optimized SQL Server, organized files, a lean firewall and sequential startup — you reach a server that comes up stable and accepts connections. From here, the natural next move is to shield that foundation against attacks with a complete hardening process, covering RDP, accounts, updates and monitoring.
Frequently asked questions
Which version of Windows Server should I use for MU Online?
Windows Server 2019 or 2022 are the safest choices today: they have good support, run the modern runtimes and are compatible with most MuServer packages. Very old versions like 2008 R2 still work with legacy packages, but no longer receive security updates. Compatibility varies by package.
Why does the GameServer close as soon as it opens?
In the overwhelming majority of cases it is a missing Visual C++ runtime or an unreachable database. Install the Visual C++ packages (2010, 2013, 2015-2022) in x86 and x64, confirm that SQL Server is running with TCP/IP enabled and that the connection string in the .ini files is correct. Always check the log in GameServer\\Logs.
Do I need to install SQL Server on the same machine as the GameServer?
It is not mandatory, but on small and medium servers it is the standard for simplicity and zero latency between database and game. When SQL and the GameServer fight too much over resources, splitting them into two machines helps. The decision depends on the server's size and the VPS you have.
What is the correct order to start the MU services?
First the DataServer, then the EventServer (if any), next the ConnectServer and last the GameServer. Starting out of this order makes the GameServer fail to find the DataServer and close. A .bat script with pauses between each step guarantees the sequence.
Should I disable Windows Defender on the server?
No. VPS with public IPs are scanned by bots all the time. Instead of disabling protection, add folder and process exclusions for the MuServer executables, avoiding false positives without giving up security. Reinforce it afterward with dedicated hardening.