Brazil's biggest MU Online portal — since 2003
Tutorial Intermediate Server

How to host your MU Online server's website

Complete guide to getting your MU Online server's website online: the three hosting options (same VPS as the game / separate shared Linux hosting / local XAMPP or AppServ), how to upload files via FTP with FileZilla step by step, how to install the IonCube Loader in cPanel and in XAMPP, configuring the database connection in the site's config file (SQL Server and MySQL connection strings), setting folder permissions correctly (644 for files, 755 for directories, 777 for writable directories), how to troubleshoot blank pages and IonCube errors, linking the site to the game's player database so rankings and account registration work, and the security rules for the website database connection (dedicated user, never expose SQL port to internet).

BR Bruno · Updated on Jul 29, 2026 · ⏱ 12 min read
Quick answer

The website is where players register accounts, check rankings, download the client, and learn about your server. Getting it online and connected to your game database is a critical step.

The website is where players register accounts, check rankings, download the client, and learn about your server. Getting it online and connected to your game database is a critical step.

Nota: The MU Online website runs on PHP + MySQL/SQL Server. The game runs on the MuServer binaries + SQL Server. These are two different systems that share the same player database. You need both working and connected.

The three hosting options

CHOOSE YOUR HOSTING SETUP:

OPTION 1 — WEBSITE ON THE SAME VPS AS THE GAME (simplest):
→ Install XAMPP or AppServ on the Windows VPS that also runs the MuServer
→ Website runs on Apache/PHP on the same machine
→ Database connection: localhost (no network hop)
→ Pros: everything in one place, simplest setup, no additional cost
→ Cons: website load competes with MuServer for CPU/RAM
→ Good for: new servers, under 50 concurrent players

OPTION 2 — WEBSITE ON SEPARATE LINUX HOSTING (recommended for medium+ servers):
→ Rent a cheap PHP shared hosting ($5-15/month, usually Linux)
→ Upload the website files there via FTP
→ Database connection: the VPS's public IP (e.g., 45.67.89.100:1433)
→ Pros: website load doesn't affect game performance, usually cheaper
→ Cons: two servers to manage, network between them adds small latency
→ Good for: established servers planning to grow

OPTION 3 — LOCAL MACHINE FOR TESTING (XAMPP/AppServ on home PC):
→ Run the game server and website on your own PC for testing
→ Database connection: localhost
→ Pros: no cost, full control
→ Cons: only accessible from your network (without port forwarding + No-IP)
→ Good for: development, testing before going live

Uploading files via FTP

UPLOAD SITE FILES WITH FILEZILLA:

STEP 1 — INSTALL FILEZILLA CLIENT:
→ filezilla-project.org → download FileZilla Client (not Server) → install

STEP 2 — GET FTP CREDENTIALS:
→ From your hosting control panel (cPanel, Plesk, or similar):
  → cPanel → FTP Accounts → create a new FTP account or use the main account
  → Note: FTP host, username, password, port (21 for FTP, 22 for SFTP)

STEP 3 — CONNECT:
→ FileZilla → top bar: Host / Username / Password / Port → Quickconnect
→ Left panel = your PC, Right panel = hosting server
→ Navigate right to your public_html (or www/) folder

STEP 4 — UPLOAD SITE FILES:
→ Navigate left to your website folder on your PC
→ Select all files → drag to the right panel (public_html/)
→ Wait for transfer to complete (may take a few minutes for large sites)

AFTER UPLOAD — VERIFY:
→ Open your domain in a browser: http://yourdomain.com
→ If you see the site: upload worked
→ If blank page: probably IonCube issue (see below) or config not set up yet

Installing IonCube Loader

IONCUBE INSTALLATION:

WHY IONCUBE IS NEEDED:
→ Many MU web systems encrypt their PHP files with IonCube
→ Without the Loader installed, you get: "This file is encoded by ioncube..."

METHOD A — CPANEL SHARED HOSTING:
1. Log into cPanel → "Select PHP Version" or "PHP Selector"
2. Look for "ioncube_loader" in the extensions list
3. Check the box to enable it → Save
4. Verify: create a phpinfo.php file with <?php phpinfo(); ?>
   and browse to it — search for "ioncube" in the output

