← Open Vanilla MANUALHOST GUIDEBOOK

The Host Guidebook

Everything about running your own Open Vanilla realm, from first install to backups and going public. New here? Read chapters 1–3, then come back to the rest when you need it. The short install page is Host a server.

Chapter 1

Before you start

This guidebook is about Open Vanilla Server: the separate download that runs an always-on realm on your PC (OpenVanilla-Server.zip). The Open Vanilla launcher is for playing; it connects to your realm like any other.

An Open Vanilla realm is four programs working together on one PC. You don't need to understand them to run a realm, but knowing their names makes the Open Vanilla Server window and every error message easier to read.

ProgramPortWhat it does
MySQL3310The database. Holds accounts (classicrealmd), characters (classiccharacters) and the whole world: NPCs, items, quests, loot (classicmangos).
Login server (realmd)3724Checks usernames and passwords, then shows the realm list.
World server (mangosd)8085The game itself. Every player, monster and spell runs here.
Web backend18090Your realm's website, the sign-up page, Server Studio, and the bridge that lets browsers play.

What you need

  • Windows 10 or 11, 64-bit, about 15 GB free. An SSD makes the world server start much faster.
  • 8 GB of RAM is comfortable for you and a few friends.
  • Open Vanilla Server: OpenVanilla-Server.zip, also on the latest release.
  • Python 3 (tick “Add to PATH” when you install it).
  • SPP Classics V2, which provides the database and both game servers. The Open Vanilla launcher's Play Solo can set it up for you (chapter 2).
  • Vanilla Client v1.3 to play on it. See the client guide.

Plan on 30–45 minutes the first time. Most of it is SPP downloading its files.

Chapter 2

Install

1. SPP Classics, the easy way

In the Open Vanilla launcher, switch PLAY to SOLO and press PLAY:

  1. Download. It downloads SPP Classics (about 110 MB, resumable) into the launcher's Realms\Solo folder.
  2. Server files. Press PLAY again if asked: it unpacks SPP and fetches its server files (about 700 MB), with progress in the bar.
  3. One guided step. SPP's own setup window opens once. Type 1 and press Enter, wait while it downloads and builds the database, and when the Vanilla menu appears type 0.

1. SPP Classics, by hand

  1. Download SPP_Classics_V2.zip from the SPP Classics releases and extract it, for example to C:\SPP_Classics_V2. Never install over an older SPP.
  2. Run Server_Update.bat in that folder and wait for it to fetch the server files.
  3. Run SPP_Server\Launcher.bat, type 1 for Vanilla and wait. If it offers to start the servers, shut them down from its menu (0), not the window's X.

2. Open Vanilla Server

  1. Extract OpenVanilla-Server.zip anywhere, for example C:\OpenVanilla-Server.
  2. Double-click Start Open Vanilla Server.bat. The first start installs the Python packages it needs (aiohttp, Pillow, psutil, PyMySQL).
  3. It finds an SPP install in C:\SPP_Classics_V2, D:\, C:\Games or on your Desktop by itself. Otherwise it asks you to pick the SPP_Classics_V2 folder (or the SPP_Server folder inside it). It remembers the choice; python openvanilla_server.py --forget makes it ask again.

Optional: browser play

Desktop clients work without this. The browser client ships in Open Vanilla Server's www folder; it also needs game data, and, for friends over the internet, an HTTPS gateway:

  • Game data: extract your own Vanilla Client v1.3 MPQ contents into Open Vanilla Server's Data\ folder (Extract assets Verification opens it). Open Vanilla never ships Blizzard files.
  • The HTTPS gateway (chapter 9).
Chapter 3

Your first realm in ten minutes

  1. Start everything. In Open Vanilla Server press START / RESTART ALL SERVICES. Watch the lights: database, login, world and web backend turn green. The world server is last and can take a minute or two while it loads the map.
  2. Make your admin account. Press Player & GM Admin Manager, type a name (3–16 letters or digits) and a strong password, pick Administrator and press CREATE / UPDATE ACCOUNT.
  3. Add it to your launcher. In the Open Vanilla launcher, REALMS → Add realm with address 127.0.0.1.
  4. Play. Press PLAY and sign in with the account you just made, or press ENTER WORLD IN BROWSER. With a stock client, put set realmlist 127.0.0.1 in realmlist.wtf instead.
  5. Check you're in charge. In game, type .gm on. If chat answers that GM mode is on, your admin account works.

Tip: HALT ALL SERVICES stops everything before you shut the PC down. Tick Start services on launch to have the realm come up whenever you open Open Vanilla Server.

