Brazil's biggest MU Online portal — since 2003
Tutorial Beginner Tutoriais

How to Configure Windows Server 2019 VPS for MU Online

Complete step-by-step guide to set up a Windows Server 2019 VPS for a private MU Online server, covering SQL Server, firewall rules, and service configuration.

VI ViciadosMU Team · Updated on 3 jul 2026 · ⏱ 12 min read

Introduction

Setting up a Windows Server 2019 VPS to run a private MU Online server requires attention to several details: SQL Server installation, firewall configuration, Windows service tuning, and organizing the server's directory structure. This guide covers the complete process — from the VPS initial state to a server ready to accept players.

Nota: This guide targets Season 6 Episode 3 servers, the most widely used in private server communities. Steps were validated on Windows Server 2019 Standard/Datacenter (build 1809+) with MuServer S6E3.

Prerequisites

  • VPS with Windows Server 2019 (minimum 4 GB RAM, 2 vCPUs, 60 GB SSD)
  • RDP access to the server with Administrator user
  • MU server files (GameServer, ConnectServer, DataServer, EventServer)
  • SQL Server 2017 or 2019 installer

Part 1 — Initial Windows Server 2019 Setup

Step 1: First access and system configuration

Connect to the VPS via Remote Desktop (RDP) using the public IP, Administrator user, and the provider's password. Open PowerShell as Administrator and rename the server:

# Check Windows build
winver

# Rename for easy identification in logs
Rename-Computer -NewName "MUSERVER-PROD" -Restart

After the reboot, set the server's time zone to avoid timestamp issues in logs:

# Example for UTC-5 (Eastern Standard Time)
Set-TimeZone -Id "Eastern Standard Time"

Step 2: Disable unnecessary services

Reduce resource consumption by disabling services not needed on a game server:

# Windows Search — wastes unnecessary disk I/O
Set-Service -Name "WSearch" -StartupType Disabled
Stop-Service -Name "WSearch" -Force

# SysMain (Superfetch) — useless on a dedicated server
Set-Service -Name "SysMain" -StartupType Disabled
Stop-Service -Name "SysMain" -Force

# Print Spooler — not needed on a VPS
Set-Service -Name "Spooler" -StartupType Disabled
Stop-Service -Name "Spooler" -Force
Atenção: Never disable Windows Defender without another active protection mechanism. VPS instances with a public IP are constant targets of automated scanners. Instead of disabling it, add exclusions for the MuServer folders.

Step 3: Add Windows Defender exclusions

Prevent false positives without compromising security:

Add-MpPreference -ExclusionPath "C:\MuServer"
Add-MpPreference -ExclusionProcess "GameServer.exe"
Add-MpPreference -ExclusionProcess "ConnectServer.exe"
Add-MpPreference -ExclusionProcess "DataServer.exe"

Step 4: Install Visual C++ Redistributable

Most Season 6 MuServer binaries require specific runtimes. Install in this order:

  • Visual C++ 2010 Redistributable (x86)
  • Visual C++ 2012 Redistributable (x86 and x64)
  • Visual C++ 2015-2022 Redistributable (x86 and x64)

Verify the installations under Control Panel → Programs and Features before proceeding. If GameServer closes immediately on launch, a missing runtime is the most common cause.


Part 2 — SQL Server Installation and Configuration

Step 5: Install SQL Server 2019

Run the SQL Server 2019 installer and select Custom installation. In the feature selection, check only:

  • Database Engine Services
  • SQL Server Replication (optional, required by some MU packages)

Configure the instance as Default Instance (name: MSSQLSERVER) so that MuServer .ini files can connect without specifying an instance name.

After installation, open SQL Server Configuration Manager and:

  1. Expand SQL Server Network Configuration
  2. Click Protocols for MSSQLSERVER
  3. Enable TCP/IP (right-click → Enable)
  4. Double-click TCP/IPIP Addresses tab → scroll to IPAll → set TCP Port to 1433
  5. Restart the SQL Server service via services.msc

Step 6: Configure mixed authentication and memory cap

In SQL Server Management Studio (SSMS), connect to the local server and configure:

Mixed authentication (required for connection string login):

  1. Right-click the instance → Properties
  2. Security tab → select SQL Server and Windows Authentication mode
  3. Click OK and restart the SQL Server service

