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

MU Online Web Systems: WebEngine, CMS and Other Platforms

Learn how to set up and configure MU Online web systems including WebEngine and CMS platforms for your private server administration.

VI ViciadosMU Team · Updated on 4 jul 2026 · ⏱ 18 min read

Understanding MU Online Web Systems

Running a MU Online private server involves more than configuring game executables and database tables. Players need a web presence: a place to register accounts, check rankings, manage characters, and interact with the server community. This is where web systems come in.

A MU Online web system is a web application that sits in front of your game database. It reads and writes to the same SQL Server instance that your GameServer and ConnectServer use, and exposes that data through a browser interface. The quality and features of your web system directly affect how professional your server appears and how smoothly players can self-manage their accounts.

There are several categories of web platforms used in the MU private server community:

  • WebEngine — the most historically common dedicated MU web framework, with variants built on ASP, ASP.NET, and PHP
  • Custom CMS builds — full content management systems adapted for MU, often built on frameworks like Laravel, CodeIgniter, or WordPress with custom plugins
  • Admin panels — lightweight back-office tools for administrators, separate from the public-facing site
  • Hybrid setups — a public CMS combined with a separate dedicated MU panel for account/character features
Nota: The term "WebEngine" has been used loosely in the MU community to describe many different projects over the years. Before configuring any web system, confirm which specific version or fork you have, as configuration files, database queries, and folder structures vary significantly between them.

Setting Up IIS for ASP.NET Web Systems

Most traditional WebEngine builds target Windows Server with IIS (Internet Information Services). Before deploying the application files, IIS must be correctly prepared.

Enable IIS and required features:

Open Server Manager, go to Add Roles and Features, and enable:

  • Web Server (IIS)
  • ASP.NET 4.x (under Application Development)
  • ISAPI Extensions and ISAPI Filters
  • URL Rewrite Module (install separately via the IIS module gallery)

Once IIS is running, create a new site:

IIS Site Configuration
→ Site name:          MuWebsite
→ Physical path:      C:\inetpub\muwebsite
→ Binding protocol:   HTTP
→ Binding IP:         your server's public IP or 0.0.0.0
→ Port:               80  (use 443 + certificate for HTTPS)
→ Application pool:   MuWebsitePool
  → .NET CLR version: v4.0
  → Pipeline mode:    Integrated
  → Identity:         ApplicationPoolIdentity (or a dedicated service account)

Set the physical path permissions so the IIS application pool identity has read access to the site files and write access only to folders that need it (uploads, cache, logs).

> [!WARNING] > Do not grant the IIS application pool identity write access to the entire web root. Restrict write permissions to specific subdirectories. If the application is compromised, broad write permissions allow an attacker to modify PHP or ASPX files and execute arbitrary code on the server.

Configuring the Database Connection

The database connection is the most critical configuration step. Your web system must be able to reach your SQL Server instance and authenticate with a login that has the correct permissions.

Create a dedicated SQL login for the web system:

In SQL Server Management Studio, create a login that is separate from your GameServer login:

SQL Server Login Setup
→ Login name:         mu_web_user
→ Authentication:     SQL Server Authentication
→ Password:           [strong password, 20+ characters]
→ Default database:   MuOnline

Database permissions (MuOnline):
→ db_datareader      → YES  (read all tables)
→ db_datawriter      → YES  (write to allowed tables)
→ DENY on sensitive tables: GameServerInfo, WEBZEN_AUTH

Database permissions (MEMB_DATA):
→ SELECT on MEMB_INFO  → YES
→ INSERT on MEMB_INFO  → YES
→ UPDATE on MEMB_INFO  → YES  (only pwd, email, block fields)
→ DELETE on MEMB_INFO  → NO

Then update the web system's configuration file. For a PHP-based system this is typically config.php or database.php:

PHP Database Config (config.php)
→ DB_HOST     = "127.0.0.1"          // or remote SQL Server IP
→ DB_PORT     = "1433"
→ DB_NAME     = "MuOnline"
→ DB_USER     = "mu_web_user"
→ DB_PASS     = "your_strong_password"
→ DB_MEMB     = "MEMB_DATA"          // separate database for accounts
→ DB_CHARSET  = "utf8"
→ DB_DRIVER   = "sqlsrv"             // use sqlsrv for SQL Server on PHP

For ASP.NET WebEngine, the connection string lives in web.config:

web.config Connection String
→ name="MuConnection"
→ connectionString="Server=127.0.0.1,1433;
    Database=MuOnline;
    User Id=mu_web_user;
    Password=your_strong_password;
    TrustServerCertificate=True;"
→ providerName="System.Data.SqlClient"

PHP-Based CMS Platforms: Nginx and Apache Setup

