This is a streamlined guide for installing AzerothCore to a Debian 12 server, securing it, and enabling one-command maintenance from your Windows PC.
passwd
sudo sed -i 's/^#Port 22\+$/Port 55022/' /etc/ssh/sshd_config sudo systemctl restart sshd
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
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
sudo mysql_secure_installation
sudo mysql -u root -p
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
ssh-keygen -t ed25519 -C "Debian12" cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
home/debian/ssh/
id_ed25519
file to your PC and load it into puttygen.exe (located in the PuTTY folder).ppk
file. Store this file somewhere safe and make a backup.sudo sed -i -E 's/#?PasswordAuthentication yes/PasswordAuthentication no/' ~/etc/ssh/sshd_config sudo rm /etc/ssh/sshd_config.d/* sudo service ssh restart
git -C ~/ clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore
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
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
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
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
sudo mysql -u root -p
UPDATE acore_auth.realmlist SET address = '0.0.0.0' WHERE id = 1;
screen -AmdS auth ~/server/bin/authserver screen -AmdS world ~/server/bin/worldserver screen -r world
account create USERNAME PASSWORD account set gmlevel USERNAME 3 -1
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
acoreupdate
set realmlist 0.0.0.0