AzerothCore
Pages :

AzerothCore Debian 12 Quick Install Guide

This is a streamlined guide for installing AzerothCore to a Debian 12 server, securing it, and enabling one-command maintenance from your Windows PC.

Table of Contents

  1. Requirements
  2. Debian Setup
    1. First Login
    2. Change Default Password
    3. Change Default SSH Port
    4. Setup Firewall
    5. Get Dependencies
    6. Install SQL Database
  3. SSH Setup
    1. Key Generation
    2. Key-Based Login Setup
    3. Disable Password Logins
  4. AzerothCore Installation
    1. Clone Repository
    2. Get Data Files
    3. Add Anticheat Module
    4. Build Core
    5. Edit Configs
    6. Set Realm IP
    7. Launch Server
    8. Create GM account
  5. Maintenance
    1. Create Alias Command
    2. Update AzerothCore

Requirements

PuTTY
  • A Windows program for sending commands to the server.
FileZilla
  • A Windows program for transferring files to/from the server.
HeidiSQL
  • A Windows program for connecting to the servers SQL database.
Debian 12
  • A server with Debian 12 installed. (ex: 4gb/4core VPS from OVH)

Debian Setup

First Login

  • Use PuTTY to connect to your Debian server using the IP address and login credentials supplied by the hosting provider.
  • Copy the following code blocks and paste them into the PuTTY terminal with right click, then hit enter.

Change Default Password

passwd

Change Default SSH Port

sudo sed -i 's/^#Port 22\+$/Port 55022/' /etc/ssh/sshd_config
sudo systemctl restart sshd

Setup Firewall

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 55022
sudo ufw allow 3724
sudo ufw allow 8085
sudo ufw enable

Get Dependencies

sudo apt update && sudo apt full-upgrade -y
sudo apt install git cmake make gcc g++ clang libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mariadb-server mariadb-client libmariadb-dev libmariadb-dev-compat build-essential p7zip-full screen fail2ban -y

Install SQL Database

sudo mysql_secure_installation
  • -/N/Y/Y/Y/Y/Y
sudo mysql -u root -p
  • Enter the root password you just set up.
DROP USER IF EXISTS 'acore'@'localhost';
CREATE USER 'acore'@'%' IDENTIFIED BY 'NEWPASSWORD';
GRANT ALL PRIVILEGES ON * . * TO 'acore'@'%';
GRANT ALL PRIVILEGES ON `acore_world` . * TO 'acore'@'%';
GRANT ALL PRIVILEGES ON `acore_characters` . * TO 'acore'@'%';
GRANT ALL PRIVILEGES ON `acore_auth` . * TO 'acore'@'%';
exit
  • Change NEWPASSWORD to something more secure.

SSH Setup

Key Generation

Debian Public Key

ssh-keygen -t ed25519 -C "Debian12"
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

Windows Private Key

  • Use Filezilla to connect to the server and navigate to home/debian/ssh/
  • Copy the id_ed25519 file to your PC and load it into puttygen.exe (located in the PuTTY folder)
  • Generate a private key .ppk file. Store this file somewhere safe and make a backup.

Key-based Login Setup

PuTTY

PuTTY1 PuTTY2

FileZilla

FileZilla

HeidiSQL

HeidiSQL1 HeidiSQL2

Disable Password Logins

  • After confirming that key-based login works, disable password logins to enhance SSH security.
sudo sed -i -E 's/#?PasswordAuthentication yes/PasswordAuthentication no/' ~/etc/ssh/sshd_config
sudo rm /etc/ssh/sshd_config.d/*
sudo service ssh restart

AzerothCore Installation

Clone Repository

git -C ~/ clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore

Add Anticheat Module

git -C ~/azerothcore/modules clone https://github.com/azerothcore/mod-anticheat
cp -n ~/azerothcore/modules/mod-anticheat/conf/Anticheat.conf.dist ~/server/etc/Anticheat.conf 

Get Data Files

mkdir -p ~/server/data && cd ~/server/data
wget https://github.com/wowgaming/client-data/releases/download/v16/data.zip
7z x data.zip && rm data.zip

Build Core

mkdir -p ~/azerothcore/build && cd ~/azerothcore/build
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=db-only -DSCRIPTS=static -DMODULES=static
make -j $(nproc) install

Edit Configs

cp -n ~/server/etc/authserver.conf.dist ~/server/etc/authserver.conf
cp -n ~/server/etc/worldserver.conf.dist ~/server/etc/worldserver.conf
sudo sed -i -E 's/DataDir = "."/DataDir = "\~\/server\/data"/' ~/server/etc/worldserver.conf
sudo sed -i -E 's/= "127.0.0.1;3306;acore;acore;/= "127.0.0.1;3306;acore;NEWPASSWORD;/' ~/server/etc/*.conf

Set Realm IP

sudo mysql -u root -p
UPDATE acore_auth.realmlist SET address = '0.0.0.0' WHERE id = 1;
  • Change 0.0.0.0 to the public IP address of your Debian12 server.

Launch Server

screen -AmdS auth ~/server/bin/authserver
screen -AmdS world ~/server/bin/worldserver
screen -r world

Create GM account

account create USERNAME PASSWORD
account set gmlevel USERNAME 3 -1
  • To exit screen: Ctrl+A -> Ctrl+D
  • To kill process: Ctrl+C

Maintainence

Create Alias Command

touch ~/.bash_aliases
echo "alias acoreupdate='
screen -S world -p 0 -X stuff "saveall^m";
screen -X -S "world" quit;
git -C ~/azerothcore/modules/mod-anticheat pull;
git -C ~/azerothcore pull;
cd ~/azerothcore/build;
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=db-only -DSCRIPTS=static -DMODULES=static;
make -j $(nproc) install;
screen -AmdS world ~/server/bin/worldserver;
screen -r world;'" > ~/.bash_aliases
source ~/.bashrc
  • Now we can save/exit the worldserver, pull the latest changes from GitHub, build the updated core, and restart the worldserver all with one command.

Update AzerothCore

acoreupdate

Finish!

  • You should now be able to connect to the AzerothCore server by setting your realmlist to the public IP address of the Debian12 server. ex: set realmlist 0.0.0.0

Common Problems

Auth/Worldserver wont even start.

Successful login but cant enter the realm.


Good things to know that this guide does not cover.
  • Domain name and DNS setup for "set realmlist logon.server.com"
  • Wordpress registration site & acore-cms plugin SOAP connection.
  • Automated database backups to Google Drive using cron and rclone.

Other Resources