mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 00:58:34 +00:00
Initial commit
This commit is contained in:
270
.env
Normal file
270
.env
Normal file
@@ -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
|
||||
# ==============================================
|
||||
199
acore-full.yml
Normal file
199
acore-full.yml
Normal file
@@ -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 <<EOF
|
||||
LoginDatabaseInfo = \"ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth\"
|
||||
WorldDatabaseInfo = \"ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world\"
|
||||
CharacterDatabaseInfo = \"ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters\"
|
||||
Updates.EnableDatabases = 7
|
||||
Updates.AutoSetup = 1
|
||||
EOF
|
||||
|
||||
echo 'Running database import...'
|
||||
cd /azerothcore/env/dist/bin
|
||||
./dbimport
|
||||
|
||||
echo 'Database import complete!'
|
||||
"
|
||||
restart: "no"
|
||||
|
||||
# Step 4: Auth server
|
||||
ac-authserver:
|
||||
image: acore/ac-wotlk-authserver:14.0.0-dev
|
||||
container_name: ac-authserver
|
||||
depends_on:
|
||||
- ac-db-import
|
||||
environment:
|
||||
AC_LOGIN_DATABASE_INFO: "ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
|
||||
AC_UPDATES_ENABLE_DATABASES: "0"
|
||||
AC_BIND_IP: "0.0.0.0"
|
||||
ports:
|
||||
- "${DOCKER_AUTH_EXTERNAL_PORT:-3784}:3724"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- azerothcore
|
||||
volumes:
|
||||
- ac_config:/azerothcore/env/dist/etc
|
||||
# Add capabilities for priority setting
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
|
||||
# Step 5: World server with fixed permissions
|
||||
ac-worldserver:
|
||||
image: acore/ac-wotlk-worldserver:14.0.0-dev
|
||||
container_name: ac-worldserver
|
||||
stdin_open: true
|
||||
tty: true
|
||||
depends_on:
|
||||
- ac-authserver
|
||||
environment:
|
||||
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_UPDATES_ENABLE_DATABASES: "0"
|
||||
AC_BIND_IP: "0.0.0.0"
|
||||
AC_DATA_DIR: "/azerothcore/data"
|
||||
AC_SOAP_PORT: "7878"
|
||||
# Disable process priority to avoid permission error
|
||||
AC_PROCESS_PRIORITY: "0"
|
||||
ports:
|
||||
- "${DOCKER_WORLD_EXTERNAL_PORT:-8215}:8085"
|
||||
- "${DOCKER_SOAP_EXTERNAL_PORT:-7778}:7878"
|
||||
volumes:
|
||||
- ac_data:/azerothcore/data
|
||||
- ac_config:/azerothcore/env/dist/etc
|
||||
- ac_logs:/azerothcore/logs
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- azerothcore
|
||||
# Add capabilities for process priority if needed
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
# Create worldserver.conf with ProcessPriority = 0 to avoid permission issues
|
||||
entrypoint: ["/bin/bash", "-c"]
|
||||
command: |
|
||||
"
|
||||
echo 'Creating worldserver configuration...'
|
||||
if [ ! -f /azerothcore/env/dist/etc/worldserver.conf ]; then
|
||||
cat > /azerothcore/env/dist/etc/worldserver.conf <<EOF
|
||||
LoginDatabaseInfo = \"ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth\"
|
||||
WorldDatabaseInfo = \"ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world\"
|
||||
CharacterDatabaseInfo = \"ac-mysql;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters\"
|
||||
DataDir = \"data\"
|
||||
LogsDir = \"logs\"
|
||||
LoginREST.Port = 8081
|
||||
LoginREST.ExternalAddress = 127.0.0.1
|
||||
LoginREST.LocalAddress = 127.0.0.1
|
||||
SOAP.Port = 7878
|
||||
SOAP.IP = 0.0.0.0
|
||||
ProcessPriority = 0
|
||||
Updates.EnableDatabases = 0
|
||||
EOF
|
||||
fi
|
||||
|
||||
echo 'Starting worldserver...'
|
||||
exec /azerothcore/env/dist/bin/worldserver
|
||||
"
|
||||
|
||||
# Optional: Eluna Lua Engine
|
||||
ac-eluna:
|
||||
image: acore/eluna-ts:master
|
||||
container_name: ac-eluna
|
||||
depends_on:
|
||||
- ac-worldserver
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- azerothcore
|
||||
|
||||
volumes:
|
||||
ac_mysql_data:
|
||||
driver: local
|
||||
ac_data:
|
||||
driver: local
|
||||
ac_config:
|
||||
driver: local
|
||||
ac_logs:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
azerothcore:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user