There are several ways to install AzerothCore, you need to pick one.
Azerothcore Classic setup - the traditional way of installing AzerothCore. Battle-tested, recommended for all operating systems for any purposes. This process gives more awareness of how AzerothCore is structured. See below in this page.
AzerothCore Docker setup - a simplified installation process based on Docker.
[NEW] AzerothCore Bash Dashboard setup - simplest way of installing AzerothCore, recommended for Linux systems for both local development and production. Currently not recommended for Windows or macOS.
Disclaimer: These scripts are supposed to be cross-platform, however we are not quite there yet. It's not currently recommended to use the installation process described in this page on Windows or macOS. You can of course try them anyway and let us know in case you encounter any issue. That does not mean that you cannot use this in production. We tested this procedure on a dedicated server machine running Ubuntu 20.04 and it worked quite nicely, we'll include here some extra tips for production environments as well.
Other tutorials from the community for specific platforms:
Make sure your system fits the Requirements.
Note for Windows users: use git bash as terminal to run commands (see Requirements).
Choose ONE of the following method, run one of the below
git ... commands in your terminal.
This will create an
azerothcore-wotlk directory containing the AC source files.
A) Clone only the master branch + full history (smaller size - recommended):
git clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore
B) Clone only the master branch + no previous history (smallest size):
git clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore --depth 1
C) Clone all branches and all history:
git clone https://github.com/azerothcore/azerothcore-wotlk.git azerothcore
Note: If you want to get the full history back, use
git fetch --unshallow (if you chose option B).
cd azerothcore mkdir build cd build
cd azerothcore && mkdir build && cd build
Before running the CMake command, replace
$HOME/azeroth-server/ with the path of the server installation (where you want to place the compiled binaries).
Check the options here if you know what you're doing: CMake options
CMake on Linux:
At this point, you must be in your "build/" directory.
Note: in the following command the variable
$HOME is the path of the current user, so if you are logged as root, $HOME will be "/root". You can check the state of the environment variable, as follows:
Note2: in case you use a non-default package for
clang, you need to replace it accordingly. For example, if you installed
clang-6.0 then you have to replace
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS=0 -DSCRIPTS=1
To know the amount of cores available. You can use the following command
6 with the number of threads that you want to execute, type:
make -j 6 make install
make -j 6 && make install
CMake on Mac OS X:
Note: in the follows command the variable
$HOME is the path of the current user, so if you are logged as root, $HOME will be "/root".
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ -DTOOLS=0 -DSCRIPTS=1 -DMYSQL_ADD_INCLUDE_PATH=/usr/local/include -DMYSQL_LIBRARY=/usr/local/lib/libmysqlclient.dylib -DREADLINE_INCLUDE_DIR=/usr/local/opt/readline/include -DREADLINE_LIBRARY=/usr/local/opt/readline/lib/libreadline.dylib -DOPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include -DOPENSSL_SSL_LIBRARIES=/usr/local/opt/openssl/lib/libssl.dylib -DOPENSSL_CRYPTO_LIBRARIES=/usr/local/opt/openssl/lib/libcrypto.dylib
To know the amount of cores available. You can use the following command
4 with the number of threads that you want to execute, type:
make -j 4 make install
make -j 4 && make install
Open CMake, press
Browse Source... button and select the folder that you cloned earlier then press
Browse Build... and select a folder where the CMake will generate the build files. Press the
CMake will ask you to select what compiler to use. For example you'll want to select
Visual Studio 16 2019 to compile binaries using Visual Studio 2019. If you want to build using x64 set
Optional platform for generator to x64. Do not change the
Use default native compilers option. Press
Finish and wait until CMake is done checking for requires files.
CMAKE_INSTALL_PREFIX to the location where you will run your server from.
Configure once again and then press
Generate. If no error occurred you can close CMake.
Go to the location where the build files have been generated and open AzerothCore.sln
Note: If MySQL is not found by CMake it is required to set MYSQL_INCLUDE_DIR = C:/mysql_libs/include and MYSQL_LIBRARY= C:/mysql_libs/lib_XX/libmysql.lib. XX depends if you are compiling in 32 or 64 bits mode. ( See Windows Requirements article )
BUILD then select
Build solution or press Ctrl+Shift+B on VS 2019 / F6 on VS 2017.
Wait until the Build has been finished (It should take between 10-40 minutes depending on your hardware).
You will find your freshly compiled binaries in the Build\bin\Release or Build\bin\Debug folder. These are all used to run your server at the end of this instruction.
You will need the following files in order for the core to function properly:
libeay32.dll / libcrypto-1_1.dll / libcrypto-1_1-x64.dll libmySQL.dll ssleay32.dll / libssl-1_1.dll / libssl-1_1-x64.dll authserver.conf.dist authserver.exe worldserver.conf.dist worldserver.exe
.dll files needs to be copied manually from their install folder into your compiled folder.
libmysql.dll (C:\Program Files\MySQL\MySQL Server 8.0\lib)
For OpenSSL 1.0.x:
For OpenSSL 1.1.x:
Note: Do not use ARM architecture as azerothcore requires SSE2 and ARM doesn't support it.
Inside the directory where you installed the binaries (e.g.
/home/youruser/azeroth-server/), open the directory where configuration files has been installed (
etc/ on linux ) , then:
authserver.conf.distand rename it to
authserver.conf( DO NOT REMOVE THE .dist FILE )
worldserver.conf.distand rename it to
worldserver.conf( DO NOT REMOVE THE .dist FILE )
Please Read How to edit .conf files article to understand how configuration files work, and why you need the .dist file too
worldserver.conf files and go to the
MYSQL SETTINGS section, then set the variables:
LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth" WorldDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_world" CharacterDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_characters"
The default user is
acore with password
acore. If you would like to use another MySQL user, change the credentials here.
authserver.conf has the
LoginDatabaseInfo variable only).
In the worldserver.conf file, also set:
DataDir = "/home/youruser/azeroth-server/data"
CMAKE_INSTALL_PREFIX and create a new directory named
Two options to choose from:
Full data (v9) - from 1/12/2020 to now (Used in the automatic downloader script in
Old versions links (< v8):
Then, extract all the archives and place the extracted
vmaps directories inside the
Follow these instructions: Database Setup.
Note: by default, database names are configured to be named:
if, for some reasons, you decide to name them differently, remember to edit your
acore_auth database, you must fill the
realmlist table with your connection info.
It must correspond with the values in
worldserver.conf (for realmid, flag and realmzone).
Address: 127.0.0.1 OR <Your LOCAL NETWORK ip> OR <Your PUBLIC NETWORK ip> Port : worldserver port
Open 2 terminal windows (or terminal tabs) and move to the
bin directory of your azeroth server (for example
then in one window/tab type:
in the other one:
realmlist.wtf and add the IP you set in the realmlist table (and the port if needed). Then you can connect with a newly made account or the test accounts (
test10, with password
You can change all the passwords at once by pasting this into the worldserver console:
.account set password test1 new_pass new_pass .account set password test2 new_pass new_pass .account set password test3 new_pass new_pass .account set password test4 new_pass new_pass .account set password test5 new_pass new_pass .account set password test6 new_pass new_pass .account set password test7 new_pass new_pass .account set password test8 new_pass new_pass .account set password test9 new_pass new_pass .account set password test10 new_pass new_pass
Start with logging in to your Linux machine and create an account for the server itself on most recent distributions this can easily be done with the following command :
sudo adduser <username> Note: Change
<username> to the preferred username of your going to use on your server.
sudo su - <username> Note: Switch user to newly created
<username> so everything will run and compile with the user you just have created.