Chapter 4

The Open Vanilla Server window, part by part

Realm infrastructure

One row per program with its port and a light: green running, red stopped, with CPU and memory for the database and world server. The lights refresh every few seconds. The top right shows world uptime and players online.

Realm master controls

ButtonWhat it does
Player & GM Admin ManagerCreates an account or resets its password, and sets its role (chapter 5).
Live Config EditorOpens SPP's mangosd.conf: rates, bots, level cap, message of the day (chapter 7).
Extract assets VerificationOpens the Data folder the browser client reads game data from.
World Database Backups & ToolsetBacks up accounts and characters, and opens the database folder (chapter 10).
Open Community & News PortalYour realm's website on http://127.0.0.1:18090/.

Quick actions

START / RESTART ALL SERVICES starts the database, login, world and web backend in that order. ENTER WORLD IN BROWSER opens the browser client. HALT ALL SERVICES stops what Open Vanilla Server started. Open Server Studio (top left) opens the realm admin web app (chapter 15).

HTTPS gateway & networking

The public website address, the Caddy HTTPS gateway buttons (chapter 9) and the REALM ADDRESS players' games connect to (chapter 8). SHARE SERVER LINK copies your website link and the realmlist line for friends.

Logs and the GM console

The right side shows every service's log, with a tab per service. The box at the bottom sends world-console commands such as server info or announce Restarting in 5 minutes over SOAP: set SOAP.Enabled = 1 in mangosd.conf, restart the world server, and add "soap_user" / "soap_pass" (a GM 3 account) to launcher_settings.json in the Open Vanilla Server folder. Console commands have no dot and run with full rights. When asking for help, send web-backend.log and SPP's logs.

Chapter 5

Accounts and roles

Every account has a role, stored as a number from 0 to 3. The role decides which dot commands it can use.

LevelRoleCan do, for example
0PlayerPlay. A few self-service commands such as .account password.
1ModeratorTeleport, announce, mute, look things up.
2Game MasterAlso spawn and delete NPCs and objects, kick, tickets, guilds.
3AdministratorAlso bans, items, levels, server restart and shutdown, reloading settings.

A few commands, such as creating accounts with .account create, are console-only (level 4). Type those in Open Vanilla Server's GM console without the dot, or use Server Studio's Players tab.

Common jobs

  • Make someone a GM without changing their password: Server Studio → Players, change their role from the dropdown. Or Player & GM Admin Manager, or in the GM console account set gmlevel BOB 2 (their login name, then the level). They must log out and back in.
  • Reset a forgotten password: Server Studio → Players, or in the GM console account set password BOB newpass newpass.
  • Let players sign up themselves: start the realm (the website comes up with it) and send them its address. Sign-ups are checked against the login server, so a new account works straight away.

Give the fewest people the highest role. An Administrator can ban anyone and restart the realm. Most helpers only need Moderator or Game Master.

Chapter 6

Game Master tools in game

When you play in the browser client, a GM button sits at the top left. Click it, or press Ctrl+Shift+G, to open the Game Master panel. It sends ordinary dot commands for you, so it only does what your account's role allows.

TabWhat's in it
DashboardSwitches with status lights for GM mode, invisible, fly, god mode, GM badge, whispers, all flight paths and water walking. Sliders for run speed, swim speed and size. A strip shows who your next command will land on: your target, or you.
ToolsEveryday jobs as buttons: add levels, set level, learn spells, reputation, professions, and more. Buttons that need details open a small form, pre-filled from your target.
LootSearch items, item sets, NPCs, objects, spells, quests and factions in your own database. Ready-made collections: tier 0–3 sets, legendaries, mounts. Click a result to give, spawn, learn or add it.
CommandsEvery command the server knows, grouped by job, with the role each needs and its help text.

Ten commands worth knowing

CommandDoes
.gm on / .gm offGM mode: monsters ignore you, GM tag on.
.tele IronforgeTeleport to a named place. .lookup tele lists them.
.lookup item thunderfuryFind an item's ID by name.
.additem 19019Put an item in your target's bags, or yours.
.levelup 10Add levels to your target, or you.
.announce textMessage in every player's chat.
.kick NameDisconnect a player.
.ban account Name 1d reasonBan an account for a time such as 1d or 12h, and kick it.
.server restart 300Restart in 300 seconds, with in-game warnings. .server restart cancel stops it.
.server infoPlayers online, uptime, core version.

The item search reads item names and qualities from your own database.