Newer web systems targeting PHP 8.x work well on either Apache or Nginx. This section covers Nginx, which handles concurrent connections more efficiently under load.

Install required PHP extensions for SQL Server connectivity:

PHP communicates with SQL Server through Microsoft's sqlsrv and pdo_sqlsrv extensions. These must be explicitly installed and enabled.

PHP Extension Requirements
→ php_sqlsrv.dll         → SQL Server non-PDO driver
→ php_pdo_sqlsrv.dll     → SQL Server PDO driver
→ php_openssl.dll        → required for encrypted connections
→ php_mbstring.dll       → required for multibyte string handling
→ php_curl.dll           → required for external API calls (Discord webhooks, etc.)
→ php_gd.dll             → required for image generation (rankings, avatars)

php.ini entries to verify:
→ extension=sqlsrv
→ extension=pdo_sqlsrv
→ mssql.secure_connection = On
→ date.timezone = America/Sao_Paulo   // adjust to your server timezone

Nginx virtual host configuration:

Nginx Server Block (mu-website.conf)
→ server_name:       yourdomain.com www.yourdomain.com
→ root:              /var/www/muwebsite/public
→ index:             index.php
→ location /:        try_files $uri $uri/ /index.php?$query_string
→ location ~\.php$:  fastcgi_pass unix:/run/php/php8.2-fpm.sock
→ client_max_body_size: 20M   // for avatar/image uploads
→ fastcgi_read_timeout:  60   // increase if rankings queries are slow

> [!TIP] > Enable OPcache in your PHP configuration. MU web systems execute many repetitive database queries and PHP parses the same script files on every request. OPcache caches compiled PHP bytecode in memory, which typically reduces page generation time by 30 to 60 percent. Set opcache.memory_consumption=128 and opcache.max_accelerated_files=10000 as a starting point.

Structuring the Web Application: Key Modules

A complete MU web system should cover several functional areas. Understanding what each module does helps you troubleshoot issues and extend functionality:

Account Registration Writes a new row to MEMB_INFO in the MEMB_DATA database. Must hash the password using the same algorithm the GameServer expects — historically MD5, but newer setups use SHA256 or bcrypt with a compatibility layer.

Character Rankings Reads from Character table in MuOnline. Rankings queries often involve ORDER BY on Level, Resets, or a custom points formula. Cache these results — do not run live ranking queries on every page load.

Online Player Count Reads from CONNECT_MEMBER or a custom status table that ConnectServer updates. This table changes frequently; a 30-second cache is appropriate.

Item Shop / Goblin Points Writes to a credits or points table, then a stored procedure or scheduled job in SQL Server Agent processes the actual item delivery to the character inventory.

Password Reset Updates MEMB_INFO.MemorialKey or a similar field. Send the reset token by email using SMTP; never expose the token in a URL that persists in server logs without expiry logic.

Hardening and Maintenance

Once the web system is running, apply these hardening measures before going public:

  • Disable directory listing in IIS and Nginx
  • Remove or password-protect any /install, /setup, or /admin paths that were used during initial configuration
  • Enable HTTPS using a certificate from a public CA
  • Configure a Web Application Firewall rule to rate-limit the registration and login endpoints
  • Set up automated SQL Server backups that include the MEMB_DATA database — account data is irreplaceable
  • Monitor IIS or Nginx access logs for repeated 500 errors, which often indicate a broken database query after a game update changes a table schema

Keeping the web system aligned with your game server version is an ongoing task. Every time you update the GameServer or change the database schema, audit the web system queries that touch modified tables.

Perguntas frequentes

What is WebEngine for MU Online?

WebEngine is a web platform specifically designed for MU Online private servers. It provides a web interface for player registration, character management, rankings, item shops, and server news. It connects directly to the MuOnline SQL database and exposes that data through a structured PHP or ASP.NET application layer.

Do I need IIS or Apache to run a MU web system?

It depends on the platform. WebEngine Classic and many older systems were built on ASP/ASP.NET and require IIS (Internet Information Services) on Windows Server. Newer PHP-based CMS platforms like MuCMS or custom Laravel builds can run on Apache or Nginx on either Windows or Linux.

How do I connect the web system to my MuOnline database?

You configure the database connection string in the web system's config file — usually a file named config.php, web.config, or database.ini. You need the SQL Server hostname or IP, the database name (typically MuOnline and MEMB_DATA), the SQL login credentials, and the port (default 1433 for SQL Server).

Can I run multiple web systems for one server?

Yes. You can run a primary CMS for the main website and a secondary panel for administration. They can share the same database connection as long as each has the correct read/write permissions scoped to the tables it needs. Use separate IIS sites or virtual hosts to isolate each application.

VI

ViciadosMU Team

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

Keep reading

Related articles