wow-private-server/README.md

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