Brazil's biggest MU Online portal — since 2003
Tutorial Advanced Infrastructure

How to Migrate a MU Server from a Home PC to a VPS

A complete, step-by-step walkthrough for moving your MU server off a home PC and onto a VPS, with a consistent database backup, IP adjustments, DNS, firewall, and a migration window that loses no player progress.

BR Bruno · Updated on Jan 8, 2025 · ⏱ 16 min read
Quick answer

Running your MU server on a home PC works fine at first — it's cheap and you have physical control of the machine. But as the project grows, the limits show up: the power flickers and the server vanishes, residential internet has low upload and a dynamic IP, the PC needs to reboot for updates and no

Running your MU server on a home PC works fine at first — it's cheap and you have physical control of the machine. But as the project grows, the limits show up: the power flickers and the server vanishes, residential internet has low upload and a dynamic IP, the PC needs to reboot for updates and nobody can play, and exposing your home IP becomes a real risk of a DDoS aimed at your house. Migrating to a VPS solves all of that at once: a dedicated uplink, a static IP, redundant power and network, and the ability to reboot without disrupting your personal life. The catch is that a migration done wrong can corrupt the database, lose player progress, or leave the server down for hours. This guide shows how to make the move consistently and with the least possible downtime.

Migration is an advanced task because it blends database, network, DNS, and client files. If you're not yet comfortable with the structure of a MuServer, it's worth reviewing the step-by-step on how to create a MU Online server before tackling the environment change — this migration assumes you already understand how the components talk to each other.

Prerequisites

  • A working server on the PC, with access to SQL Server and the MuServer folder.
  • A rented VPS, with Windows Server and administrative access (RDP + a KVM/VNC console from the panel).
  • The same version (or a compatible one) of SQL Server on the VPS and the PC. Restoring a backup from a newer version onto an older one doesn't work.
  • Enough disk space on the VPS for the database, the MuServer, and some room to grow.
  • A domain (recommended) with access to the DNS panel, so you don't tie the client to an IP.
  • A maintenance window agreed on with the players (give plenty of notice).
  • A file-transfer tool (RDP with drive sharing, FTP/SFTP, or a cloud service).
Atenção: The golden rule of migration: the database backup that matters is taken with the server STOPPED. Any copy made while the MuServer is running risks being inconsistent or stale.

Sizing the VPS

Choosing the right VPS avoids rework. The numbers below are a starting point (they vary by provider/version and by the actual number of players):

ProfilevCPURAMDiskNote
Test / dev24 GB40 GB SSDJust to validate the migration
Small Season 648 GB80 GB NVMeUp to a few hundred online
Medium/large Season 66-816 GB160 GB NVMeActive community, packed events
Modern seasons8+16-32 GB200 GB+ NVMeHeavier client and database

The most important factor is usually the disk: SQL Server is sensitive to I/O, so favor NVMe/SSD. Insufficient RAM makes the database page to disk and the server stutter during events. Leave some CPU headroom for spikes like Castle Siege.

Strategy overview

To minimize downtime, the migration is split into two phases:

  1. Advance preparation (no rush): you build out the entire VPS — SQL Server, MuServer, ports, firewall — using an old copy of the database just for testing. No one notices, because the production server keeps running on the PC.
  2. Final switchover (short window): you stop the production server, take the final, consistent backup, restore it onto the already-prepared VPS, adjust the IPs, and switch the DNS. Because the VPS is already fully configured and tested, the real downtime drops to a few minutes.

That separation is what sets an amateur migration (server down for hours) apart from a professional one (down for minutes).

Phase 1 — Prepare the VPS in advance

