From 3459b71c8e006ff8e815bbf22953930cf3ad6363 Mon Sep 17 00:00:00 2001 From: greg Date: Sun, 31 Aug 2025 09:23:55 +0200 Subject: [PATCH] update readme --- README.md | 42 ++++++++++++++++++++++++----- build_docker_images.sh | 60 ++++++++++++++++++++++++++++++++++++++++++ compose.yml | 6 ++--- 3 files changed, 99 insertions(+), 9 deletions(-) create mode 100755 build_docker_images.sh diff --git a/README.md b/README.md index 173489d..21e7440 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # wow private server +![cmangos](https://cmangos.net) + ## Pre requis - Linux 🐧 @@ -12,33 +14,61 @@ |--------------------------------------------|--------------|-----------|-------------------| | 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` | | +| World of Warcraft: Wrath of the Link KingÂź | **v3.3.5a** | `wotlk` | somewher in the web ;) | ## 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 version de WOW correspondante au client () + - La TimeZone (TZ) + - Mots de passe database ## Installation -- Extraire les maps du client: +### Extraire les maps du client ```bash -./builder/run.sh extract +./docker/run.sh extract ``` > Choisir l'import en HD avec le plus de CPU possible car c'est long ☕ +### Builder les images + +```bash +./build_docker_image.sh wotlk 2 +# version / 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 + - Lançer la base de donnĂ©es: ```bash -docker compose up wow-db +docker compose up database ``` +> Laisser tourner et ouvrir un autre terminal + - Dans un autre terminal, lançer le script d'import des donnĂ©es du jeu: ```bash -./builder/run.sh init-db +./docker/run.sh init-db ``` > Patienter le temps de la mise en place de la base de donnĂ©es ☕ +### CrĂ©ation du Realm + +```bash +docker exec + +# 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 diff --git a/build_docker_images.sh b/build_docker_images.sh new file mode 100755 index 0000000..ac68189 --- /dev/null +++ b/build_docker_images.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Choix expension +# echo "Entre ton choix (classic / tbc / wotlk) :" +# read reponse + +# case "$reponse" in +# classic) EXPANSION="classic" ;; +# tbc) EXPANSION="tbc" ;; +# wotlk) EXPANSION="wotlk" ;; +# *) EXPANSION="Inconnu" ;; +# esac + +# Arguments +EXPANSION="${1:-wotlk}" # exemple : wotlk / tbc / classic +THREADS="${2:-2}" + +# Infos git +MANGOS_SHA1=$(curl -sSL "https://api.github.com/repos/cmangos/mangos-${EXPANSION}/commits/master" | jq -r .sha) +DATABASE_SHA1=$(curl -sSL "https://api.github.com/repos/cmangos/${EXPANSION}-db/commits/master" | jq -r .sha) + +VERSION="1.0.0-$(date -u +"%Y%m%d")" + +# Registry + repository +REGISTRY="wow-server" +# REPO="wow-server" +DOCKER_IMAGE="${REGISTRY}" + +# Tags pour builder +BUILDER_IMAGE_TAG="${DOCKER_IMAGE}-${EXPANSION}:builder" +# Tags pour runner +RUNNER_IMAGE_TAG="${DOCKER_IMAGE}-${EXPANSION}:runner" + +echo "==== Build de l’image BUILDER ====" +docker buildx build \ + --build-arg EXPANSION="${EXPANSION}" \ + --build-arg MANGOS_SHA1="${MANGOS_SHA1}" \ + --build-arg DATABASE_SHA1="${DATABASE_SHA1}" \ + --build-arg THREADS="${THREADS}" \ + --build-arg VERSION="${VERSION}" \ + --target builder \ + --tag "${BUILDER_IMAGE_TAG}" \ + --load \ + docker/ + +echo "==== Build de l’image RUNNER ====" +docker buildx build \ + --build-arg EXPANSION="${EXPANSION}" \ + --build-arg MANGOS_SHA1="${MANGOS_SHA1}" \ + --build-arg DATABASE_SHA1="${DATABASE_SHA1}" \ + --build-arg THREADS="${THREADS}" \ + --build-arg VERSION="${VERSION}" \ + --target runner \ + --tag "${RUNNER_IMAGE_TAG}" \ + --load \ + docker/ + +echo "==== Images construites ====" +docker images | grep "${DOCKER_IMAGE}" diff --git a/compose.yml b/compose.yml index ad2da32..901bae2 100644 --- a/compose.yml +++ b/compose.yml @@ -4,7 +4,7 @@ services: image: mariadb:11.8 container_name: wow-db environment: - database_ROOT_PASSWORD: "${MYSQL_SUPERPASS}" + MARIADB_ROOT_PASSWORD: "${MYSQL_SUPERPASS}" volumes: - ./database_data:/var/lib/mysql - ./config/database:/etc/mysql/conf.d:ro @@ -12,7 +12,7 @@ services: - wow mangosd: - image: dockerregistry.legaragenumerique.fr/wow-server-wotlk:runner + image: wow-server-"${WOW_VERSION}":runner container_name: wow-mangosd depends_on: - database @@ -33,7 +33,7 @@ services: - wow realmd: - image: dockerregistry.legaragenumerique.fr/wow-server-wotlk:runner + image: wow-server-"${WOW_VERSION}":runner container_name: wow-realmd depends_on: - database