wow private server
Déployer un serveur privé pour World Of Warcrfat via cmangos compatible versions Classic (1.12.x), Burning Crusade (2.4.3) et Wrath Of The Litch King (3.3.5a)
Pre requis
- Linux 🐧
- Docker 🐳
- Clients:
| Game name | Game version | Keyword | client download |
|---|---|---|---|
| World of Warcraft® | v1.12.x | classic |
https://archive.org/download/World_of_Warcraft_Client_and_Installation_Archive/ISO/WoW-1.12.1_install.rar |
| World of Warcraft: The Burning Crusade® | v2.4.3 | tbc |
https://archive.org/download/World_of_Warcraft_Client_and_Installation_Archive/ISO/WoW-2.4.3_install.rar |
| World of Warcraft: Wrath of the Link King® | v3.3.5a | wotlk |
somewher in the web ;) |
Comment ça marche ?
3 services sont nécessaires:
- Mangosd : c'est l'émulateur qui simule le serveur WOW ainsi que l'authentification.
- Realmd : C'est le processus qui gère le 'realm', le serveur de jeu avec les évènements et les aasets.
- Base de données qui persiste aussi bien les comptes que les personnages s'y rattachant ainsi que leur progressions respectives.
Configuration
- Renseigner dans le fichier
.env:- Le chemin absolue vers le client WOW (Classic, tbc ou wotlk)
- La version de WOW correspondante au client ()
- La TimeZone (TZ)
- Mots de passe database
Installation
Lancer la base de données
docker compose up database -d
Extraire les maps du client
./docker/run.sh extract
Choisir l'import en HD avec le plus de CPU possible car c'est long ☕
Builder les images
./scripts//build_docker_image.sh 2
# nb threads
L'image builder récupère le code source de cmangos pour le compiler, c'est long aussi ☕
Peupler la base de données
- Dans un autre terminal, lançer le script d'import des données du jeu:
./docker/run.sh init-db
Patienter le temps de la mise en place de la base de données ☕
Création du Realm
./scripts/create_realm.sh create_realm <NOM_DU_REALM> <IP_ADRESS_SERVER>
- Nettoyage des comptes par défault de la base de données
docker exec -it database bash
# Une fois dans le terminal du conteneur, on install mysql
apt update && apt install mysql-client -y
on se connecte à la db
mysql -u <db_user> -p<db_password> -D <wow_version>realmd
delete * from account;
Possibilité de passer par le service
Créer un compte
docker attach wow-mangosd
# Appuyer sur Enter
mangosd>
# Créer un compte
account create <nom_compte> <mot_de_passe> 3
# Ajouter email au compte
account set email <nom_compte> <email> <confirmation_email>
# Ajouter un niveau admin à un compte (0= player, 3=admin realm, -1=admin all realms)
account set gmlevel <nom_compte> <niveau> -1
Inteface pour créer les comptes (Optionnel mais pratique)
Dans le dossier registration/ se trouve une interface pour créer des comptes et gérer les changements de mots de passe
⚠️ Utiliser un user admin (gmlevel 3) dans registration/application/config/config.php pour se connecter au processus d'écoute de mangosd (via SOAP) à configurer dans config/mangosd/mangosd.conf (lignes 1731 à 1735)
En résumé, le service
wow-registrationutilise SOAP pour envoyer des requêtes de création de compte ou de mise à jour de mot de passe au processusmangosden tant qu'utilisateur administrateur.
💡 Il est préférable de protéger l'appli de registration dérrière une authentification (sso par exemple) -> proxy-gatekeeper
TO DO
- admin create account OK, change password OK
- clean base users after database readiness
- make registration get vars from .env
- script install ask version and client path and do all