Иллюстрация: сборка и запуск TrinityCore 3.3.5 на Linux — исходники, сборка, ресурсы DBC/Maps/VMaps/MMaps, MariaDB и systemd

TrinityCore Single-Player 3.3.5 на Linux: сборка, ресурсы, MariaDB и автозапуск

25.01.2026

Этот гайд — практический “без магии”: ставим зависимости, забираем исходники с субмодулями, собираем ядро, вытаскиваем игровые ресурсы из клиента WoW 3.3.5,
настраиваем MariaDB, импортируем TDB, добавляем таблицы NPCBot (если нужны) и включаем автозапуск через systemd.

Важно про версии: TrinityCore SP в этом сценарии рассчитан на клиент World of Warcraft 3.3.5 (WotLK).
Клиент другой версии = проблемы с ресурсами/БД и нестабильный запуск.

Подготовка системы

Ставим инструменты, библиотеки, архиватор, screen и MariaDB.

sudo apt update
sudo apt install -y htop mc p7zip-full screen git clang cmake make gcc g++ \
  libmariadbclient-dev default-libmysqlclient-dev \
  libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev \
  mariadb-server pwgen

Делаем clang компилятором по умолчанию.

sudo update-alternatives --install /usr/bin/cc  cc  /usr/bin/clang  100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

Создаём отдельного пользователя под сборку и запуск (безопаснее, чем гонять сервер от root).

sudo adduser wow
sudo mkhomedir_helper wow

Генерация надёжных паролей.

pwgen -n -s -B 21 5

Получение исходников (обязательно с submodules)

Проект использует внешний модуль (например, Eluna/LuaEngine), поэтому репозиторий нужно клонировать
рекурсивно, иначе сборка может упасть на ошибке вида LuaEngine.h: No such file or directory.

sudo -iu wow
cd ~
git clone --recursive https://github.com/zaicopx/TrinityCore-Single-Player

Опционально: заархивировать исходники как “снимок состояния”.

7z a -m0=lzma2 -mx=9 TrinityCore-SP.7z TrinityCore-Single-Player/

Сборка и установка ядра

Создаём папку сборки и настраиваем CMake.

cd ~/TrinityCore-Single-Player
mkdir -p build && cd build
cmake .. \
  -DCMAKE_INSTALL_PREFIX=/home/wow/server \
  -DCONF_DIR=/home/wow/server/etc \
  -DTOOLS=1 \
  -DSCRIPTS=dynamic \
  -DWITH_WARNINGS=1

Компилируем (используем все потоки CPU).

make -j"$(nproc)"

Устанавливаем в /home/wow/server.

make install
ls -la /home/wow/server

Не удаляйте каталог с исходниками после сборки: он пригодится для SQL-скриптов модулей и обслуживания.

Конфигурация сервера

Создаём рабочие конфиги из .dist.

cd /home/wow/server/etc
cp authserver.conf.dist authserver.conf
cp worldserver.conf.dist worldserver.conf

Готовим директорию под игровые ресурсы.

mkdir -p /home/wow/server/data

Открываем worldserver.conf и указываем путь к данным.

nano /home/wow/server/etc/worldserver.conf
DataDir = "../data"

Извлечение игровых ресурсов (DBC/Maps/VMaps/MMaps/Cameras)

Для корректной работы нужны данные из клиента WoW 3.3.5:
dbc, maps, vmaps, mmaps и Cameras.

Критично: используйте клиент точно той же версии, что и ветка сервера (здесь — 3.3.5 WotLK).

Подключаем клиент

Предположим, клиент смонтирован в /mnt/WOW_3.3.5.

cd /mnt/WOW_3.3.5
ls

Внутри должны быть Wow.exe и папка Data.

DBC и Maps

/home/wow/server/bin/mapextractor
cp -r dbc maps /home/wow/server/data

VMaps

/home/wow/server/bin/vmap4extractor
mkdir -p vmaps
/home/wow/server/bin/vmap4assembler Buildings vmaps
cp -r vmaps /home/wow/server/data

MMaps (долго)

mkdir -p mmaps
/home/wow/server/bin/mmaps_generator
cp -r mmaps /home/wow/server/data

Cameras

cp -r Cameras /home/wow/server/data

Итог: в /home/wow/server/data должны быть папки:

Cameras
dbc
maps
vmaps
mmaps

MariaDB: настройка и безопасность

Открываем конфиг MariaDB и фиксируем безопасные базовые настройки.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Оставляем базу на локальном интерфейсе и увеличиваем размер пакета для больших дампов.

bind-address       = 127.0.0.1
max_allowed_packet = 512M
sudo systemctl restart mariadb

Запускаем первичную защитную настройку.

sudo mysql_secure_installation

Пользователь и базы данных для TrinityCore

Создаём пользователя MariaDB под TrinityCore (пароль замените на свой).