Memory cap (prevents SQL from consuming all available RAM):

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- For a 4 GB VPS: cap SQL Server at 2 GB
EXEC sp_configure 'max server memory', 2048;
RECONFIGURE;

Step 7: Create the database and a dedicated user

-- Create the main database with the correct collation for MU Online
CREATE DATABASE MuOnline
COLLATE Latin1_General_CI_AS;
GO

-- Create a separate log database (recommended)
CREATE DATABASE MuOnlineLog
COLLATE Latin1_General_CI_AS;
GO

-- Create a dedicated login for the GameServer
CREATE LOGIN muserver_user WITH PASSWORD = 'YourStrongPassword@2024',
    DEFAULT_DATABASE = MuOnline,
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
GO

-- Map the login to the database and grant permissions
USE MuOnline;
GO
CREATE USER muserver_user FOR LOGIN muserver_user;
EXEC sp_addrolemember 'db_owner', 'muserver_user';
GO
Dica: Use strong passwords for your SQL login. Brute-force attacks against SQL Server on port 1433 are extremely common on VPS instances with a public IP.

Step 8: Restore the MuServer database

With the .bak file available at C:\MuServer\backup\, restore it via SSMS:

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_ldf.ldf',
     REPLACE, STATS = 10;
GO
Nota: The path MSSQL15.MSSQLSERVER is for SQL Server 2019. For SQL Server 2017, use MSSQL14.MSSQLSERVER. Verify the actual path under C:\Program Files\Microsoft SQL Server\.

Part 3 — MuServer File Configuration

Step 9: Organize the directory structure

Create the standard structure under C:\MuServer\:

C:\MuServer\
├── ConnectServer\
│   └── ConnectServer.exe
├── DataServer\
│   └── DataServer.exe
├── GameServer\
│   ├── Data\
│   │   ├── Events\
│   │   ├── Maps\
│   │   └── Monster\
│   ├── Logs\
│   └── GameServer.exe
├── EventServer\
│   └── EventServer.exe
└── StartAll.bat

Step 10: Configure the connection string in GameServer

Edit GameServer\Data\DBConfig.ini (or DBConnectConfig.ini depending on your package version):

[DBCONFIG]
DBServer=127.0.0.1
DBPort=1433
DBName=MuOnline
DBUser=muserver_user
DBPass=YourStrongPassword@2024

Also edit DataServer\DSConfig.ini:

[DataServer]
ServerCode=0
DB_Ip=127.0.0.1
DB_Port=1433
DB_Name=MuOnline
DB_User=muserver_user
DB_Pass=YourStrongPassword@2024

Step 11: Configure the ConnectServer

Edit ConnectServer\ConnectServerInfo.ini:

[ConnectServer]
Port=44405
MaxConnectServer=2
ServerCodeStart=0
ServerCodeEnd=10

[ServerInfo0]
ServerCode=0
ServerName=Lorencia
GameServerIPAddress=YOUR_PUBLIC_IP
GameServerPort=55901

Replace YOUR_PUBLIC_IP with the VPS's external IP address. The MU client uses this IP to connect directly to the GameServer — never use 127.0.0.1 here.


Part 4 — Windows Firewall Configuration

Step 12: Create inbound firewall rules via PowerShell

Run the full block in PowerShell as Administrator:

# ConnectServer
New-NetFirewallRule -DisplayName "MU-ConnectServer" -Direction Inbound -Protocol TCP -LocalPort 44405 -Action Allow

# GameServer — ports per map instance
New-NetFirewallRule -DisplayName "MU-GameServer" -Direction Inbound -Protocol TCP -LocalPort 55901-55910 -Action Allow

# DataServer
New-NetFirewallRule -DisplayName "MU-DataServer" -Direction Inbound -Protocol TCP -LocalPort 55960 -Action Allow

# Web panel (if applicable)
New-NetFirewallRule -DisplayName "MU-WebPanel" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow

# RDP — confirm it is open
New-NetFirewallRule -DisplayName "RDP-Custom" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Atenção: Do NOT open SQL Server port 1433 to the internet if the database and GameServer are on the same machine. All database connections are local (127.0.0.1) and require no external firewall rule. Exposing port 1433 publicly is a critical security vulnerability.

