azerothcore setup #58

Open
opened 2026-03-29 19:14:40 -04:00 by sickprodigy · 7 comments
Owner

Have pulled this
https://www.azerothcore.org/wiki/install-with-docker
and somewhat updated the docker-compose.yml that was within, need to create a user:pass for mariadb still

Create 3 DBs + a dedicated user on the mariadb container, grant it rights, then change the root;${DOCKER_DB_ROOT_PASSWORD...} part in the 3 AC_*_DATABASE_INFO strings to your new user/password.

take note of steps to create user in this file:
mysql_mariadb-documentation.txt

then can try to run this

# docker-compose.yml for AzerothCore.
#
# Start the server with `docker compose up -d --build`
#
# Don't make changes this file! make a `docker-compose.override.yml` and make your
# changes there instead.

services:
  # Internal DB (disabled): kept for reference.
  # This stack is configured to use an external MariaDB/MySQL container ("mariadb")
  # on the external "homelab" network instead.
  #
  # ac-database:
  #   container_name: ac-database
  #   image: mysql:8.4
  #   networks:
  #     - homelab
  #   ports:
  #     - ${DOCKER_DB_EXTERNAL_PORT:-3306}:3306
  #   environment:
  #     - MYSQL_ROOT_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password}
  #   volumes:
  #     - ${DOCKER_VOL_DB:-ac-database}:/var/lib/mysql
  #   restart: unless-stopped
  #   healthcheck:
  #     test: "/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute \"SHOW DATABASES;\""
  #     interval: 5s
  #     timeout: 10s
  #     retries: 40

  ac-db-import:
    container_name: ac-db-import
    image: acore/ac-wotlk-db-import:${DOCKER_IMAGE_TAG:-master}
    networks:
      - homelab
    build:
      context: .
      target: db-import
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    environment:
      AC_DATA_DIR: "/azerothcore/env/dist/data"
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
      AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
      AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
    volumes:
      - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
    # depends_on:
    #   ac-database:
    #     condition: service_healthy

  ac-worldserver:
    container_name: ac-worldserver
    image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: worldserver
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    networks:
      - homelab
    stdin_open: true
    tty: true
    restart: unless-stopped
    env_file:
        ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac}
    environment:
      AC_DATA_DIR: "/azerothcore/env/dist/data"
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
      AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
      AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
    ports:
      - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085
      - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878
    volumes:
      - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
      # client data
      - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data/:ro
    depends_on:
      # ac-database:
      #   condition: service_healthy
      ac-db-import:
        condition: service_completed_successfully
      ac-client-data-init:
        condition: service_completed_successfully

  ac-authserver:
    container_name: ac-authserver
    image: acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: authserver
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    networks:
      - homelab
    tty: true
    restart: unless-stopped
    env_file:
        ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac}
    environment:
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_TEMP_DIR: "/azerothcore/env/dist/temp"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
    volumes:
      - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
    ports:
      - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724
    depends_on:
      # ac-database:
      #   condition: service_healthy
      ac-db-import:
        condition: service_completed_successfully

  ac-client-data-init:
    container_name: ac-client-data-init
    image: acore/ac-wotlk-client-data:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: client-data
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    volumes:
      - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data

  # used for extracting maps from files shipped with game client
  # Most of the time this shouldn't be needed
  ac-tools:
    container_name: ac-tools
    image: acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: tools
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    working_dir: /azerothcore/env/client/
    volumes:
      # this is not the directory of the extracted data! It's the client folder used by the extractors
      - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data
    # Activate with `docker compose --profile tools ...`
    profiles: [tools]

  # Dev server with the ./azerothcore folder binded from the host
  # Please use Linux, WSL2 or any ext-compatible filesystem
  # to avoid performance issues
  #
  # This is primarily intended for use with the "devcontainer" project
  #
  # This is provided primarily for development, though it doesn't receive
  # first-class support
  ac-dev-server:
    tty: true
    image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      dockerfile: ./apps/docker/Dockerfile.dev-server
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
      target: dev
    env_file:
        ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac}
    environment:
      AC_DATA_DIR: "/azerothcore/env/dist/data"
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
      AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
      AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
    networks:
      - homelab
    ports:
      - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724
      - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085
      - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878
    volumes:
      - ${DOCKER_VOL_ROOT:-.}:/azerothcore:cached
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ac-build-dev:/azerothcore/var/build
      - ac-ccache-dev:/azerothcore/var/ccache
      # this is not the directory of the extracted data! It's the client folder used by the extractors
      - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data
    # Activate with `docker compose --profile dev ...`
    profiles: [dev]
    # depends_on:
    #   ac-database:
    #     condition: service_healthy