sudo mariadb
CREATE USER 'trinity'@'localhost' IDENTIFIED BY 'STRONG_PASS';
GRANT ALL PRIVILEGES ON *.* TO 'trinity'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;

Создаём три базы: auth, characters, world.

sudo mariadb
CREATE DATABASE `world`      DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `auth`       DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
quit;

Прописываем доступ к БД в конфиги

Файл authserver.conf: меняем LoginDatabaseInfo.

nano /home/wow/server/etc/authserver.conf
LoginDatabaseInfo = "127.0.0.1;3306;trinity;STRONG_PASS;auth"

Файл worldserver.conf: меняем три строки.

nano /home/wow/server/etc/worldserver.conf
LoginDatabaseInfo     = "127.0.0.1;3306;trinity;STRONG_PASS;auth"
WorldDatabaseInfo     = "127.0.0.1;3306;trinity;STRONG_PASS;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;STRONG_PASS;characters"

Первый запуск worldserver и импорт TDB

Первый запуск создаст таблицы auth/characters и запросит дамп мира (TDB).

cd /home/wow/server/bin
./worldserver

Скачайте именно ту версию TDB, которую запросит сервер (имя будет похоже на
TDB_full_world_335.xxxxx_*.sql или архив .7z), распакуйте рядом с worldserver и запустите снова.

cd /home/wow/server/bin
7z x TDB_full_world_335.xxxxx_*.7z
./worldserver

Если нужна поддержка NPCBot: добавляем таблицы

Иногда сборка SP содержит NPCBot, но таблиц в БД нет. В таком случае после импорта TDB сервер ругнётся на отсутствие таблиц.
Таблицы создаются SQL-скриптами из исходников.

Собираем общий SQL-файл для characters и world.

cd /home/wow/TrinityCore-Single-Player/sql/Bots
sh ./merge_sqls_characters_unix.sh
sh ./merge_sqls_world_unix.sh
ls

Заливаем в базы.

sudo mariadb characters < ALL_characters.sql
sudo mariadb world < ALL_world.sql

Тестовый запуск authserver и worldserver

Запускаем в двух терминалах от пользователя wow.

sudo -iu wow
cd /home/wow/server/bin

Auth сервер:

./authserver

World сервер:

./worldserver

Если видите приглашение TC>, сервер мира поднялся корректно.

Автозапуск через systemd (вариант со screen)

Ниже — рабочий вариант автозапуска через systemd, где процессы запускаются от пользователя wow внутри screen.
Это удобно для домашнего сервера: можно подключаться к живой консоли в любой момент.

Unit для authserver

sudo nano /etc/systemd/system/tc-authserver.service
[Unit]
Description=TrinityCore Auth Server
After=network.target mariadb.service

[Service]
Type=forking
WorkingDirectory=/home/wow/server/bin
User=wow
ExecStart=/usr/bin/screen -dmS tc-authserver /home/wow/server/bin/authserver
ExecStop=/usr/bin/pkill -f --signal 15 tc-authserver
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

Unit для worldserver

sudo nano /etc/systemd/system/tc-worldserver.service
[Unit]
Description=TrinityCore World Server
After=network.target mariadb.service

[Service]
Type=forking
WorkingDirectory=/home/wow/server/bin
User=wow
ExecStart=/usr/bin/screen -dmS tc-worldserver /home/wow/server/bin/worldserver
ExecStop=/usr/bin/screen -S tc-worldserver -p 0 -X stuff "server shutdown force 0\r"
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

Активируем и запускаем.

sudo systemctl daemon-reload
sudo systemctl enable tc-authserver.service
sudo systemctl enable tc-worldserver.service

sudo systemctl start tc-authserver.service
sudo systemctl status tc-authserver.service

sudo systemctl start tc-worldserver.service
sudo systemctl status tc-worldserver.service

Подключение к консолям.

sudo -iu wow
screen -r tc-authserver
screen -r tc-worldserver

Выход из screen без остановки: CTRL+a, затем d.

Проверка портов и потребления памяти

Проверяем, что сервисы слушают порты 3724 (auth) и 8085 (world).

ss -tulpen | grep -E '3724|8085'

Смотрим память процессов.

ps -eo pid,vsz,rss,comm | grep -E 'authserver|worldserver'

Создаём аккаунт и настраиваем realmlist

Подключаемся к консоли worldserver.

sudo -iu wow
screen -r tc-worldserver

Создаём аккаунт.

account create trinity sUperp@ss

Выдаём GM-права.

account set gmlevel trinity 3 -1

В клиенте редактируем realmlist.wtf и указываем IP сервера.

set realmlist 192.168.1.155

Готово: запускаете WoW 3.3.5 и логинитесь под созданным аккаунтом.

Если после обновления ядра/БД нужно быстро понять, какая TDB используется сейчас — посмотрите таблицу version в базе world.

sudo mariadb world
SELECT * FROM `version`;