Chapter 7

Rates and rules

XP rates, drop rates, the level cap, realm type and the message of the day live in one text file: mangosd.conf, in your SPP folder under Settings\vanilla\. Live Config Editor opens it. Open Vanilla Server prints which SPP folder it runs when it starts (after Play Solo's setup it is in the launcher's Realms\Solo\SPP_Classics_V2\SPP_Server).

  1. Back up first. Copy mangosd.conf to mangosd.conf.bak in the same folder.
  2. Open it and use Ctrl+F to find the setting. Each setting is one line: Name = value. Lines starting with # are notes explaining the setting above or below them.
  3. Change the number, save the file.
  4. Apply it: log in as an Administrator and type .reload config. Most rates take effect at once. If one doesn't, restart the world server.

Settings people change most

Search for these names. Your file's notes describe each one; if a name isn't there, your server version calls it something slightly different.

Search forControlsExample
Rate.XP.KillXP from monsters (also Rate.XP.Quest, Rate.XP.Explore)2 = double XP
Rate.Drop.MoneyGold dropped by monsters1.5
Rate.Drop.ItemItem drop chance, one line per quality (Normal, Uncommon, Rare, Epic…)Rate.Drop.Item.Rare = 2
Rate.Reputation.GainReputation from kills and quests2
MaxPlayerLevelLevel cap60
StartPlayerLevelLevel new characters start at1
GameTypeRealm type. The note above it lists the numbers for Normal, PvP, RP and RP-PvP1 = PvP
PlayerLimitMost players online at once100

The message of the day doesn't need the file: type .server set motd Welcome to our realm! in game.

Changing a setting won't undo what already happened. Lowering XP doesn't take levels away; raising drop rates doesn't refill loot already rolled.

Chapter 8

Your realm's name and address

Two things are stored in the database's realm list: the name players see, and the address their game connects to. The address must be one players can reach:

Who playsAddress to use
Only you, on this PC127.0.0.1 (the default)
Friends on your home networkYour PC's LAN address, e.g. 192.168.1.20 (ipconfig in Command Prompt shows it as IPv4 Address).
Friends over the internetYour public IP or a domain name pointing at it.

To change it, type it in REALM ADDRESS in Open Vanilla Server and press Save. It's written into the realm list straight away (and again every time the realm starts); players who are signed in log out and back in to pick it up. Open Vanilla Server also removes Play Solo's SOLO / SOLO login whenever it starts, so a Play Solo install is safe to open up.

To rename the realm, use Server Studio's Realm tab, or run this in Command Prompt as one line, with your own SPP path (it asks for the MySQL password), then restart the servers:

"C:\SPP_Classics_V2\SPP_Server\Server\Database\bin\mysql.exe" -h 127.0.0.1 -P 3310 -u root -p classicrealmd -e "UPDATE realmlist SET name='My Realm'"

Your own PC still works with a public address on most routers. If yours can't (some can't “loop back”), keep a second realm entry in your launcher pointing at 127.0.0.1.

Chapter 9

Letting friends in

Friends with the desktop launcher or a stock client

  1. Set the realm address to your public IP (chapter 8).
  2. On your router, forward TCP 3724 and 8085 to this PC's LAN address. Your router's admin page calls this “port forwarding” or “virtual server”.
  3. Allow them through Windows Firewall. In Command Prompt run as administrator:
    netsh advfirewall firewall add rule name=OpenVanilla-Game dir=in action=allow protocol=TCP localport=3724,8085
  4. Friends use Add realm in their launcher's realm list, or put set realmlist <your address> in a stock client's realmlist.wtf.

Everyone who connects can see your public IP address. Only forward the two game ports; never the database or the website port.

Friends in their browser

Browsers only connect over HTTPS, so browser play over the internet needs an HTTPS gateway (such as Caddy) in front of the web backend on port 18090, with a domain name and ports 80, 443 and 8090 forwarded. Open Vanilla Server drives Caddy for you: Get Caddy (a copy also ships in its bin folder), type your domain in PUBLIC HTTPS ADDRESS, Save URL, Allow Web Ports, then Start and Test HTTPS. The Linux server kit in chapter 12 does the same in one command.

The login and world servers stay private in that setup: browsers reach them only through the web backend over HTTPS.

Which ports go where

3724Login. Open for desktop players.
8085World. Open for desktop players.
8090HTTPS site. Open for browser players.
80 / 443Certificate checks for the HTTPS site.
18090Website and Server Studio. Local only; an HTTPS gateway fronts it.
3310Database. Never open this.
Chapter 10