METHOD B — XAMPP (LOCAL):
1. Download IonCube Loaders from ioncube.com → Linux/Windows package
2. Extract → find the file matching your PHP version:
   → ioncube_loader_win_7.4.dll (for PHP 7.4 on Windows)
   → or ioncube_loader_lin_7.4.so (for PHP 7.4 on Linux)
3. Copy the .dll file to your XAMPP PHP folder:
   → C:\xampp\php\ext\
4. Edit C:\xampp\php\php.ini:
   → Add this line near the TOP (before any other extensions):
   zend_extension = "C:/xampp/php/ext/ioncube_loader_win_7.4.dll"
5. Restart Apache in XAMPP Control Panel
6. Verify: browse to localhost/phpinfo.php → search for "ioncube"

Configuring the database connection

CONNECT THE WEBSITE TO THE GAME DATABASE:

FIND THE CONNECTION FILE:
→ Look in the site's root folder for: config.php, db.php, database.php, or similar
→ Some systems use a config folder: config/database.php

SQL SERVER CONNECTION (most S6 web systems):
// Connection to the game's SQL Server database
$sql_host   = '127.0.0.1';         // localhost if on same VPS, or VPS IP if separate hosting
$sql_port   = 1433;
$sql_db     = 'MuOnline';
$sql_user   = 'mu_web_user';       // a dedicated SQL Server user (not sa!)
$sql_pass   = 'SecurePassword2024';

// For some web systems using ODBC:
$dsn = "DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=MuOnline;UID=mu_web_user;PWD=SecurePassword2024";

MYSQL CONNECTION (if the site also uses MySQL for its own data):
$mysql_host = 'localhost';
$mysql_user = 'mu_web';
$mysql_pass = 'SecurePassword2024';
$mysql_db   = 'musite';

CREATE THE DEDICATED SQL SERVER USER FOR THE WEBSITE:
-- In SSMS on the game VPS:
CREATE LOGIN mu_web_user
WITH PASSWORD = 'SecurePassword2024',
     CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;
USE MuOnline;
CREATE USER mu_web_user FOR LOGIN mu_web_user;
-- Grant read access to game data, write only where needed:
EXEC sp_addrolemember 'db_datareader', 'mu_web_user';
Atenção: Never configure the website to connect using the 'sa' account. If the website is compromised, the attacker gets full SQL Server admin access. Create a dedicated user with only the minimum permissions the site needs. Accounts that only display rankings need only read access (db_datareader). Account registration needs write access to the account table only.

Setting permissions correctly

UNIX FILE PERMISSIONS FOR HOSTING:

WHAT EACH PERMISSION LEVEL MEANS:
→ 644 = owner read/write, others read-only (good for PHP files and configs)
→ 755 = owner full access, others read+execute (good for folders)
→ 777 = everyone full access (only use for writable cache/upload folders)

APPLY VIA FILEZILLA:
→ Right-click a file or folder → "File permissions"
→ Or: right-click → "File permissions" → "Numeric value" → type the number

RECOMMENDED STRUCTURE:
/public_html/           → 755 (the web root)
    config.php          → 644 (configuration — read only)
    index.php           → 644 (main entry point)
    /cache/             → 777 (site needs to write cache here)
    /uploads/           → 777 (player avatar uploads, if feature exists)
    /log/               → 777 (error logs)
    /include/           → 755 (library files)
    /admin/             → 755 (admin panel — consider IP-restricting this)

Troubleshooting common site errors

COMMON PROBLEMS AND SOLUTIONS:

BLANK WHITE PAGE:
→ Cause 1: IonCube not installed or wrong version
  → Check phpinfo.php for "ioncube" — if not there, install it
→ Cause 2: PHP error being suppressed
  → Add to config.php: ini_set('display_errors', 1); error_reporting(E_ALL);
  → Reload the page — the actual error should now appear

