Bajo el estandarte del Open Source: Una guía para desplegar AzerothCore con Docker en Linux

Si ves que la luz se atenúa y te rodea una brisa gélida, no te asustes: ¡estás en Azeroth!

Esta icónica frase, grabada en la memoria de miles de jugadores durante las pantallas de carga de World of Wacraft, nos recordaba que estábamos a punto de cruzar el umbral hacia un mundo de leyenda. Pero hoy, ese umbral ha cambiado. Ya no atravesamos el Portal Oscuro en las Tierras Devastadas buscando el rastro de la Legión, ni zarpamos desde los puertos de los Reinos del Este hacia los glaciares de Rasganorte. Hoy, para acceder al portal hacia este mundo de leyenda, empezaremos en nuestra terminal GNU/Linux.

Actualmente existen decenas de servidores privados, además de los oficiales. En esta entrada vamos a ver un proyecto llamado AzerothCore, que sigue la filosofía de desarrollo open source, como no podía ser de otra manera, en esta web. Donde centenares de desarrolladores y entusiastas de este mundo de fantasía han creado no solo un servidor, sino mucho más, decenas de módulos, que nos van a permitir llevar al WOW mucho más allá de lo imaginable.

Imagen épica generada por IA con parámetros indicados por el autor de la entrada

Despliegue de AzerothCore, con Docker, Bots y Subasta

En esta guía, no solo vamos a levantar el núcleo del juego. Vamos a ir más allá:

  • Contenerización con Docker: Desplegaremos toda la infraestructura de forma limpia, escalable y profesional.
  • Módulo Playerbots: Daremos vida a un mundo que nunca se sienta vacío, permitiendo que compañeros controlados por la IA luchen a nuestro lado, y muchos más pueblen el mundo, haciendo misiones, contribuyendo a la economía del juego, de forma autónoma y mucho más
  • Subasta Viva (AHBot): Crearemos una economía orgánica y funcional para que los objetos y botines tengan siempre un mercado real.

Prepárate, porque vamos a forjar un reino donde el código abierto es la ley y tú eres el arquitecto. El Rey Exánime espera… y tu servidor GNU/Linux, con Docker, está listo para la batalla.

Preparar nuestro servidor

Primero de todo, os comento, el servidor que voy a utilizar es una máquina virtual, con Ubuntu 24.04. En otros casos, si queremos que esté encendido 24×7, podemos utilizar una RaspberryPi o un Intel Nuc, o algo similar. Eso sí, depende del número de usuarios que se conectarán, o los módulos que queremos instalar, es importante que tenga varios núcleos de CPU y por lo menos 8 GB de memoria. Además, debemos tener espacio disponible en el disco duro, por lo menos 30 GB, solo para este proyecto.

Lo primero que haremos es actualizar el equipo e instalar Docker

sudo apt update
sudo apt upgrade -y
sudoo reboot

Instalamos paquetes necesarios:

sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o \ 
/etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Añadimos el repositorio:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Instalamos Docker Engine

sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin

Asignamos permisos a nuestro usuario apra ejecutar Docker

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Añadimos los servicios al arranque:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Desplegar portainer

Una herramienta fantástica para controlar nuestro proyectos en Docker desde la consola web es Portainer. Aunque no es impresincidble y esta parte os la podéis saltar, siempre viene bien.

Realizamos los siguientes pasos:

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 \
    --name portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v portainer_data:/data portainer/portainer-ce:latest

Si todo ha ido bien, ya podemos acceder a la URL https://ip-del-servidor:9443

Aspecto de portainer en mi red local

Desplegar AzerothCore y módulos

Ahora vamos a desplegar AzerothCore, el módulo AH Bot, para la subasta, y el módulo PlayerBots.

En nuestro caso, como queremos usar el módulo «PlayerBots», debemos utilizar un código fuente de AzerothCore diferente al standard, ya preparado para dicho módulo.

mkdir /home/davidochobits/docker
chown -R davidochobits:davidochobits /home/davidochobits/docker
cd /home/davidochobits/docker
git clone https://github.com/liyunfan1223/azerothcore-wotlk.git --branch=Playerbot
cd /home/davidochobits/docker/azerothcore-wotlk/modules
git clone https://github.com/liyunfan1223/mod-playerbots.git --branch=master
git clone https://github.com/azerothcore/mod-ah-bot.git --branch=master

Una vez hecho esto debemos modificar el fichero «docker-compose.yml», para indicar que queremos añadir los dos módulos.