volumes:
  # ac-database:
  ac-client-data:
  # Used for dev server
  ac-build-dev:
  ac-ccache-dev:

networks:
  # ac-network:
  homelab:
    name: homelab
    external: true

Have pulled this https://www.azerothcore.org/wiki/install-with-docker and somewhat updated the docker-compose.yml that was within, need to create a user:pass for mariadb still Create 3 DBs + a dedicated user on the [mariadb](vscode-file://vscode-app/c:/Users/awlea/AppData/Local/Programs/Microsoft%20VS%20Code/cfbea10c5f/resources/app/out/vs/code/electron-browser/workbench/workbench.html) container, grant it rights, then change the root;${DOCKER_DB_ROOT_PASSWORD...} part in the 3 AC_*_DATABASE_INFO strings to your new user/password. take note of steps to create user in this file: mysql_mariadb-documentation.txt then can try to run this ``` # docker-compose.yml for AzerothCore. # # Start the server with `docker compose up -d --build` # # Don't make changes this file! make a `docker-compose.override.yml` and make your # changes there instead. services: # Internal DB (disabled): kept for reference. # This stack is configured to use an external MariaDB/MySQL container ("mariadb") # on the external "homelab" network instead. # # ac-database: # container_name: ac-database # image: mysql:8.4 # networks: # - homelab # ports: # - ${DOCKER_DB_EXTERNAL_PORT:-3306}:3306 # environment: # - MYSQL_ROOT_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password} # volumes: # - ${DOCKER_VOL_DB:-ac-database}:/var/lib/mysql # restart: unless-stopped # healthcheck: # test: "/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute \"SHOW DATABASES;\"" # interval: 5s # timeout: 10s # retries: 40 ac-db-import: container_name: ac-db-import image: acore/ac-wotlk-db-import:${DOCKER_IMAGE_TAG:-master} networks: - homelab build: context: . target: db-import dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" volumes: - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated # depends_on: # ac-database: # condition: service_healthy ac-worldserver: container_name: ac-worldserver image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master} build: context: . target: worldserver dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} networks: - homelab stdin_open: true tty: true restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" ports: - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 volumes: - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated # client data - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data/:ro depends_on: # ac-database: # condition: service_healthy ac-db-import: condition: service_completed_successfully ac-client-data-init: condition: service_completed_successfully ac-authserver: container_name: ac-authserver image: acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-master} build: context: . target: authserver dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} networks: - homelab tty: true restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} environment: AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_TEMP_DIR: "/azerothcore/env/dist/temp" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" volumes: - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 depends_on: # ac-database: # condition: service_healthy ac-db-import: condition: service_completed_successfully ac-client-data-init: container_name: ac-client-data-init image: acore/ac-wotlk-client-data:${DOCKER_IMAGE_TAG:-master} build: context: . target: client-data dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} volumes: - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data # used for extracting maps from files shipped with game client # Most of the time this shouldn't be needed ac-tools: container_name: ac-tools image: acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-master} build: context: . target: tools dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} working_dir: /azerothcore/env/client/ volumes: # this is not the directory of the extracted data! It's the client folder used by the extractors - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data # Activate with `docker compose --profile tools ...` profiles: [tools] # Dev server with the ./azerothcore folder binded from the host # Please use Linux, WSL2 or any ext-compatible filesystem # to avoid performance issues # # This is primarily intended for use with the "devcontainer" project # # This is provided primarily for development, though it doesn't receive # first-class support ac-dev-server: tty: true image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master} build: context: . dockerfile: ./apps/docker/Dockerfile.dev-server args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} target: dev env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" networks: - homelab ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 volumes: - ${DOCKER_VOL_ROOT:-.}:/azerothcore:cached # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ac-build-dev:/azerothcore/var/build - ac-ccache-dev:/azerothcore/var/ccache # this is not the directory of the extracted data! It's the client folder used by the extractors - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data # Activate with `docker compose --profile dev ...` profiles: [dev] # depends_on: # ac-database: # condition: service_healthy volumes: # ac-database: ac-client-data: # Used for dev server ac-build-dev: ac-ccache-dev: networks: # ac-network: homelab: name: homelab external: true ```
Author
Owner