"THIS FILE IS ENCODED BY IONCUBE":
→ IonCube Loader is not installed or not matching the PHP version
→ Download the correct loader for your exact PHP version (e.g., 7.4, 8.0)

"CONNECTION FAILED" OR "CANNOT CONNECT TO DATABASE":
→ Check the database credentials in config.php
→ Verify the SQL Server user exists and has correct permissions
→ If site is on separate hosting: verify port 1433 is reachable from that IP
→ Test: telnet [vps-ip] 1433 from the hosting's SSH terminal

RANKING PAGE SHOWS NO DATA:
→ The SQL Server user doesn't have read access to the ranking tables
→ The web system's ranking query may be for a different database name
→ Check the database name in config.php matches the actual MuOnline DB name

Continue with the XAMPP tutorial (for setting up the PHP + Apache environment on your VPS), the MySQL and phpMyAdmin tutorial (for the site's own MySQL database), and the SQL Server configuration tutorial (for creating the correct database users the site will use).

Frequently asked questions

What is IonCube and why do I need it?

IonCube is a PHP obfuscation and encoding system. Many MU Online web systems are distributed with their PHP files encoded (protected) by IonCube to prevent copying. To run these files, the web server needs the IonCube Loader PHP extension installed and configured. Without it, encoded PHP files produce a fatal error or blank page. The Loader is free to download and install.

Does the server website need access to the game's database?

Yes. The website's core features (player account registration, character ranking, item inspection, vote bonuses) all read and write to the same SQL Server database that the game uses. The site connects to the game database via TCP/IP. This connection should be on the internal network (localhost or LAN) — never expose the SQL Server port (1433) to the open internet.

Should the website be on the same server as the game?

It depends on scale. For small servers (under 50 concurrent players): running the website on the same Windows VPS as the game is simpler and cheaper. For larger servers: a separate Linux shared hosting for the website (PHP + MySQL) connected to the game VPS (SQL Server) over the internet is more scalable and cheaper. The added network latency between the website and game database is usually under 20ms and doesn't significantly impact the site's performance.

What permissions should I set on the hosting folders?

Standard Unix permissions for web hosting: PHP files and configuration files should be 644 (owner read/write, others read-only). Folders should be 755 (owner full access, others read+execute). Folders that the web application needs to write to (cache, uploads, logs) should be 777 (full write access). Setting everything to 777 is a security risk — only use it for the directories that genuinely need write access.

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

✉️
Tutorial

How to set up SMTP email on your MU Online server website

Complete guide to configuring SMTP email on your MU Online server website: what SMTP is and why it's needed (password recovery, account activation, admin notifications), how to choose a sending email address (from your domain vs a free service), what SMTP settings you need from your provider (host, port, security type, credentials), step-by-step configuration for the most common MU server web systems, how to use Gmail and Outlook as free SMTP relays (with the modern app password method), how to test if emails are actually being delivered, why emails go to spam and how to fix it (SPF, DKIM, DMARC records), and common SMTP errors with solutions.

12 min · Beginner ·
🎨
Tutorial

How to customize the MuCMS theme for your MU Online server's website

A complete guide to customizing the MuCMS visual theme: file structure, safe editing of PHP/Blade templates, color palette, integration with ranking and the shop, and best practices for not losing your customization during updates.

16 min · Intermediate ·
🧰
Tutorial

How to install AppServ for your MU Online server website

Complete guide to installing AppServ for running a MU Online server website on Windows: what AppServ is and what it includes (Apache, PHP, MySQL, phpMyAdmin), when to choose AppServ over XAMPP, the full installation walkthrough with each configuration screen explained (Apache port, admin email, MySQL root password, charset), where AppServ installs its files (C:\\AppServ\\www\\), how to access phpMyAdmin, installing IonCube Loader in AppServ for protected MU web systems, configuring the virtual host for multiple sites, solving the most common AppServ problems (port 80 conflict, MySQL not starting, phpMyAdmin access), the AppServ vs XAMPP comparison in detail, and the security hardening steps before going live.

12 min · Beginner ·