127 lines
4.4 KiB
Markdown
127 lines
4.4 KiB
Markdown
# wow private server
|
|
|
|
Déployer un serveur privé pour World Of Warcrfat via [cmangos](https://cmangos.net) compatible versions Classic (1.12.x), Burning Crusade (2.4.3) et Wrath Of The Litch King (3.3.5a)
|
|
|
|
## Pre requis
|
|
|
|
- Linux 🐧
|
|
- Docker :whale:
|
|
- 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
|
|
|
|
```bash
|
|
docker compose up database -d
|
|
```
|
|
|
|
|
|
### Extraire les maps du client
|
|
```bash
|
|
./docker/run.sh extract
|
|
```
|
|
|
|
> Choisir l'import en HD avec le plus de CPU possible car c'est long ☕
|
|
|
|
### Builder les images
|
|
|
|
```bash
|
|
./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:
|
|
```bash
|
|
./docker/run.sh init-db
|
|
```
|
|
|
|
> Patienter le temps de la mise en place de la base de données ☕
|
|
|
|
### Création du Realm
|
|
|
|
```bash
|
|
./scripts/create_realm.sh create_realm <NOM_DU_REALM> <IP_ADRESS_SERVER>
|
|
```
|
|
|
|
- Nettoyage des comptes par défault de la base de données
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
```
|
|
|
|
<!-- ```bash
|
|
docker exec <wow-mangosd>
|
|
|
|
# delete realm par défaut
|
|
DELETE FROM realmlist WHERE id = 1;
|
|
# Créer son realm
|
|
INSERT INTO realmlist (id, name, address, port, icon, realmflags, timezone, allowedSecurityLevel)
|
|
VALUES ('1', 'NOM', '127.0.0.1', '8085', '1', '0', '1', '0');
|
|
```
|
|
|
|
> Modifier le `NOM`, l'adresse `IP` du serveur (sauf si sur la même machine que le client) et la timezone si différent de Paris -->
|
|
|
|
### 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
|
|
|
|
[WOWSimpleREGISTRATION](/registration/README.md)
|
|
|
|
:warning: 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-registration` utilise SOAP pour envoyer des requêtes de création de compte ou de mise à jour de mot de passe au processus `mangosd` en tant qu'utilisateur administrateur.
|
|
|
|
:bulb: Il est préférable de protéger l'appli de registration dérrière une authentification (sso par exemple) -> [proxy-gatekeeper](https://git.legaragenumerique.fr/GARAGENUM/keycloak-gatekeeper)
|
|
|
|
### TO DO
|
|
|
|
- [x] 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 |