Установка Azerothcore 2024 🚀
Подготовка OS Debian 12 👆
Установка MySQL 8.4 👈
Загрузите последний *.deb
c официального MySQL APT Repository в /tmp
wget -P /tmp https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
Установка последней версии mysql-lts
(8.4) без вывода каких-либо пользовательских запросов:
sudo apt update
sudo DEBIAN_FRONTEND="noninteractive" apt install /tmp/mysql-apt-config_0.8.32-1_all.deb -y
sudo apt update
sudo DEBIAN_FRONTEND="noninteractive" apt install mysql-server -y
Note
При установке MySQL, новая учетная запись root
будет защищена аутентификацией через auth_socket
, поэтому вы можете спокойно оставить поле с паролем для root пустым!
Tip
Или воспользуйтесь интерактивным вариантом установки:
sudo apt update
sudo apt install /tmp/mysql-apt-config_0.8.32-1_all.deb
sudo apt update
sudo apt install mysql-server
Установка основных программ и библиотек 👈
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
❗ или воспользоваться самим скриптом 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.txt
Tip
Для создания чистой базы данных и пользователя можно воспользоваться 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/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
:
❗ Замените 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
Извлечения данных для сервера 👆
Подготовка диска для храниения данных 👈
Добавление и разметка нового диска для данных
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
Извлечения данных из клиента игры 👈
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 👆
Хотя при первом запуске сервер сам запустит автозаполнение базы данных 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.git
cmake -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.git
cmake -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.git
cmake -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.git
cmake -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.git
cmake -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.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
-
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
-
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
👈
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.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
Первый запуск сервера 👆
Создание файлов настроек для модулей
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
Настрока запуска сервера как службы 👆
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 [email protected]
[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
Поддержка сервера в актуальном состояние 👆
Проверка обновлений ядра 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