VMaNGOS Server Setup Guide
Assumed information:
User: thrall
OS: Debian 11 or 12
For managing the server after installation check out this script!
Credits to Digital Scriptorium for the original guide!
1. Granting sudo Privileges
First, ensure that the system has sudo installed.
su -
apt update && apt install sudo -y
Then, add the user thrall to the sudoers file:
sudo EDITOR=nano visudo
Add the following line at the bottom:
thrall ALL=(ALL) ALL
Save and exit. (Control+X then type y)
2. Disabling Automatic Updates
To prevent automatic updates that might interfere with the server:
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
3. Core Setup
Install essential dependencies:
sudo apt update
sudo apt install g++ git cmake openssl libssl-dev build-essential checkinstall zlib1g-dev mariadb-server mariadb-client libmariadb-dev libmariadb-dev-compat libreadline-dev p7zip-full -y
sudo apt install -qq libace-dev -y
export ACE_ROOT=/usr/include/ace
sudo apt install -y libtbb-dev -y
export TBB_ROOT_DIR=/usr/include/tbb
Clone the necessary repositories:
sudo mkdir /opt/vmangos
cd /opt/vmangos
sudo git clone -b development https://github.com/vmangos/core
sudo git clone https://github.com/brotalnia/database vmangos/db
Compile and intsall:
sudo mkdir /opt/build
cd /opt/build
sudo cmake /opt/vmangos/core -DSUPPORTED_CLIENT_BUILD=5875 -DUSE_EXTRACTORS=0 -DCMAKE_INSTALL_PREFIX=/opt/vmangos
sudo make -j $(nproc) install
4. Downloading and Extracting Data
cd /opt/
sudo wget https://www.mediafire.com/file_premium/j6cyqjeif3dvrv2/data.7z
sudo 7z x data.7z ; sudo chmod -R 755 data
sudo rm -r data.7z
5. Configuration
Copy configuration files and create log directories:
sudo cp /opt/vmangos/etc/mangosd.conf.dist /opt/vmangos/etc/mangosd.conf
sudo cp /opt/vmangos/etc/realmd.conf.dist /opt/vmangos/etc/realmd.conf
sudo mkdir /opt/vmangos/logs
sudo mkdir /opt/vmangos/logs/mangosd
sudo mkdir /opt/vmangos/logs/realmd
sudo mkdir /opt/vmangos/logs/honor
Edit Config Files
sudo nano /opt/vmangos/etc/mangosd.conf
Set the paths:
/opt/data
/opt/vmangos/logs/mangosd
/opt/vmangos/logs/honor
sudo nano /opt/vmangos/etc/realmd.conf
Set the path:
/opt/vmangos/logs/realmd
6. Check MariaDB Service State
Check if the MariaDB service is running:
systemctl status mariadb
Press q to exit.
7. Secure MySQL Installation
sudo mysql_secure_installation
Follow the prompts:
Hit Enter
N for Unix Socket
Y to Change root password
Y to Remove anonymous users
Y to Disallow root login remotely
Y to Remove the test database
Y to Reload privilege table
8. Creating SQL Databases and Permissions
sudo mysql -u root -p
Run the following SQL commands:
DROP USER IF EXISTS 'mangos'@'localhost';
CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'mangos';
GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost' WITH GRANT OPTION;
CREATE DATABASE `realmd` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
CREATE DATABASE `mangos` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
CREATE DATABASE `characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
CREATE DATABASE `logs` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON `realmd`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `mangos`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `characters`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `logs`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
Exit MySQL:
exit
9. Populating SQL Databases with Data
cd /opt/vmangos/vmangos/db/
sudo 7z x world_full_14_june_2021.7z
mysql -u mangos -pmangos --database=mangos < world_full_14_june_2021.sql
cd /opt/vmangos/core/sql/
mysql -u mangos -pmangos --database=characters < characters.sql
mysql -u mangos -pmangos --database=logs < logs.sql
mysql -u mangos -pmangos --database=realmd < logon.sql
10. Altering Tables to Allow NULL
sudo mysql -u root -p
Run the following SQL commands:
USE mangos;
ALTER TABLE locales_item
MODIFY COLUMN name_loc1 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
MODIFY COLUMN name_loc2 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci';
USE realmd;
INSERT INTO `realmlist` VALUES ('1','RealmName', '192.168.X.X', '127.0.0.1', '255.255.255.0', '1', '2', '5875 6005 6141');
Exit MySQL:
exit
11. Updating SQL Data
cd /opt/vmangos/core/sql/migrations
sudo ./merge.sh
mysql -u mangos -pmangos --database=mangos < world_db_updates.sql
mysql -u mangos -pmangos --database=logs < logs_db_updates.sql
mysql -u mangos -pmangos --database=characters < characters_db_updates.sql
mysql -u mangos -pmangos --database=realmd < logon_db_updates.sql
12. Starting the Server
sudo /opt/vmangos/bin/realmd
sudo /opt/vmangos/bin/mangosd
13. Updating the Server
cd /opt/vmangos/core
sudo git config pull.rebase false
sudo git pull
cd /opt/build
sudo cmake /opt/vmangos/core -DSUPPORTED_CLIENT_BUILD=5875 -DUSE_EXTRACTORS=0 -DCMAKE_INSTALL_PREFIX=/opt/vmangos
sudo make -j $(nproc) install
cd /opt/vmangos/core/sql/migrations
sudo ./merge.sh
mysql -u mangos -pmangos --database=mangos < world_db_updates.sql
mysql -u mangos -pmangos --database=logs < logs_db_updates.sql
mysql -u mangos -pmangos --database=characters < characters_db_updates.sql
mysql -u mangos -pmangos --database=realmd < logon_db_updates.sql
14. Restarting the Server
sudo /opt/vmangos/bin/realmd
sudo /opt/vmangos/bin/mangosd