cd /home/davidochobits/docker/azerothcore-wotlk/
vim docker-compose.yml

A partir de la línea 90 añadimos:

- ./modules/mod-playerbots/:/azerothcore/modules/mod-playerbots:ro
- ./modules/mod-ah-bot/:/azerothcore/modules/mod-ah-bot:ro

Ahora viene la parte más importante, que es la compilación del código. Aunque es muy importante dedicar lo máximo que tengamos disponible de CPU, sino queremos que se alargue en el tiempo. La compilación en mi caso, fue de más de tres horas.

docker compose up -d --build

Dejarlo todo listo

Ahora viene otra parte esencial, debemos modificar la base de datos para añadir nuestros datos:

docker exec -it {id contenemod de ac-database}   mysql -uroot -p       (Acccount: root)  (Password: password)

Y lanzamos esta query, adaptada según nuestro datos:

USE acore_auth;
DELETE FROM realmlist WHERE id=1;
INSERT INTO realmlist (id, name, address, localAddress, localSubnetMask, port, icon, flag, timezone, allowedSecurityLevel, gamebuild)
VALUES ('1', 'Family', '192.168.0.75', '127.0.0.1','255.255.252.0','8085', '1', '0', '1', '0', '12340');

Básicamente, he cambiado el nombre del servidor y la IP donde se tienen que conectar.

Una vez hecho esto, salimos de la consola del contenedor de base de datos, con «exit»

Una vez hecho esto, reiniciamos, para ello, ya que hemos deplegado todo con los docker-compose, utilizamos ese método:

docker-compose down

Para volver a levantar:

docker-compose up -d

Aspecto de la consola con las operaciones sobre los contenedores

Ajustando los módulos

Ahora hay que ajustar los módulos a nuestras necesidades. Por ejemplo, en módulo de Playerbots, por defecto, nos desplegará a la vez 500 usuarios bots , por lo que, como me pasó a mi, nos dejará totalmente «frito» el servidor. Esto es el valor por defecto, pero se puede cambiar.

Es importante indicar que los cambios los debemos indicar en otro fichero diferente, llamado docker-compose.override.yml, que debemos crear, en la misma ruta que el fichero docker-compose.yml

Con el editor que más nos guste, indicamos este contenido:

services:
  ac-worldserver:
    environment:
      # Hora
      TZ: "Europe/Madrid"
      # Configuración de los bots
      AC_AI_PLAYERBOT_MIN_RANDOM_BOTS: "200"
      AC_AI_PLAYERBOT_MAX_RANDOM_BOTS: "300"
      # Esto evita que se conecten todos al segundo 1 y saturen el server
      AC_AI_PLAYERBOT_RANDOM_BOT_AUTOLOGIN: "1"
      # Para subasta
      AC_AUCTION_HOUSE_BOT_ENABLE_SELLER: "1"
      AC_AUCTION_HOUSE_BOT_ENABLE_BUYER: "1"
      AC_AUCTION_HOUSE_BOT_ACCOUNT: '102'
      AC_AUCTION_HOUSE_BOT_GUID: '1003'
    volumes:
      # Esta línea es OBLIGATORIA según la documentación para que cargue los módulos
      - ./modules:/azerothcore/modules:ro

Si observamos también hay una configuración para la parte de la subasta, ahí indicamos que personaje se encargará de añadir elementos en la subasta. Esto se tiene que hacer desde la base de datos MYSQL. Si queréis saber como se hace podéis dejar un comentario al respecto y si eso escribo una segunda parte.

Fuentes consultadas

Documentación oficial de AzerothCore
Canal de youtube de Azalea (os lo recomiendo)

4 Respuestas

  1. jooder… hace añ9s k no juego al WOW, pero m gustaria probar ésto….

  2. Forseti dice:

    Llevo una semana y no soy capaz. Miento fui capaz de tenerlo 3 dias, sin bots ni mods, intenté ponerle bots en otra instalación y algo hice y que se fastidió (a pesar de las carpetas separadas). Ni la guia oficial, ni copilot ni nada soy capaz de hacerlo otra vez… como tengo docker en una nube privada con immich, voy a intentar seguir tu guia y ver si le puedo poner un par de mods mas, como autobalance y el de teleport…cualquier ayuda es bienvenida

    • Hola colega,
      Inicialmente lo desplegué en un equipo con Windows 11, sin mods, con la base de datos aparte. Pero te digo que con Docker es mucho más fácil. Ya me contarás, un saludo.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.