Backups and restore

Quick backup: Server Studio

Server Studio's Backups tab backs up all three databases now, runs a daily backup at the time you pick, and lets you download any backup. The servers must be running. Do this before any big change.

By hand

In Command Prompt, as one line, with your own SPP path and a folder of your choice (World Database Backups & Toolset does accounts and characters in one click):

"C:\SPP_Classics_V2\SPP_Server\Server\Database\bin\mysqldump.exe" -h 127.0.0.1 -P 3310 -u root -p --single-transaction --databases classicrealmd classiccharacters classicmangos > C:\OpenVanilla-Backups\full.sql

Restore

  1. Stop the world and login servers (MySQL must stay running).
  2. Run, as one line, pointing at the backup you want:
    "C:\SPP_Classics_V2\SPP_Server\Server\Database\bin\mysql.exe" -h 127.0.0.1 -P 3310 -u root -p < C:\OpenVanilla-Backups\full.sql
  3. Start the servers again.

A restore replaces what's there now. Anything players did since that backup is gone. Take a fresh backup first, so you can go back if you picked the wrong file.

Keep copies somewhere else

A backup on the same disk doesn't survive that disk dying. Copy your backups to a USB drive or cloud folder now and then. On a Linux server, the Hetzner kit backs up every day at 04:00 UTC and keeps 14 days.

Chapter 11

Keeping it safe

Do these before you share your address with anyone:

  1. Change the database password. SPP ships with root / 123456, which everyone knows. Change it with SPP's MySQL tools, then put it in a file named .env in the Open Vanilla Server folder, as two lines: MYSQL_USER=root and MYSQL_PASSWORD=yournewpassword.
  2. Never forward port 3310. The database should only ever be reachable from your own PC. The same goes for 18090 (website and Server Studio).
  3. Strong admin passwords. Every GM 2 and GM 3 account should have one, and only people you trust should have them. Open Vanilla Server removes Play Solo's SOLO / SOLO login whenever it starts.
  4. Keep .env and launcher_settings.json private. They hold passwords. Don't post screenshots of them or upload them to GitHub.
  5. Back up before going public (chapter 10).

Found a security problem in Open Vanilla itself? See the security page.

Chapter 12

Moving to a Linux server

A rented server stays online when your PC is off and gives friends a steadier connection. The hetzner kit sets one up with a single command.

New realm: one command

On a fresh Ubuntu 22.04/24.04 server, with your domain's A record pointing at it, run as root:

curl -fsSL https://raw.githubusercontent.com/orionopenwow/OpenVanilla/stable/hetzner/wenilla_up.sh -o wenilla_up.sh
bash wenilla_up.sh your.domain.name

It installs Docker, locks the firewall down to 22/80/443, fetches the Vanilla Client v1.3 data onto the server and starts the realm (CMaNGOS classic, the browser client and HTTPS). Then add the Open Vanilla extras (the Vanilla Remastered addons, Discord sign-in, the sign-up feed) with:

curl -fsSL https://raw.githubusercontent.com/orionopenwow/OpenVanilla/stable/hetzner/openvanilla_realm_up.sh -o openvanilla_realm_up.sh
bash openvanilla_realm_up.sh

Both are safe to run again.

ItemRecommendation
ServerHetzner Cloud CPX31 or similar: 4 vCPU, 8 GB RAM, about €14–18 a month
SystemUbuntu 24.04 LTS or Debian 12
LocationClosest to most of your players

Moving your Windows realm

  1. On your PC, double-click archive\Export_Database_For_Hetzner.bat. It saves accounts, characters and the world into hetzner\database\dumps\.
  2. Point your domain's A record at the server's IP. With Cloudflare, set it to DNS only (grey cloud) so the certificate can be issued.
  3. Copy the project to the server: scp -r C:\path\to\OpenVanilla root@<server IP>:/root/openvanilla_src
  4. On the server: cd /root/openvanilla_src/hetzner && sudo bash setup_hetzner.sh

The script installs everything, opens only the ports players need, imports your data, sets up HTTPS, starts the services at boot and schedules the daily backup. Details are in the kit's README.

Chapter 13

Troubleshooting