Part 5 — Startup and Verification

Step 13: Correct service startup order script

The startup order of components is critical. 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.
echo All services started.
pause

Always run as Administrator (right-click → Run as administrator).

Step 14: Verify component connectivity

Confirm that the ports are listening:

# Check all MU ports at once
netstat -ano | findstr ":44405 :55901 :55960"

In SSMS, confirm the GameServer connected to the database:

USE MuOnline;
GO

-- Last recorded connections
SELECT TOP 10 memb___id, ConnectTM, DisConnectTM
FROM MEMB_INFO
ORDER BY ConnectTM DESC;
GO

-- Experience configuration (confirms database integrity)
SELECT * FROM T_CommonServerInfo;
GO

Step 15: Create a test account via SQL

To verify the full flow without a web panel:

USE MuOnline;
GO
INSERT INTO MEMB_INFO (
    memb___id, memb__pwd, memb_name, sno__numb,
    post_code, addr_info, addr_deta, tel__numb,
    email_info, mail_chek, bloc_code, ctl1_code
)
VALUES (
    'testuser',
    CONVERT(VARCHAR(10), HASHBYTES('MD5', 'pass123'), 2),
    'Test User', '00000000000',
    '00000', 'Address', 'Detail', '00000000000',
    '[email protected]', 'N', 0, 0
);
GO
Dica: If the T_CommonServerInfo table returns an error, the SQL table creation script was not executed correctly. Review the logs at GameServer\Logs\GameServer.log to identify specific connection errors.

Common Troubleshooting

GameServer closes immediately on launch

Diagnostic sequence:

  1. Is SQL Server running? → services.msc → SQL Server (MSSQLSERVER)
  2. Is TCP/IP enabled in SQL Server Configuration Manager?
  3. Are the credentials in DBConfig.ini correct?
  4. Is mixed authentication enabled in the SQL Server properties?
  5. Is the Visual C++ Redistributable installed (x86 version)?

ConnectServer not accepting external connections

# Check if the port is listening locally
netstat -ano | findstr :44405

# If it does not appear: ConnectServer did not start — check its logs
# If it appears but external access fails: check the VPS provider's external firewall panel

Many VPS providers have their own firewall in the control panel, separate from the Windows Firewall. Check and open the ports there as well.

High CPU usage by SQL Server

-- Identify the heaviest queries
SELECT TOP 10
    qs.total_worker_time / qs.execution_count AS avg_cpu_us,
    qs.execution_count,
    SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset END
          - qs.statement_start_offset)/2)+1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY avg_cpu_us DESC;

Conclusion

With the VPS configured following these steps, your MU Online server will have a solid foundation: SQL Server optimized with a memory cap, firewall configured without exposing the database port, Windows services tuned for performance, and components starting in the correct order. The next step is configuring server events (Blood Castle, Devil Square, Chaos Castle) and setting up a web administration panel.

Perguntas frequentes

Which SQL Server version should I use with Windows Server 2019?

SQL Server 2017 or 2019 are the most compatible with Windows Server 2019. Avoid SQL Server 2000 in this environment — it has no official support. Use SQL Server 2017 Express (free) for servers with databases under 10 GB.

Which ports do I need to open on the VPS firewall?

The essential ports are: 44405 (ConnectServer), 55901-55910 (GameServer per map instance), 55960 (DataServer), 1433 (SQL Server — local only), 80 (web panel), and 3389 (RDP). Never expose port 1433 externally if the database and GameServer are on the same machine.

The MU server crashes a few minutes after starting on the VPS — what should I check?

First check the log at GameServer\\Logs\\GameServer.log. Common causes: insufficient RAM (minimum 4 GB for Season 6), SQL Server without a memory cap configured, or antivirus blocking the executables. Set SQL Server to use at most 2 GB of RAM if the VPS has 4 GB total.

How do I prevent Windows Server 2019 from automatically rebooting after updates?

Open gpedit.msc → Computer Configuration → Administrative Templates → Windows Components → Windows Update. Set 'Configure Automatic Updates' to 'Notify for download and notify for install' (option 2). This prevents automatic reboots without your approval.

VI

ViciadosMU Team

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Keep reading

Related articles