Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
servers:games:trinitycore_3.3.5 [2022/09/30 06:22] – [Notes] Sean Rhone | servers:games:trinitycore_3.3.5 [2023/07/31 00:29] – Sean Rhone |
---|
* [[distros:fedora_server|Fedora Server]] | * [[distros:fedora_server|Fedora Server]] |
* [[servers:mariadb|MariaDB]] | * [[servers:mariadb|MariaDB]] |
* [[games:wine:world_of_warcraft_3.3.5|World of Warcraft (3.3.5)]] ((required for content extraction, and since the core and tools are compiled on Linux, the extraction tools will also require a Linux OS to run on)) | * [[games:wine:world_of_warcraft_3.3.5|World of Warcraft (3.3.5)]] ((required for content extraction, and since the core and tools are compiled on Linux the extraction tools also require Linux)) |
| |
===== Notes ===== | |
| |
* :!: As of 2022/09/30, these notes are partially up-to-date. TC works fine with MariaDB also | |
* :!: Do **not** use Warmane's WotLK client as it's modified and fails if ''authserver.conf/StrictVersionCheck = 1'' | |
* [[https://wowdl.net/index|WoWDL]] has a [[https://wowdl.net/client/3.3.5a-win-us|clean 3.3.5 client]] | |
| |
====== Create Group and User ====== | ====== Create Group and User ====== |
====== Firewall ====== | ====== Firewall ====== |
| |
* 3724/tcp is loginserver and needs forwarded from the router also for WAN | * :!: 3724/tcp is loginserver and needs forwarded from the router for both LAN and WAN |
* 8085/tcp is worldserver and needs forwarded from the router also for WAN | * :!: 8085/tcp is worldserver and needs forwarded from the router for both LAN and WAN |
* 3443/tcp is Remote Console | * 3443/tcp is Remote Console |
* 7878/tcp is SOAP | * 7878/tcp is SOAP |
sudo su 'trinity' -s '/usr/bin/bash' | sudo su 'trinity' -s '/usr/bin/bash' |
| |
rm -Rf '/tmp/TDB' '/tmp/TDB/TDB335.7z' && mkdir -p '/tmp/TDB' && cd ~ && wget -O '/tmp/TDB/TDB335.7z' 'https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.22081/TDB_full_world_335.22081_2022_08_15.7z' && 7za x '/tmp/TDB/TDB335.7z' -o'/tmp/TDB' && mv '/tmp/TDB/TDB_full_world_335'*'.sql' ~/'Projects/trinity-335/run/bin' && rm -Rf '/tmp/TDB' && sync | rm -Rf '/tmp/TDB' '/tmp/TDB/TDB335.7z' && mkdir -p '/tmp/TDB' && cd ~ && wget -O '/tmp/TDB/TDB335.7z' 'https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.23061/TDB_full_world_335.23061_2023_06_14.7z' && 7za x '/tmp/TDB/TDB335.7z' -o'/tmp/TDB' && mv '/tmp/TDB/TDB_full_world_335'*'.sql' ~/'Projects/trinity-335/run/bin' && rm -Rf '/tmp/TDB' && sync |
| |
====== Compile ====== | ====== Compile ====== |
| |
* :!: This wipes out the ''run'' folder, so ideally any extracted content and the full TDB shouldn't be moved there until after this initial compile | * :!: This wipes out the ''run'' folder, so ideally any extracted content and the full TDB shouldn't be moved there until after this initial compile |
| * :!: For content extraction, Fedora major versions should match between the compiler and extraction machines for Boost libraries ((can use ''LD_LIBRARY_PATH=.'' for all the extraction commands, and copy the requested ''.so'' library files from [[https://pkgs.org/|downloaded]] packages into the WoW folder)) |
| |
sudo su 'trinity' -s '/usr/bin/bash' | sudo su 'trinity' -s '/usr/bin/bash' |
* See [[games:wine:world_of_warcraft_3.3.5|WoW 3.3.5]] installation notes | * See [[games:wine:world_of_warcraft_3.3.5|WoW 3.3.5]] installation notes |
| |
mkdir -p '/tmp/trinity-extractors' && scp espionage724@192.168.1.152:'/tmp/trinity-extractors/'* '/tmp/trinity-extractors' && mv '/tmp/trinity-extractors/'* ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && sync | mkdir -p '/tmp/trinity-extractors' && scp espionage724@192.168.1.152:'/tmp/trinity-extractors/'* '/tmp/trinity-extractors' && mv '/tmp/trinity-extractors/'* ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && sync |
| |
===== Dependencies ===== | ===== Dependencies ===== |
* :!: Run on the machine doing the content extraction | * :!: Run on the machine doing the content extraction |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && ./'mapextractor' -f '0' && sync | cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && ./'mapextractor' -f '0' && sync |
| |
==== VMaps ==== | ==== VMaps ==== |
* :!: Run on the machine doing the content extraction | * :!: Run on the machine doing the content extraction |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && ./'vmap4extractor' -l && sync | cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && ./'vmap4extractor' -l && sync |
| |
=== Assemble === | === Assemble === |
* :!: Run on the machine doing the content extraction | * :!: Run on the machine doing the content extraction |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && mkdir -p 'vmaps' && ./'vmap4assembler' 'Buildings' 'vmaps' && sync | cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && mkdir -p 'vmaps' && ./'vmap4assembler' 'Buildings' 'vmaps' && sync |
| |
==== MMaps ==== | ==== MMaps ==== |
* :!: Run on the machine doing the content extraction | * :!: Run on the machine doing the content extraction |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && mkdir -p 'mmaps' && ./'mmaps_generator' --bigBaseUnit 'true' --threads $(nproc) && sync | cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && mkdir -p 'mmaps' && ./'mmaps_generator' --bigBaseUnit 'true' --threads $(nproc) && sync |
| |
===== Archive Content ===== | |
| |
* Should be around 1.5GB | |
* :!: Run on the machine that did the content extraction | |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && tar -cvzf ~/'Downloads/WotLK-content-'$(date +%Y-%m-%d)'.tar.gz' 'dbc' 'maps' 'vmaps' 'mmaps' 'Cameras' && cd ~ && sync | |
| |
===== Transfer Content to Server ===== | ===== Transfer Content to Server ===== |
* :!: Run on the machine that did the content extraction | * :!: Run on the machine that did the content extraction |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && scp -r 'dbc' 'maps' 'vmaps' 'mmaps' 'Cameras' espionage724@192.168.1.152:~ | cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && scp -r 'dbc' 'maps' 'vmaps' 'mmaps' 'Cameras' espionage724@192.168.1.152:~ |
| |
===== Cleanup on Client ===== | ===== Cleanup on Client ===== |
* :!: Run on the machine that did the content extraction | * :!: Run on the machine that did the content extraction |
| |
cd ~/'Wine Prefixes/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft' && rm -Rf 'Buildings' 'Cameras' 'dbc' 'maps' 'vmaps' 'mmaps' && cd ~/'Downloads' && rm -f 'mapextractor' 'vmap4extractor' 'vmap4assembler' 'mmaps_generator' && sync | cd ~/'.wine/World of Warcraft 3.3.5/drive_c/Program Files/World of Warcraft 3.3.5a.12340'*'/' && rm -Rf 'Buildings' 'Cameras' 'dbc' 'maps' 'vmaps' 'mmaps' && cd ~/'Downloads' && rm -f 'mapextractor' 'vmap4extractor' 'vmap4assembler' 'mmaps_generator' && sync |
| |
===== Move Content on Server ===== | ===== Move Content on Server ===== |
ls ~/'dbc' ~/'maps' ~/'vmaps' ~/'mmaps' ~/'Cameras' > '/dev/null' && sudo rm -Rf '/var/lib/trinity/Projects/trinity-335/run/bin/dbc' '/var/lib/trinity/Projects/trinity-335/run/bin/maps' '/var/lib/trinity/Projects/trinity-335/run/bin/vmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/mmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/Cameras' && cd ~ && sudo mv 'dbc' 'maps' 'vmaps' 'mmaps' 'Cameras' '/var/lib/trinity/Projects/trinity-335/run/bin' && sudo chown -R 'trinity':'trinity' '/var/lib/trinity/Projects/trinity-335/run/bin/dbc' '/var/lib/trinity/Projects/trinity-335/run/bin/maps' '/var/lib/trinity/Projects/trinity-335/run/bin/vmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/mmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/Cameras' && sync | ls ~/'dbc' ~/'maps' ~/'vmaps' ~/'mmaps' ~/'Cameras' > '/dev/null' && sudo rm -Rf '/var/lib/trinity/Projects/trinity-335/run/bin/dbc' '/var/lib/trinity/Projects/trinity-335/run/bin/maps' '/var/lib/trinity/Projects/trinity-335/run/bin/vmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/mmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/Cameras' && cd ~ && sudo mv 'dbc' 'maps' 'vmaps' 'mmaps' 'Cameras' '/var/lib/trinity/Projects/trinity-335/run/bin' && sudo chown -R 'trinity':'trinity' '/var/lib/trinity/Projects/trinity-335/run/bin/dbc' '/var/lib/trinity/Projects/trinity-335/run/bin/maps' '/var/lib/trinity/Projects/trinity-335/run/bin/vmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/mmaps' '/var/lib/trinity/Projects/trinity-335/run/bin/Cameras' && sync |
| |
====== Settings ====== | sudo restorecon -F -I -R '/var/lib/trinity/Projects/trinity-335' && sync |
| |
===== authserver ===== | ====== SELinux ====== |
| |
==== Copy ==== | sudo semanage fcontext --add --type 'bin_t' '/var/lib/trinity/Projects/trinity-335/run/bin/authserver' && sudo restorecon -F -I -R '/var/lib/trinity/Projects/trinity-335/run/bin/authserver' |
| |
sudo su 'trinity' -s '/usr/bin/bash' | sudo semanage fcontext --add --type 'bin_t' '/var/lib/trinity/Projects/trinity-335/run/bin/worldserver' && sudo restorecon -F -I -R '/var/lib/trinity/Projects/trinity-335/run/bin/worldserver' |
| |
cp ~/'Projects/trinity-335/run/etc/authserver.conf.dist' ~/'Projects/trinity-335/run/etc/authserver.conf' | ====== Settings ====== |
| |
==== Settings ==== | ===== authserver.conf ===== |
| |
sudo su 'trinity' -s '/usr/bin/bash' | * See [[notes:trinitycore_confs#authserverconf|authserver.conf]] |
| |
nano ~/'Projects/trinity-335/run/etc/authserver.conf' | ===== worldserver.conf ===== |
| |
<code> | * See [[notes:trinitycore_confs#worldserverconf|worldserver.conf]] |
WrongPass.MaxCount = 5 | |
WrongPass.BanTime = 0 | |
| |
StrictVersionCheck = 1 | ====== Create GM Account ====== |
| |
LoginDatabaseInfo = ".;/var/lib/mysql/mysql.sock;authserver;x;authserver" | |
| |
Updates.EnableDatabases = 1 | |
| |
Updates.CleanDeadRefMaxCount = -1</code> | |
| |
===== worldserver ===== | |
| |
==== Copy ==== | |
| |
sudo su 'trinity' -s '/usr/bin/bash' | sudo su 'trinity' -s '/usr/bin/bash' |
| |
cp ~/'Projects/trinity-335/run/etc/worldserver.conf.dist' ~/'Projects/trinity-335/run/etc/worldserver.conf' | cd ~/'Projects/trinity-335/run/bin' && ~/'Projects/trinity-335/run/bin/authserver' |
| |
==== Settings ==== | * Ctrl + C |
| |
sudo su 'trinity' -s '/usr/bin/bash' | |
| |
nano ~/'Projects/trinity-335/run/etc/worldserver.conf' | |
| |
<code> | |
LoginDatabaseInfo = ".;/var/lib/mysql/mysql.sock;authserver;x;authserver" | |
WorldDatabaseInfo = ".;/var/lib/mysql/mysql.sock;worldserver;x;worldserver" | |
CharacterDatabaseInfo = ".;/var/lib/mysql/mysql.sock;characters;x;characters" | |
| |
MaxCoreStuckTime = 10 | |
| |
CleanCharacterDB = 1 | |
PersistentCharacterCleanFlags = 14 | |
| |
RealmZone = 2 | |
StrictPlayerNames = 1 | |
StrictCharterNames = 1 | |
StrictPetNames = 1 | |
| |
DBC.Locale = 0 | |
| |
Instance.IgnoreRaid = 1 | |
| |
Quests.LowLevelHideDiff = -1 | |
| |
Motd = "Welcome to the Realm of Espionage World of Warcraft server!" | |
Server.LoginInfo = 1 | |
BirthdayTime = 1170471600 | |
| |
Updates.CleanDeadRefMaxCount = -1 | |
| |
Warden.Enabled = 0 | |
| |
PreserveCustomChannels = 0 | |
| |
Ra.Enable = 1 | |
| |
PacketSpoof.Policy = 0</code> | |
| |
=== Production === | |
| |
<code> | |
Warden.Enabled = 1 | |
Warden.ClientCheckFailAction = 2 | |
| |
SOAP.Enabled = 1 | |
SOAP.IP = "0.0.0.0" | |
| |
PreventRenameCharacterOnCustomization = 1 | |
| |
PacketSpoof.Policy = 2 | |
PacketSpoof.BanMode = 2 | |
| |
AntiCheat.PendingMoveChangesTimeoutTime = 3000</code> | |
| |
====== Create GM Account ====== | |
| |
* Starting the ''worldserver'' by itself and first is intentional | |
| |
sudo su 'trinity' -s '/usr/bin/bash' | |
| |
cd ~/'Projects/trinity-335/run/bin' && ~/'Projects/trinity-335/run/bin/worldserver' | cd ~/'Projects/trinity-335/run/bin' && ~/'Projects/trinity-335/run/bin/worldserver' |
* Any additional console use should come from ''telnet'' from a remote machine on the local network | * Any additional console use should come from ''telnet'' from a remote machine on the local network |
* :!: Credentials for the remote console are the same as the GM account created above | * :!: Credentials for the remote console are the same as the GM account created above |
| * 2023/07/30: TODO: ''sed'' didn't work as-expected, hence this isn't a one-liner yet 8-) |
| |
sudo su 'trinity' -s '/usr/bin/bash' | sudo su 'trinity' -s '/usr/bin/bash' |
* To be done after databases are initialized | * To be done after databases are initialized |
* Applies to the first realm | * Applies to the first realm |
* :!: If running a LAN server, change ''wow.realmofespionage.xyz'' to LAN IP | |
| |
sudo mysql | sudo mysql |
| |
===== Two-Factor Authentication ===== | ===== Two-Factor Authentication ===== |
| |
| * :!: 2023/07/30: This may have different behavior, see ''TOTPMasterSecret'' in auth and world confs |
| |
* To be done after databases are initialized | * To be done after databases are initialized |
* Authenticator will be prompted from the game client on each log-in | * Authenticator will be prompted from the game client on each log-in |
| |
mysql -u root -p | sudo mysql |
| |
UPDATE `authserver`.`account` SET `token_key` = 'x' WHERE `account`.`id` = 1 | UPDATE `authserver`.`account` SET `token_key` = 'x' WHERE `account`.`id` = 1 |
===== authserver ===== | ===== authserver ===== |
| |
==== Service ==== | * 2027/07/30: TODO: Rename the service as ''tc-335-auth'' isn't rememberable |
| |
sudo -e '/etc/systemd/system/tc-335-auth.service' && sudo systemctl daemon-reload && sudo systemctl enable 'tc-335-auth' | sudo -e '/etc/systemd/system/tc-335-auth.service' && sudo systemctl daemon-reload && sudo systemctl enable 'tc-335-auth' --now |
| |
<code> | <code> |
WantedBy=multi-user.target</code> | WantedBy=multi-user.target</code> |
| |
=== SELinux === | sudo systemctl status 'tc-335-auth' -l |
| |
* :!: May have to re-run this series of commands over-time | |
| |
sudo setenforce 0 | |
| |
sudo systemctl start 'tc-335-auth' && sudo systemctl status 'tc-335-auth' -l | |
| |
mkdir -p ~/'policies' && cd ~/'policies' && sudo grep 'authserver' '/var/log/audit/audit.log' | sudo audit2allow -M 'authserver' && sudo semodule -i 'authserver.pp' && cd ~ | |
| |
sudo setenforce 1 | |
| |
===== worldserver ===== | ===== worldserver ===== |
| |
* :!: Make sure worldserver's Console is disabled before starting the ''worldserver'' service (see [[servers:games:trinitycore_3.3.5#disable_console|configuration]]) | * :!: Make sure worldserver's Console is disabled before starting the ''worldserver'' service |
| * 2027/07/30: TODO: Rename the service as ''tc-335-world'' isn't rememberable |
==== Service ==== | |
| |
sudo -e '/etc/systemd/system/tc-335-world.service' && sudo systemctl daemon-reload && sudo systemctl enable 'tc-335-world' | sudo -e '/etc/systemd/system/tc-335-world.service' && sudo systemctl daemon-reload && sudo systemctl enable 'tc-335-world' |
WantedBy=multi-user.target</code> | WantedBy=multi-user.target</code> |
| |
=== SELinux === | sudo systemctl status 'tc-335-world' -l |
| |
* :!: May have to re-run this series of commands over-time | |
| |
sudo setenforce 0 | |
| |
sudo systemctl start 'tc-335-world' && sudo systemctl status 'tc-335-world' -l | |
| |
mkdir -p ~/'policies' && cd ~/'policies' && sudo grep 'worldserver' '/var/log/audit/audit.log' | sudo audit2allow -M 'worldserver' && sudo semodule -i 'worldserver.pp' && cd ~ | |
| |
sudo setenforce 1 | |
| |
===== Information ===== | ===== Information ===== |
| |
* This backs up an archive to the local disk | * This backs up an archive to the local disk |
* :!: Everything below this line may need re-factored and isn't tested with the updated notes as of 2019/02/19 | |
| |
==== authserver ==== | ==== authserver ==== |
==== Backup Database ==== | ==== Backup Database ==== |
| |
mysqldump -u 'root' -p --defaults-extra-file='/var/lib/mysql/auth/authserver' --single-transaction 'authserver' -r ~/'authserver-database-manual-'$(date +%Y-%m-%d)'.sql' && sync | sudo mysqldump --defaults-extra-file='/var/lib/mysql/auth/authserver' --single-transaction 'authserver' -r ~/'authserver-database-manual-'$(date +%Y-%m-%d)'.sql' && sync |
| |
mysqldump -u 'root' -p --defaults-extra-file='/var/lib/mysql/auth/characters' --single-transaction 'characters' -r ~/'characters-database-manual-'$(date +%Y-%m-%d)'.sql' && sync | sudo mysqldump --defaults-extra-file='/var/lib/mysql/auth/characters' --single-transaction 'characters' -r ~/'characters-database-manual-'$(date +%Y-%m-%d)'.sql' && sync |
| |
==== Start Services ==== | ==== Start Services ==== |
==== Drop Previous Database ==== | ==== Drop Previous Database ==== |
| |
mysql -u 'root' -p | sudo mysql |
| |
DROP DATABASE authserver; | DROP DATABASE authserver; |
==== Re-create Databases ==== | ==== Re-create Databases ==== |
| |
mysql -u 'root' -p | sudo mysql |
| |
CREATE DATABASE authserver; | CREATE DATABASE authserver; |
==== Restore Database ==== | ==== Restore Database ==== |
| |
mysql -u 'root' -p 'authserver' < ~/'authserver-database-'*'.sql' && sync | sudo mysql 'authserver' < ~/'authserver-database-'*'.sql' && sync |
| |
mysql -u 'root' -p 'characters' < ~/'characters-database-'*'.sql' && sync | sudo mysql 'characters' < ~/'characters-database-'*'.sql' && sync |
| |
==== Reapply Permissions ==== | ==== Reapply Permissions ==== |
| |
mysql -u 'root' -p | sudo mysql |
| |
GRANT ALL PRIVILEGES ON authserver.* to 'authserver'@'localhost' IDENTIFIED BY 'x'; | GRANT ALL PRIVILEGES ON authserver.* to 'authserver'@'localhost' IDENTIFIED BY 'x'; |
| |
rm ~/'authserver-database-'*'.sql' ~/'characters-database-'*'.sql' && sync | rm ~/'authserver-database-'*'.sql' ~/'characters-database-'*'.sql' && sync |
| |