What you seeWhat to do
Open Vanilla Server asks for SPPFinish Play Solo's setup (chapter 2), or pick the folder that contains Server\Database (or its parent). python openvanilla_server.py --forget makes it ask again.
Start Open Vanilla Server.bat closes straight awayPython isn't installed or isn't on PATH: reinstall it with “Add to PATH” ticked.
Windows says “Unknown publisher” or SmartScreen stops the installerOpen Vanilla isn't code-signed yet. Check the file against the checksums on the release page, then choose More info → Run anyway.
Database light stays offAnother MySQL is using port 3310, or SPP setup didn't finish. Run SPP's Launcher.bat again and pick 1.
World light stays off for minutesNormal on first start or on a hard drive; it can take up to 2½ minutes. If it never comes up, read the MANGOSD tab of the log, and mangosd-startup.log in the Open Vanilla Server folder.
“Information is not valid” at loginThe account was made before the server was ready. With every light green, set its password again in the GM console: account set password NAME PASS PASS.
Logged in, but the realm list is empty or won't connectThe realm address is wrong for where you're playing from (chapter 8), or port 8085 is blocked.
Friends can't connectTest 3724 and 8085 with an online port checker while the server runs. Check the realm address is your public IP, not 127.0.0.1.
HTTPS starts but browsers show a certificate errorPorts 80 and 443 must reach this PC so the certificate can be issued. Check the forward, then Stop and Start HTTPS.
A dot command does nothingYour account's role is too low for it. The GM panel's Commands tab shows the level each needs.
Rate change didn't applyDid you save the file? Type .reload config as an Administrator; if it still doesn't apply, restart the world server.

Still stuck? Post in the Open Vanilla Discord's #bug-reports with a screenshot of the log and web-backend.log from the Open Vanilla Server folder. Never include .env or launcher_settings.json.

Chapter 14

Words you'll see

WordMeans
RealmYour game world, as players see it in the realm list.
CoreThe server software that runs the game. Open Vanilla uses CMaNGOS Classic, via SPP.
realmd / mangosdThe login server and the world server.
RealmlistThe address a game client asks for the realm list; also the database table holding your realm's name and address.
GM levelAn account's role, 0–3 (chapter 5).
Dot commandA chat command starting with a dot, like .gm on, run by the server.
Port forwardingA router rule sending outside traffic on a port to one PC on your network.
LAN / public IPYour PC's address inside your home network / your home's address on the internet.
CaddyThe program that serves your realm's site over HTTPS and renews its certificate.
DumpA backup file of the database, in SQL text.
Chapter 15

Server Studio PREVIEW

Server Studio runs your realm from a web page instead of commands and files. It's new, so keep the Open Vanilla Server window and this guidebook's manual steps as a fallback.

Open it

  • On a Windows PC: in Open Vanilla Server, press START / RESTART ALL SERVICES, then Open Server Studio (it opens http://127.0.0.1:18090/studio/).
  • On a Linux server (wenilla-realm Docker stack): install it once with the steps in hetzner/systemd/openvanilla-studio.service. Then on your PC run ssh -L 18091:127.0.0.1:18091 root@your-server and browse to http://localhost:18091/studio/ while that window stays open.
  • Just to look around: py -3 studio_server.py --demo opens a pretend realm. Sign in as ADMIN / ADMIN.

Sign in with an Administrator (GM 3) account of the realm.

What's in it

TabWhat you can do
DashboardPlayers online, accounts, world uptime, last backup. Start, stop or restart each service. A list of things that need your attention, with a Fix button where Studio can fix it.
PlayersSearch accounts, change a role from a dropdown (the password stays the same), reset a password, ban or unban, kick a character that's online, and create accounts.
MessagesSet the message of the day, announce in chat or in the centre of the screen, and schedule or cancel a restart with a countdown.
BackupsBack up all three databases now, set the daily backup time and how many days to keep, and download any backup.
RealmRename the realm and choose who can connect: this computer, your home network, or the internet.
LogsStudio's own activity and the server logs, updating as you watch.
HistoryEvery change made in Studio, who made it and when, with Undo for role, realm, message and ban changes.

Good to know

  • It only answers on the computer it runs on. Studio refuses anything that comes through the internet gateway. On a Linux server it has its own address (localhost:18091), separate from your public website; that's why it needs the SSH tunnel.
  • Messages, kicks, bans and timed restarts use the world server's SOAP console. If it's off, the Dashboard shows a Fix button that turns it on for this PC only; then restart the world server.
  • Role changes apply at the player's next login. If you remove someone's Administrator role, they're signed out of Studio straight away.
  • Its history lives in studio_state\ next to the server files. It never stores passwords.

Coming next

A first-run wizard and realm templates, sliders for rates and rules, one-click restore, and editors for vendors, loot and quests.