Установка
Azerothcore 2024 🚀
Подготовка OS Debian 12 👆
Установка MySQL 👈
Перейдите на сайт официального репозитория MySQL: MySQL APT Repository.
Проверти текущий номер версии mysql-apt-config_x.x.xx-x_all.deb.
Запишите его в переменную, действующую в текущем сеансе пользователя.
mysql_apt_config_ver="0.8.33-1"Important
❗ Далее в инструкции будут команды, которые смогут использовать эту переменную пока будет активен текущей сеанс пользователя.
Установите последнюю версию 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-devTip
Или воспользуйтесь интерактивным вариантом установки.
Например для установки mysql-server-innovation (v9.2) или установки своего пароля для root.
sudo apt install /tmp/mysql-apt-config_all.deb
sudo apt update
sudo apt install mysql-server libmysqlclient-devNote
При установке 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;"❗ Обратите внимание что может быть два запроса пароля, первый от команды sudo (пароль текущего пользователя), второй пароль пользователя root MySQL
Note
Убедитесь что после установки служба MySQL успешно запущена
systemctl status mysqlУстановка основных программ и библиотек 👈
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 -yTip
Так же, для использования скрипта acore.sh, могут пригодится дополнительные утилиты (такие как: unzip , curl),
которые можно установить выборочно...
sudo apt update && sudo apt install unzip curl -y❗ или воспользоваться самим скриптом acore.sh и установить сразу все зависимости:
~/azerothcore/acore.sh install-depsПодготовка AzerothCore 👆
Загрузка исходников AzerothCore 👈
Загрузите исходники c официального репозитория
git -C ~ clone https://github.com/azerothcore/azerothcore-wotlk.git azerothcore --depth 1Настройка и исправления для acore.sh 👈
Создание 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 👈
- Зайти в консоль MySQL:
sudo mysql - Вставить sql-запросы:
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.txtTip
Для создания чистой базы данных и пользователя можно воспользоваться SQL заготовками из загруженных только что исходников AzerothCore
❗ Но их использование не рекомендуется, так как они предоставят пользователю acore полные права на весь MySQL сервер, что может быть серьезной уязвимостью в безопасности, особенно при использовании стандартного пароля.
sudo mysql < ~/azerothcore/data/sql/create/create_mysql.sql"❗ А для удаления всей базы данных AzerothCore воспользуйтесь:
sudo mysql < ~/azerothcore/data/sql/create/drop_mysql_8.sqlили удалить вручную через консоль MySQL
sudo mysqlREVOKE 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 👆
Первая компиляция немодифицированного сервера:
mkdir ~/azerothcore/build
cd ~/azerothcore/buildcmake ../ -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%.*}; donesed -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/*.confImportant
если используем свой пароль для MySQL пользователя acore:
❗ Замените 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.confnano ~/.local/etc/worldserver.confИзвлечения данных для сервера 👆
Подготовка диска для храниения данных 👈
Добавление и разметка нового диска для данных
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/fstabUUID=(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Или только основному пользователю
acoresudo chown acore:acore /mnt/wowclient/wotlk
Извлечения данных из клиента игры 👈
cd /mnt/wowclient/wotlk
map_extractor
vmap4_extractor
mkdir vmaps
vmap4_assembler Buildings vmaps
mkdir mmaps
mmaps_generatorTip
Есть возможность воспользоваться уже сгенерированными данными из скрипта:
~/azerothcore/acore.sh client-dataно они предназначены для английской локали enGB и в целом не рекомендуются для использования в этом руководстве.
Заполнение SQL баз данных AzerothCore 👆
Хотя при первом запуске сервер сам запустит автозаполнение базы данных 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 👆
Установка допольнительных модулей 👈
-
mod-eluna: Eluna Lua Engine © - это движок lua, встроенный в World of Warcraft.
git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-eluna.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
-
mod-auctionator: - Наполняет аукционный дом на малопосещаемом сервере.
git -C $HOME/azerothcore/modules clone https://github.com/biosfree/mod-auctionator.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
-
mod-skip-dk-starting-area: - Добовляет возможность пропустить стартовую зону Рыцарей смерти.
git -C $HOME/azerothcore/modules clone https://github.com/biosfree/mod-skip-dk-starting-area.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
-
mod-solo-lfg: - Позволяет игрокам использовать систему поиска подземелий в одиночку или в группах менее 5 игроков.
git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-solo-lfg.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
-
mod-solocraft: - Увеличивает статы игроков в подземелье в зависимости от количества игроков в группе
git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-solocraft.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
-
mod-reagent-bank-account: - Добавляет банкира реагентов который освобождает место в сумках игрока, храня реагенты для крафта у себя. Версия общего банка реагентов для всех персонажей на акаунте.
git -C $HOME/azerothcore/modules clone https://github.com/biosfree/mod-reagent-bank-account.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
Чтобы добавить reagent-bank-account NPC:
С учетной записью GM зайдите в локацию, куда вы хотите добавить npc, и используйте эту команду:
.npc add 290011
-
mod-gain-honor-guard: - Дает игрокам возможность фармить стражников и/или элиту для получения чести.
git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-gain-honor-guard.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
-
mod-transmog: - Добавляет в игру возможность трансмогрификации на основе кода: Rochet2 Transmog Script
git -C $HOME/azerothcore/modules clone https://github.com/azerothcore/mod-transmog.gitcmake -B $HOME/azerothcore/build/ -S $HOME/azerothcore/ make -C $HOME/azerothcore/build/ -j $(nproc) install
Чтобы добавить transmog NPC:
С учетной записью GM зайдите в локацию, куда вы хотите добавить npc, и используйте эту команду:
.npc add 190010
Установка допольнительных модулей при помощи acore.sh 👈
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Установка дополнительных скриптов 👈
Внесение SQL правок в БД 👈
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.sqlhttps://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Первый запуск сервера 👆
Создание файлов настроек для модулей
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Первый запуск сервера для внисения обновлений и правок
worldserverTip
или используя 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 'ИМЯ-АКАУНТА' 'ПАРОЛЬ'Зауск сервера авторизации
authserverTip
или используя acore.sh:
~/azerothcore/acore.sh raНастрока запуска сервера как службы 👆
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.targetsudo 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.targetsudo systemctl daemon-reload
sudo systemctl enable auth world
sudo systemctl start world authПоддержка сервера в актуальном состояние 👆
Проверка обновлений ядра 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