Step 1: install the base on the VPS

  1. Connect to the VPS over RDP and install SQL Server at the same version/edition as the PC.
  2. Install the MuServer dependencies (the runtimes/redistributables your version requires — this varies by version).
  3. Copy the MuServer folder from the PC to the VPS. Keep the same folder structure so you don't break internal paths.
  4. Take a test backup of the current database (it can be done with the server running, since it's only a rehearsal) and restore it on the VPS.

Step 2: take a test backup of the database

In the PC's SQL Server Management Studio (SSMS), generate a full backup:

BACKUP DATABASE [MuOnline] TO DISK = N'C:\Backups\MuOnline_teste.bak'
WITH FORMAT, INIT, NAME = N'MuOnline - Teste de Migracao', STATS = 10;
GO

If your server uses additional databases (for example Me_MuOnline, Ranking, Event), back up all of them. Transfer the .bak files to the VPS and restore them there:

RESTORE DATABASE [MuOnline] FROM DISK = N'C:\Backups\MuOnline_teste.bak'
WITH MOVE 'MuOnline'     TO N'C:\SQLData\MuOnline.mdf',
     MOVE 'MuOnline_log' TO N'C:\SQLData\MuOnline_log.ldf',
     REPLACE, STATS = 10;
GO
Dica: The logical names used in MOVE (MuOnline, MuOnline_log) may vary. Find the right ones with RESTORE FILELISTONLY FROM DISK = N'...\arquivo.bak'; before restoring.

Step 3: recreate the SQL login and map the user

A classic problem after restoring: the database came over, but the SQL login the MuServer uses doesn't exist on the VPS, or exists with a different SID (an "orphaned user"). Recreate the login and realign it:

-- Create the login used by the MuServer (adjust the real name and password)
CREATE LOGIN [muserver] WITH PASSWORD = 'SenhaForteAqui', CHECK_POLICY = OFF;
GO

USE [MuOnline];
GO
-- Fix the orphaned user, linking it to the freshly created login
ALTER USER [muserver] WITH LOGIN = [muserver];
GO

Step 4: adjust the MuServer configuration files

Here is the heart of the network migration. Several files still point to the home PC's IP and to the old database credentials. Walk through them and adjust (the names/paths vary by version):

  • Database connection: files such as MuServer\GameServer\Data\...ODBC or a connection .ini. Point them to 127.0.0.1 / localhost on the VPS (the database is on the same machine) and to the correct login/password.
  • ConnectServer / server list: replace any old public IP with the VPS's new public IP. If you're going to use a domain, many setups let you put the domain in the file the client reads.
  • Listen bind: confirm that the services listen on 0.0.0.0 (all interfaces) so they accept external connections.

Step 5: open the ports and the firewall on the VPS

Replicate the server's port scheme on the VPS: ConnectServer, GameServers, and, if the website lives there too, web. Block SQL and the internal ports. The breakdown by group (game/connect/web) is in the per-port firewall tutorial; the essential thing is to open only what the internet needs and restrict RDP to your IP.

Step 6: end-to-end test on the VPS

With the test copy running on the VPS:

  1. Bring up the processes (DataServer, ConnectServer, GameServer) and check the logs to confirm they connect to the database without errors.
  2. Temporarily edit your client to point at the VPS IP and try logging in, creating a character, entering a map, saving, and reconnecting.
  3. Validate a simple event and the write to the database (create a test character and confirm it persists after restarting the server).

If everything works with the test copy, the VPS is ready. Now it's just the final switchover with the real data.

Phase 2 — The final switchover

Step 7: enter maintenance and stop the production server

At the agreed time:

  1. Notify the players (an in-game/Discord message) and put the server into maintenance.
  2. Stop all MuServer processes on the PC (GameServer, ConnectServer, DataServer). This guarantees nothing else writes to the database.
  3. Confirm there are no active sessions before continuing.

Step 8: final, consistent backup

With the server stopped, generate the definitive backup — this is the one that carries the real progress:

BACKUP DATABASE [MuOnline] TO DISK = N'C:\Backups\MuOnline_final.bak'
WITH FORMAT, INIT, NAME = N'MuOnline - Migracao Final', CHECKSUM, STATS = 10;
GO

Repeat for all the auxiliary databases. CHECKSUM helps detect corruption at restore time. Transfer the .bak files to the VPS.

Step 9: restore on the VPS and bring it back up

  1. Restore the final databases on the VPS (the same RESTORE command from Step 2, now with the final .bak files and REPLACE).
  2. Re-run the orphaned-user fix (Step 3) if needed.
  3. Bring up the MuServer processes on the VPS and watch the logs.

Step 10: switch the DNS (or distribute the new client)

  • If you use a domain: change the domain's A record to the VPS's new IP. Since DNS propagation takes time, use a low TTL (e.g., 300s) configured in advance to speed up the switch.
  • If the client points to a hardcoded IP: you'll need to distribute a patch/launcher with the new IP. That's why a domain is so strongly recommended — it avoids this rework every time.

Step 11: post-migration validation and shutting down the PC

  1. Connect with a real client and validate login, creation, movement, saving, and reconnection.
  2. Ask a few trusted players to test before reopening to everyone.
  3. Confirm that events, ranking, and the shop/website work.
  4. Keep the old PC intact for a few days as a fallback plan, without bringing the server back up on it (so you don't end up with two divergent databases). Only decommission it for good once the VPS has proven stable.

Common errors and fixes

SymptomLikely causeFix
Lost progress after migratingBackup taken with the server runningRedo it with the server stopped (consistent backup) and restore again
MuServer won't connect to the databaseMissing login or orphaned userRecreate the login and run ALTER USER ... WITH LOGIN
Players don't see the server listOld IP still in ConnectServer/listUpdate every file to the new IP/domain
Client connects locally but not externallyServices listening only on 127.0.0.1Set the bind to 0.0.0.0 and open the ports in the firewall
Restore fails due to versionVPS's SQL older than the PC'sUse the same version/edition or newer on the VPS
DNS slow to point to the VPSHigh TTL on the A recordLower the TTL before the switch; wait for propagation
SQL slow during eventsSlow disk or too little RAM on the VPSMove to NVMe/SSD and increase the RAM dedicated to SQL

Launch checklist

  • VPS sized (CPU, RAM, NVMe disk) for the season and the audience
  • SQL Server on the VPS at the same version/edition (or newer) as the PC
  • MuServer copied with the same folder structure
  • Test backup restored and server validated on the VPS (Phase 1)
  • SQL login recreated and orphaned user fixed
  • All configuration files pointing to the new IP/domain
  • Services listening on 0.0.0.0 and ports open in the firewall
  • RDP restricted to my IP and the KVM/VNC console tested
  • DNS TTL lowered in advance
  • Players notified of the maintenance window
  • Production server STOPPED before the final backup
  • Final, consistent backup (with CHECKSUM) of all databases
  • Final restore applied and server live on the VPS
  • DNS switched (or patch/launcher distributed)
  • Post-migration validation with trusted players
  • Old PC kept intact for a few days as a rollback

Migrating from a PC to a VPS is, at its core, an exercise in discipline: prepare everything calmly, freeze the server at the right moment, take a consistent backup, and switch the DNS with the environment already tested. Done in that order, the change happens with just a few minutes of downtime and without losing a single character — and your server gains the stability and protection that residential internet could never offer.

Frequently asked questions

Will players lose their progress during the migration?

No, as long as you back up the database with the server stopped (a cold or consistent backup). The classic mistake is copying the database while the server is running: accounts keep saving and the backup ends up stale. Freeze the server, take the backup, migrate, and only then bring it back up.

What VPS specs do I need to run MU Online?

It depends on the season and the number of players. As an example (it varies by provider/version), a small Season 6 server runs fine on 4 vCPU, 8 GB of RAM, an SSD/NVMe disk, and Windows Server. Larger servers or modern seasons demand more RAM and CPU. Prioritize a fast disk for SQL Server.

Do I need to change the IPs in any files after migrating?

Yes. The home PC's IP shows up in several places: ConnectServer, the server list, client files, and the database configuration. All of them need to point to the VPS's new public IP (or a domain via DNS). Forgetting even one keeps the game from connecting.

Is it better to use a direct IP or a domain (DNS) in the client?

A domain is far better. If you point the client at a domain via DNS, future server/IP changes won't require redistributing the client: you just update the DNS record. With a hardcoded IP in the client, every change forces all players to download a new patch.

How do I migrate without leaving the server offline for too long?

Prepare everything on the VPS ahead of time (SQL, MuServer installed, ports open) using an old copy of the database for testing. On the day itself, you only stop the server, take the final backup, restore it onto the already-prepared VPS, and switch the DNS. The real downtime window drops to minutes instead of hours.

BR
Events, maps & items editor

Bruno specializes in MU Online events, maps, bosses and item economy. He documents every detail based on real gameplay.

Keep reading

Related articles