azerothcore-install-help

Установка logo Azerothcore 2024 :rocket:

  1. Подготовка OS Debian 12
  2. Подготовка AzerothCore
  3. Компиляция и настройка Azerothcore
  4. Извлечения данных для сервера
  5. Заполнение SQL баз данных AzerothCore
  6. Установка дополнений для AzerothCore
  7. Первый запуск сервера
  8. Настрока запуска сервера как службы
  9. Поддержка сервера в актуальном состояние

Подготовка OS Debian 12 :point_up_2:

Установка MySQL :point_left:

Перейдите на сайт официального репозитория MySQL: MySQL APT Repository. Проверти текущий номер версии mysql-apt-config_x.x.xx-x_all.deb. Запишите его в переменную, действующую в текущем сеансе пользователя.

mysql_apt_config_ver="0.8.33-1"

[!IMPORTANT] :exclamation: Далее в инструкции будут команды, которые смогут использовать эту переменную пока будет активен текущей сеанс пользователя.

Установите последнюю версию mysql-server-lts (На данный момент v8.4) без вывода каких-либо пользовательских запросов:

Загрузите последний mysql-apt-config_*_all.deb c официального репозитория в /tmp

wget --show-progress -qO "/tmp/mysql-apt-config_all.deb" "https://repo.mysql.com/mysql-apt-config_${mysql_apt_config_ver}_all.deb"

или c сохранением в имени версии

wget --show-progress -qNt5 -P /tmp "https://dev.mysql.com/get/mysql-apt-config_${mysql_apt_config_ver}_all.deb"

Установите конфигуратор репозитория MySQL APT

sudo DEBIAN_FRONTEND="noninteractive" apt install -yqq "/tmp/mysql-apt-config_all.deb"

Или через dpkg -i согласно инструкции MySQL:

sudo apt-get install gnupg -yqq
sudo DEBIAN_FRONTEND=noninteractive dpkg -i "/tmp/mysql-apt-config_all.deb"

Если передумали использовать настройки установку по-умолчанию то на этом моменте их можно поменять. Например для установки mysql-server-innovation (v9.2) или установки своего пароля для root пользователя MySQL:

sudo dpkg-reconfigure mysql-apt-config

Установите непосредственно Сервер MySQL и библиотеки:

sudo apt update -qq
sudo DEBIAN_FRONTEND="noninteractive" apt install -yqq mysql-server libmysqlclient-dev

[!TIP] Или воспользуйтесь интерактивным вариантом установки. Например для установки mysql-server-innovation (v9.2) или установки своего пароля для root.

sudo apt install /tmp/mysql-apt-config_all.deb
sudo apt update
sudo apt install mysql-server libmysqlclient-dev

[!NOTE] При установке MySQL, новая учетная запись root будет защищена аутентификацией через auth_socket, поэтому вы можете спокойно оставлять поле с паролем для root пустым!

[!TIP] Чтобы изменит у пользователя root метод аутентификации с auth_socket на пароль:

sudo mysql -Bse "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD;"

Чтобы изменит у пользователя root метод аутентификации с пароля на auth_socket:

sudo mysql -p -Bse "ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;"

:exclamation: Обратите внимание что может быть два запроса пароля, первый от команды sudo (пароль текущего пользователя), второй пароль пользователя root MySQL

[!NOTE] Убедитесь что после установки служба MySQL успешно запущена

systemctl status mysql

Установка основных программ и библиотек :point_left:

sudo apt update && sudo apt install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev lsb-release -y

[!TIP] Так же, для использования скрипта acore.sh, могут пригодится дополнительные утилиты (такие как: unzip , curl), которые можно установить выборочно…

sudo apt update && sudo apt install unzip curl -y

:exclamation: или воспользоваться самим скриптом acore.sh и установить сразу все зависимости:

~/azerothcore/acore.sh install-deps

Подготовка AzerothCore :point_up_2:

Загрузка исходников AzerothCore :point_left:

Загрузите исходники c официального репозитория

git -C ~ clone https://github.com/azerothcore/azerothcore-wotlk.git azerothcore --depth 1

Настройка и исправления для acore.sh :point_left:

Создание config.sh

cp -f ~/azerothcore/conf/dist/config.sh ~/azerothcore/conf/

Настройка config.sh

sed -i 's|BINPATH="$AC_PATH_ROOT/env/dist"|BINPATH="'${HOME}'/.local"|' ~/azerothcore/conf/config.sh
sed -i 's|CTOOLS_BUILD=${CTOOLS_BUILD:-none}|CTOOLS_BUILD="all"|' ~/azerothcore/conf/config.sh

Исправления для azerothcore functions.sh

sed -i 's/sudo cmake --install . --config $CTYPE/cmake --install . --config $CTYPE/' ~/azerothcore/apps/compiler/includes/functions.sh
sed -i '/find "$AC_BINPATH_FULL" /s/^/#/' ~/azerothcore/apps/compiler/includes/functions.sh

