commit 7bb1902adb3226b76505a1f5ff42f952d23d2e90 Author: Deckard Date: Tue Sep 23 13:16:56 2025 -0400 Initial commit diff --git a/.env b/.env new file mode 100644 index 0000000..5b57bf9 --- /dev/null +++ b/.env @@ -0,0 +1,270 @@ +# ============================================== +# AZEROTHCORE DOCKER ENVCHARONMENT CONFIGURATION +# ============================================== +# REQUIRED: All values must be set - no defaults in compose + +# ============================================== +# DATABASE CREDENTIALS (REQUIRED) +# ============================================== +MYSQL_ROOT_PASSWORD=!!CHANGEMENOW!!! +MYSQL_USER=root +MYSQL_HOST=ac-mysql +MYSQL_PORT=3306 + +# Database names +DB_AUTH_NAME=acore_auth +DB_WORLD_NAME=acore_world +DB_CHARACTERS_NAME=acore_characters + +# ============================================== +# NETWORK CONFIGURATION (REQUIRED) +# ============================================== +# External IP for realm list (use actual server IP, not 'auto') +EXTERNAL_IP=192.168.1.100 + +# External ports - must be specified +DOCKER_DB_EXTERNAL_PORT=64306 +DOCKER_AUTH_EXTERNAL_PORT=3784 +DOCKER_WORLD_EXTERNAL_PORT=8215 +DOCKER_SOAP_EXTERNAL_PORT=7778 + +# Bind IPs +BIND_IP=0.0.0.0 +SOAP_IP=0.0.0.0 + +# Internal ports (container side) +AUTH_PORT=3724 +WORLD_PORT=8085 +SOAP_PORT=7878 +RA_PORT=3443 + +# ============================================== +# PATHS (REQUIRED) +# ============================================== +# Container internal paths +AC_DATA_DIR=/azerothcore/data +AC_LOGS_DIR=/azerothcore/logs +AC_CONFIG_DIR=/azerothcore/env/dist/etc +AC_MODULES_DIR=/azerothcore/modules +AC_BIN_DIR=/azerothcore/env/dist/bin + +# Host volume paths (for bind mounts if not using named volumes) +HOST_DATA_PATH=/srv/azerothcore/data +HOST_DB_PATH=/srv/azerothcore/database +HOST_LOGS_PATH=/srv/azerothcore/logs +HOST_CONFIG_PATH=/srv/azerothcore/config +HOST_BACKUP_PATH=/srv/azerothcore/backups + +# ============================================== +# VOLUME NAMES (REQUIRED) +# ============================================== +VOLUME_DB_DATA=ac_mysql_data +VOLUME_WORLD_DATA=ac_data +VOLUME_CONFIG=ac_config +VOLUME_LOGS=ac_logs +VOLUME_BACKUP=ac_backup + +# ============================================== +# CONTAINER NAMES (REQUIRED) +# ============================================== +CONTAINER_MYSQL=ac-mysql +CONTAINER_DBINIT=ac-db-init +CONTAINER_DBIMPORT=ac-db-import +CONTAINER_AUTHSERVER=ac-authserver +CONTAINER_WORLDSERVER=ac-worldserver +CONTAINER_ELUNA=ac-eluna + +# ============================================== +# NETWORK SETTINGS (REQUIRED) +# ============================================== +NETWORK_NAME=azerothcore +NETWORK_SUBNET=172.28.0.0/16 +NETWORK_GATEWAY=172.28.0.1 + +# ============================================== +# SERVER CONFIGURATION (REQUIRED) +# ============================================== +# Timezone +TZ=UTC + +# Server mode (0 = Normal, 1 = PvP) +GAME_TYPE=0 + +# Realm configuration +REALM_ID=1 +REALM_NAME=AzerothCore +REALM_ZONE=1 +REALM_FLAGS=0 +REALM_TIMEZONE=1 +REALM_ALLOWED_SECURITY_LEVEL=0 +REALM_POPULATION=0 +REALM_GAMEBUILD=12340 + +# ============================================== +# PERFORMANCE SETTINGS (REQUIRED) +# ============================================== +# Process settings +PROCESS_PRIORITY=0 +USE_PROCESSORS=0 +COMPRESSION=1 + +# Connection limits +MAX_CONNECTIONS=1000 +MAX_PLAYERS=100 +MAX_OVERSPEED_PINGS=2 + +# Pool sizes +INNODB_BUFFER_POOL_SIZE=256M +INNODB_LOG_FILE_SIZE=64M + +# Timeouts +SOCKET_TIMEOUT_TIME=900000 +SESSION_ADD_DELAY=10000 +GRID_CLEANUP_DELAY=300000 +MAP_UPDATE_INTERVAL=100 + +# ============================================== +# UPDATE SETTINGS (REQUIRED) +# ============================================== +UPDATES_ENABLE_DATABASES=7 +UPDATES_AUTO_SETUP=1 +UPDATES_REDUNDANCY=2 +UPDATES_ARCHIVED_REDUNDANCY=0 +UPDATES_ALLOW_REHASH=1 +UPDATES_CLEAN_DEAD_REF_MAX_COUNT=3 + +# ============================================== +# LOGGING CONFIGURATION (REQUIRED) +# ============================================== +LOG_LEVEL=1 +LOG_FILE= +LOG_TIMESTAMP=0 +LOG_FILE_LEVEL=0 +DB_ERROR_LOG_FILE=DBErrors.log +CHAR_LOG_FILE= +GM_LOG_FILE= +RA_LOG_FILE= +SQL_DRIVER_LOG_FILE= +SQL_DRIVER_QUERY_LOGGING=0 + +# Logger configuration +APPENDER_CONSOLE_CONFIG=1,2,0 +LOGGER_ROOT_CONFIG=1,Console +LOGGER_SERVER_CONFIG=1,Console + +# ============================================== +# FEATURE FLAGS (REQUIRED) +# ============================================== +# Console settings +CONSOLE_ENABLE=1 + +# SOAP settings +SOAP_ENABLED=0 + +# Remote Access settings +RA_ENABLE=0 +RA_IP=127.0.0.1 +RA_MIN_LEVEL=3 + +# Close idle connections +CLOSE_IDLE_CONNECTIONS=false + +# Skip checks (use with caution) +SKIP_BATTLEGROUND_RELOCATE_CHECK=0 + +# ============================================== +# BACKUP CONFIGURATION (REQUIRED) +# ============================================== +# Cron schedule +BACKUP_CRON_SCHEDULE=0 3 * * * + +# Retention +BACKUP_RETENTION_DAYS=7 + +# Backup file prefix +BACKUP_FILE_PREFIX=acore_backup + +# ============================================== +# DOCKER/PODMAN SETTINGS (REQUIRED) +# ============================================== +# User to run containers (root or specific UID) +DOCKER_USER=root + +# Container runtime (docker or podman) +CONTAINER_RUNTIME=podman + +# Restart policy +RESTART_POLICY=unless-stopped + +# Health check settings +HEALTHCHECK_INTERVAL=30s +HEALTHCHECK_TIMEOUT=10s +HEALTHCHECK_RETRIES=5 +HEALTHCHECK_START_PERIOD=60s + +# ============================================== +# SECURITY SETTINGS (REQUIRED) +# ============================================== +# Account security +WRONG_PASS_MAX_COUNT=3 +WRONG_PASS_BAN_TIME=600 +WRONG_PASS_BAN_TYPE=0 +BAN_EXPIRY_CHECK_INTERVAL=60 + +# ============================================== +# GAME RATES (REQUIRED) +# ============================================== +RATE_HEALTH=1 +RATE_MANA=1 +RATE_XP_KILL=1 +RATE_XP_QUEST=1 +RATE_XP_EXPLORE=1 +RATE_DROP_MONEY=1 +RATE_DROP_ITEMS=1 +RATE_HONOR=1 +RATE_REPUTATION=1 +RATE_TALENT=1 + +# ============================================== +# CHARACTER SETTINGS (REQUIRED) +# ============================================== +CHARACTERS_PER_ACCOUNT=50 +CHARACTERS_PER_REALM=10 +HEROIC_CHARACTERS_PER_REALM=1 +START_PLAYER_LEVEL=1 +START_HEROIC_PLAYER_LEVEL=55 +START_PLAYER_MONEY=0 +START_HEROIC_PLAYER_MONEY=2000 +MAX_PLAYER_LEVEL=80 +MIN_DUAL_SPEC_LEVEL=40 + +# ============================================== +# VMAP/MMAP SETTINGS (REQUIRED) +# ============================================== +VMAP_ENABLE_LOS=1 +VMAP_ENABLE_HEIGHT=1 +VMAP_PET_LOS=1 +VMAP_ENABLE_INDOOR_CHECK=1 +MMAP_ENABLE_PATH_FINDING=0 + +# ============================================== +# API KEYS / SECRETS (REQUIRED IF USING FEATURES) +# ============================================== +# Add any API keys or secrets here +# DISCORD_WEBHOOK_URL= +# EXTERNAL_API_KEY= +# MONITORING_TOKEN= + +# ============================================== +# CUSTOM MODULE SETTINGS +# ============================================== +# Eluna settings +ELUNA_ENABLED=1 + +# Playerbot settings (if using) +# PLAYERBOT_ENABLED=0 +# PLAYERBOT_MAX_BOTS=40 + +# ============================================== +# END OF CONFIGURATION +# ============================================== \ No newline at end of file diff --git a/acore-full.yml b/acore-full.yml new file mode 100644 index 0000000..4588d3d --- /dev/null +++ b/acore-full.yml @@ -0,0 +1,199 @@ +version: "3.9" + +services: + # Step 1: Standard MySQL database + ac-mysql: + image: mysql:8.0 + container_name: ac-mysql + environment: + MYSQL_ROOT_PASSWORD: ${DOCKER_DB_ROOT_PASSWORD:-password} + MYSQL_ROOT_HOST: '%' + ports: + - "${DOCKER_DB_EXTERNAL_PORT:-64306}:3306" + volumes: + - ac_mysql_data:/var/lib/mysql + command: > + --default-authentication-plugin=mysql_native_password + --character-set-server=utf8mb4 + --collation-server=utf8mb4_unicode_ci + --max_connections=1000 + --innodb-buffer-pool-size=256M + --innodb-log-file-size=64M + restart: unless-stopped + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${DOCKER_DB_ROOT_PASSWORD:-password}"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s + networks: + - azerothcore + + # Step 2: Initialize databases (fixed SQL syntax) + ac-db-init: + image: mysql:8.0 + container_name: ac-db-init + depends_on: + ac-mysql: + condition: service_healthy + networks: + - azerothcore + environment: + MYSQL_PWD: ${DOCKER_DB_ROOT_PASSWORD:-password} + command: | + sh -c ' + echo "Creating AzerothCore databases..." + mysql -h ac-mysql -uroot -e " + CREATE DATABASE IF NOT EXISTS acore_auth DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + CREATE DATABASE IF NOT EXISTS acore_world DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + CREATE DATABASE IF NOT EXISTS acore_characters DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + SHOW DATABASES; + " || true + echo "Databases created!" + ' + restart: "no" + + # Step 3: Import AzerothCore database schema and data + ac-db-import: + image: acore/ac-wotlk-db-import:14.0.0-dev + container_name: ac-db-import + depends_on: + - ac-db-init + networks: + - azerothcore + volumes: + - ac_config:/azerothcore/env/dist/etc + environment: + AC_DATA_DIR: "/azerothcore/data" + AC_LOGS_DIR: "/azerothcore/logs" + AC_LOGIN_DATABASE_INFO: "ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" + AC_WORLD_DATABASE_INFO: "ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" + AC_CHARACTER_DATABASE_INFO: "ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" + AC_CLOSE_IDLE_CONNECTIONS: "false" + AC_UPDATES_ENABLE_DATABASES: "7" + AC_UPDATES_AUTO_SETUP: "1" + entrypoint: ["/bin/bash", "-c"] + command: | + " + echo 'Waiting for databases to be ready...' + sleep 10 + + echo 'Creating config file for dbimport...' + mkdir -p /azerothcore/env/dist/etc + cat > /azerothcore/env/dist/etc/dbimport.conf < /azerothcore/env/dist/etc/worldserver.conf <