at the top it says don't make changes to this file, so trying to do it their way but still going to be loading another version of mysql i don't like. so prolly going to just fork and work from my fork

at the top it says don't make changes to this file, so trying to do it their way but still going to be loading another version of mysql i don't like. so prolly going to just fork and work from my fork
Author
Owner

had a brain fart, the volumes i'm trying to replace need their own folder to work out of, since i'm running from azerothcore/ i made a new folder azerothcore/bind for the bind mounts. Still kind of confused on the point of the volumes created here and what exactly is being saved, should prolly just do a test run, see the files in the location then check azerothcore/ location and see if just locally within would be better. Hard to explain really can't quite think it through to word it out.

Just going to create databases and user and have it import the new stuff. Might have to start with theres to get a database made then copy/move the database to my own instance if this doesn't work. Just a thought.

Instructions can be found: mysql_mariadb-documentation.txt and sql-commands-documentation.txt

had a brain fart, the volumes i'm trying to replace need their own folder to work out of, since i'm running from azerothcore/ i made a new folder azerothcore/bind for the bind mounts. Still kind of confused on the point of the volumes created here and what exactly is being saved, should prolly just do a test run, see the files in the location then check azerothcore/ location and see if just locally within would be better. Hard to explain really can't quite think it through to word it out. Just going to create databases and user and have it import the new stuff. Might have to start with theres to get a database made then copy/move the database to my own instance if this doesn't work. Just a thought. Instructions can be found: mysql_mariadb-documentation.txt and sql-commands-documentation.txt
Author
Owner

ended up using mysql8.4 since they don't recommend mariadb, so running inside the container with azerothcore, got it up and running now can connect with wow.sickgaming.net

need a way to create new accounts for people from sickgaming.net. maybe in admin panel or setup a plugin for it.

Also need to setup a database backup to another location so I don't lose everything or something happens and I can easily revert.
same with minecraft honestly.

ended up using mysql8.4 since they don't recommend mariadb, so running inside the container with azerothcore, got it up and running now can connect with wow.sickgaming.net need a way to create new accounts for people from sickgaming.net. maybe in admin panel or setup a plugin for it. Also need to setup a database backup to another location so I don't lose everything or something happens and I can easily revert. same with minecraft honestly.
Author
Owner

thinking of a few addons to make it easier to adjust things and what not too.
https://github.com/LightDestory/AzerothCoreAdmin

full catalogue: https://www.azerothcore.org/catalogue#/

thinking of a few addons to make it easier to adjust things and what not too. https://github.com/LightDestory/AzerothCoreAdmin full catalogue: https://www.azerothcore.org/catalogue#/
Author
Owner

need to make a forum and post about the server also pointing people in the right direction to join.

get someone else to make a mega.co.nz account and upload the 16gb file too so others can download, my account is already at almost 10gb for hacks and mods and bs.

need to make a forum and post about the server also pointing people in the right direction to join. get someone else to make a mega.co.nz account and upload the 16gb file too so others can download, my account is already at almost 10gb for hacks and mods and bs.
Author
Owner

created a forum and post, never uploaded to mega.co.nz, but I think i want to try some other downloads to get a copy that will work in non-fullscreen mode

created a forum and post, never uploaded to mega.co.nz, but I think i want to try some other downloads to get a copy that will work in non-fullscreen mode
Author
Owner

screwed everything up because I wanted to try and use player-bots version instead of plain wow. Sounds more interesting to have bots working with you.

screwed everything up because I wanted to try and use player-bots version instead of plain wow. Sounds more interesting to have bots working with you.
Sign in to join this conversation.