Создание чистой базы даных AzerothCore :point_left:

DROP USER IF EXISTS 'acore'@'localhost';
CREATE USER 'acore'@'localhost' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
CREATE DATABASE `acore_world` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `acore_characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `acore_auth` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON `acore_world` . * TO 'acore'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_characters` . * TO 'acore'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_auth` . * TO 'acore'@'localhost' WITH GRANT OPTION;
EXIT

[!IMPORTANT] Настоятельно рекомендуется сразу же изменить пароль на случайный и сохранить в файл: ~\acore_sql_pass.txt.

cd ~ && sudo mysql -e 'SET PASSWORD FOR 'acore'@'localhost' TO RANDOM;' | awk 'FNR == 4 {print $6}' | tee acore_sql_pass.txt

[!TIP] Для создания чистой базы данных и пользователя можно воспользоваться SQL заготовками из загруженных только что исходников AzerothCore

:exclamation: Но их использование не рекомендуется, так как они предоставят пользователю acore полные права на весь MySQL сервер, что может быть серьезной уязвимостью в безопасности, особенно при использовании стандартного пароля.

sudo mysql < ~/azerothcore/data/sql/create/create_mysql.sql"

:exclamation: А для удаления всей базы данных AzerothCore воспользуйтесь:

sudo mysql < ~/azerothcore/data/sql/create/drop_mysql_8.sql

или удалить вручную через консоль MySQL

sudo mysql
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'acore'@'localhost';
DROP USER 'acore'@'localhost';
DROP DATABASE IF EXISTS `acore_world`;
DROP DATABASE IF EXISTS `acore_characters`;
DROP DATABASE IF EXISTS `acore_auth`;
EXIT

Подсказки для управления безопасностью MySQL сервера:

[!NOTE] Зайходим в консоль MySQL сервера под пользователем root если при установки не указывали пароль:

sudo mysql

Или с паролем если указывали:

sudo mysql -p

Чтобы посмотреть для всех пользователей в MySQL используемый метод аунтификации

SELECT user, host, plugin, Super_priv from mysql.user;

Чтобы изменит у пользователя метод аунтификации выбираем одну команду из примера:

ALTER USER 'acore'@'localhost' IDENTIFIED WITH auth_socket;
ALTER USER 'acore'@'localhost' IDENTIFIED BY 'ВАШ-ДЛИННЫЙ-И-СЛОЖНЫЙ-ПАРОЛЬ';
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'ВАШ-ДЛИННЫЙ-И-СЛОЖНЫЙ-ПАРОЛЬ';

Чтобы дать MySQL пользователю acore привелегии root:

GRANT ALL PRIVILEGES ON * . * TO 'acore'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT

Компиляция и настройка Azerothcore :point_up_2:

Первая компиляция немодифицированного сервера:

mkdir ~/azerothcore/build
cd ~/azerothcore/build
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/.local/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=all
make -j $(nproc) install

Или используя acore.sh

./azerothcore/acore.sh compiler all

[!NOTE] После успешной сборки сервера со всеми утилитами, в конфигурационный файл можно вернуть запрет на сборку дополнительных инструментов.

sed -i 's|CTOOLS_BUILD="all"|CTOOLS_BUILD=${CTOOLS_BUILD:-none}|' ~/azerothcore/conf/config.sh

Настройка основных конфигурационных файлов:

for i in $( ls ~/.local/etc/*.dist ); do cp -n $i ${i%.*}; done
sed -i 's|^DataDir = .*|DataDir = "'${HOME}'/wowclient/wotlk"|' ~/.local/etc/worldserver.conf
sed -i 's|^RealmZone = .*|RealmZone = 12|' ~/.local/etc/worldserver.conf
sed -i 's|^DBC.Locale = .*|DBC.Locale = 8|' ~/.local/etc/worldserver.conf
sed -i 's|^LogsDir = .*|LogsDir = "'${HOME}'/logs"|' ~/.local/etc/*.conf
sed -i 's|^TempDir = .*|TempDir = "'${HOME}'"|' ~/.local/etc/*.conf

[!IMPORTANT] если используем свой пароль для MySQL пользователя acore:

:exclamation: Замените ACORESQLPASS на ваш пароль. Чтобы посмотреть сгенерированный пароль запустите: cat ~/acore_sql_pass.txt

sed -i 's/= "127.0.0.1;3306;acore;acore;/= "127.0.0.1;3306;acore;ACORESQLPASS;/' ~/.local/etc/*.conf

Убедитесь что директория logs сушествует и при необходимости создайте её:

mkdir ~/logs

[!TIP] Для более тонкой настройки вашего сервера отредактируйте конфигурационные файлы в текстовом редакторе

nano ~/.local/etc/authserver.conf
nano ~/.local/etc/worldserver.conf

Извлечения данных для сервера :point_up_2:

Подготовка диска для храниения данных :point_left:

Добавление и разметка нового диска для данных

lsblk
sudo fdisk -l /dev/sdb
sudo fdisk /dev/sdb
[n] [p] [w]
sudo mkfs.ext4 /dev/sdb1

Монтирование нового диска

cd /mnt
mkdir wowclient
df -h
sudo blkid

Скопировать UUID нового раздела который выглядить как то так: (9bf6b87e-b42d-4b2a-8db7-1a470970f9a2)

Добавление нового раздела в fstab

sudo nano /etc/fstab

UUID=(UIDD-НОВОГО-РАЗДЕЛА) /mnt/wowclient ext4 defaults 0 1

sudo reboot

Копирование клиент игры в директорию

cd /mnt/wowclient
mkdir wotlk

Скопировать клиент игры в директорию /mnt/wowclient/wotlk

Предоставить группе users права на запись в деректорию

sudo chgrp users /mnt/wowclient/wotlk
sudo chmod  00770 /mnt/wowclient/wotlk

Или только основному пользователю acore

sudo chown acore:acore /mnt/wowclient/wotlk

Извлечения данных из клиента игры :point_left:

cd /mnt/wowclient/wotlk
map_extractor
vmap4_extractor
mkdir vmaps
vmap4_assembler Buildings vmaps
mkdir mmaps
mmaps_generator

[!TIP] Есть возможность воспользоваться уже сгенерированными данными из скрипта:

~/azerothcore/acore.sh client-data

но они предназначены для английской локали enGB и в целом не рекомендуются для использования в этом руководстве.

Заполнение SQL баз данных AzerothCore :point_up_2:

Хотя при первом запуске сервер сам запустит автозаполнение базы данных AzerothCore нам удобнее сделать это заранее, чтобы сразу заполнить IP адрес и стартовое приветствие сервера.

Для заполнение базы данный воспользуемся утилитой dbimport

dbimport

может понадобиться проверка dbimport.conf на настроки подключения к базе данных

cp ~/.local/etc/dbimport.conf.dist ~/.local/etc/dbimport.conf
nano ~/.local/etc/dbimport.conf

Настройка ip адреса сервера:

sudo mysql acore_auth -e "UPDATE realmlist SET name = 'Шторм клинков', address = '192.168.10.101' WHERE id = '1'";

Настройка приветсвия для сервера:

sudo mysql acore_auth -e "DELETE FROM motd WHERE realmid=1; INSERT INTO motd (realmid, text) VALUES ('1', 'Добро пожаловать на World of Warcraft сервер \"Шторм клинков\"')"

[!NOTE] Там же текста приветсвия можно изменить в консоли worldserver, но случаються проблемы с вводимыми символами

server set motd 'Добро пожаловать на World of Warcraft сервер "Шторм клинков"'
reload motd

Установка дополнений для AzerothCore :point_up_2:

Установка допольнительных модулей :point_left:

  1. mod-eluna: Eluna Lua Engine © - это движок lua, встроенный в World of Warcraft.

    git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-eluna.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    
  2. mod-auctionator: - Наполняет аукционный дом на малопосещаемом сервере.

    git -C $HOME/azerothcore/modules clone https://github.com/biosfree/mod-auctionator.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    
  3. mod-skip-dk-starting-area: - Добовляет возможность пропустить стартовую зону Рыцарей смерти.

    git -C $HOME/azerothcore/modules clone https://github.com/biosfree/mod-skip-dk-starting-area.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    
  4. mod-solo-lfg: - Позволяет игрокам использовать систему поиска подземелий в одиночку или в группах менее 5 игроков.

    git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-solo-lfg.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    
  5. mod-solocraft: - Увеличивает статы игроков в подземелье в зависимости от количества игроков в группе

    git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-solocraft.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    
  6. mod-reagent-bank-account: - Добавляет банкира реагентов который освобождает место в сумках игрока, храня реагенты для крафта у себя. Версия общего банка реагентов для всех персонажей на акаунте.

    git -C $HOME/azerothcore/modules clone https://github.com/biosfree/mod-reagent-bank-account.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    

    Чтобы добавить reagent-bank-account NPC:

    С учетной записью GM зайдите в локацию, куда вы хотите добавить npc, и используйте эту команду:

    .npc add 290011
    
  7. mod-gain-honor-guard: - Дает игрокам возможность фармить стражников и/или элиту для получения чести.

    git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-gain-honor-guard.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    
  8. mod-transmog: - Добавляет в игру возможность трансмогрификации на основе кода: Rochet2 Transmog Script

    git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-transmog.git
    
    cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
    make -C $HOME/azerothcore/build/ -j $(nproc) install
    

    Чтобы добавить transmog NPC:

    С учетной записью GM зайдите в локацию, куда вы хотите добавить npc, и используйте эту команду:

    .npc add 190010
    

Установка допольнительных модулей при помощи acore.sh :point_left:

[!TIP] Так же модули можно устанавливать используюя acore.sh c префиксом mi (module-install) и НАЗВАНИЕ МОДА Название берём из каталога AzerothCore

Например:

azerothcore/acore.sh mi mod-eluna
azerothcore/acore.sh mi mod-reagent-bank
azerothcore/acore.sh mi mod-gain-honor-guard
azerothcore/acore.sh mi mod-guildfunds
azerothcore/acore.sh mi mod-transmog
azerothcore/acore.sh compiler build

Установка дополнительных скриптов :point_left:

Внесение SQL правок в БД :point_left:

https://github.com/azerothcore/portals-in-all-capitals

wget -P ~/azerothcore/data/sql/custom/db_world https://raw.githubusercontent.com/azerothcore/portals-in-all-capitals/main/portals-in-all-capitals.up.sql

https://github.com/AsgavinYT/hearthstone-cooldowns

wget -O ~/azerothcore/data/sql/custom/db_world/mod-hearthstone-5min.sql https://raw.githubusercontent.com/AsgavinYT/hearthstone-cooldowns/main/Hearthstone_5_Min.sql

Чтобы востановить значение по умольчанию (30 мин.):

rm -f ~/azerothcore/data/sql/custom/db_world/mod-hearthstone-5min.sql
wget -O ~/azerothcore/data/sql/custom/db_world/mod-hearthstone-30min.sql https://raw.githubusercontent.com/AsgavinYT/hearthstone-cooldowns/main/Hearthstone_30_Min.sql

https://github.com/StraysFromPath/mod-rare-drops

wget -O ~/azerothcore/data/sql/custom/db_world/mod-rare-drops.sql https://raw.githubusercontent.com/StraysFromPath/mod-rare-drops/master/data/sql/db-world/updates/mod%20rare%20drops%20final.txt

Первый запуск сервера :point_up_2:

Создание файлов настроек для модулей

for i in $( ls ~/.local/etc/modules/*.dist ); do cp -n $i ${i%.*}; done

Настройка mod_LuaEngine

sed -i 's|^Eluna.ScriptPath = .*|Eluna.ScriptPath = "'${HOME}'/.local/bin/lua_scripts"|' ~/.local/etc/modules/mod_LuaEngine.conf

Первый запуск сервера для внисения обновлений и правок

worldserver

[!TIP] или используя acore.sh:

~/azerothcore/acore.sh rw

В консоле worldserver создаем нового пользователя с правами GM level 3

account create admin 'ВАШ-ДЛИННЫЙ-И-СЛОЖНЫЙ-ПАРОЛЬ'
account set gmlevel admin 3 -1

В консоле worldserver создаем нового пользователя для персонажа используемого аукционным ботом

account create ahbot 'ВАШ-ДЛИННЫЙ-И-СЛОЖНЫЙ-ПАРОЛЬ'

В консоле worldserver создаем нового пользователя для игровых персонажей

account create 'ИМЯ-АКАУНТА' 'ПАРОЛЬ'

Зауск сервера авторизации

authserver

[!TIP] или используя acore.sh:

~/azerothcore/acore.sh ra

Настрока запуска сервера как службы :point_up_2:

sudo nano /etc/systemd/system/auth.service
[Unit]
Description=AzerothCore Authserver
Requires=world.service
After=network.target world.service

[Service]
Type=simple
User=acore
WorkingDirectory=/home/acore/.local/bin
ExecStart=/home/acore/.local/bin/authserver
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=3s

[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/world.service
[Unit]
Description=AzerothCore Worldserver
After=network.target mysql.service getty@tty3.service

[Service]
Type=simple
User=acore
StandardInput=tty
TTYPath=/dev/tty3
TTYReset=yes
TTYVHangup=yes
WorkingDirectory=/home/acore/.local/bin
ExecStart=/home/acore/.local/bin/worldserver
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable auth world
sudo systemctl start world auth

Поддержка сервера в актуальном состояние :point_up_2:

Проверка обновлений ядра AzerothCore:

git -C $HOME/azerothcore pull origin master

Установка обновлений ядра AzerothCore:

cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
make -C $HOME/azerothcore/build/ -j $(nproc) install

Проверка обновлений модулей AzerothCore:

cd ~ && find ./azerothcore/modules -mindepth 1 -maxdepth 1 -type d -exec git --git-dir={}/.git --work-tree=$PWD/{} pull origin master \;

Установка обновлений модулей AzerothCore:

cmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/
make -C $HOME/azerothcore/build/ -j $(nproc) install