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:roSi 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)


jooder… hace añ9s k no juego al WOW, pero m gustaria probar ésto….
Hola colega,
Pues todo es ponerse 🙂
Saludos!
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.