diff --git a/README.md b/README.md index be1eb5f..60bdeb8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,33 @@ +
+ AzerothCore RealmMaster Logo +
+ # AzerothCore RealmMaster -A complete containerized deployment of AzerothCore WoW 3.3.5a (Wrath of the Lich King) private server with 68 enhanced modules and intelligent automation. +A complete containerized deployment of AzerothCore WoW 3.3.5a (Wrath of the Lich King) private server with 93+ enhanced modules and intelligent automation. + +## 📖 Table of Contents + +- [🚀 Quick Start](#🚀-quick-start) +- [🎯 What You Get](#🎯-what-you-get) +- [📋 Getting Started](#📋-getting-started) + - [Local Deployment](#local-deployment) + - [Remote Deployment](#remote-deployment) + - [Post-Installation Steps](#post-installation-steps) +- [📚 Complete Module Catalog](#📚-complete-module-catalog) +- [🛠️ Management & Operations](#🛠️-management--operations) + - [Common Workflows](#common-workflows) + - [Management Commands](#management-commands) + - [Database Operations](#database-operations) +- [🏗️ Advanced Configuration](#🏗️-advanced-configuration) + - [Architecture Overview](#architecture-overview) + - [Build System](#build-system) + - [Custom Configuration](#custom-configuration) +- [📜 Script Reference](#📜-script-reference) +- [🔧 Troubleshooting](#🔧-troubleshooting) +- [📄 Credits & Next Steps](#📄-credits--next-steps) + +--- ## 🚀 Quick Start @@ -19,27 +46,270 @@ cd AzerothCore-RealmMaster # 2. Configure your server ./setup.sh -# 3. Build (if using modules/playerbots) and deploy -./build.sh # Optional - only if you enabled C++ modules or playerbots -./deploy.sh # Always required +# 3. Deploy (if using modules/playerbots) and deploy +./build.sh # Optional - Will be triggered if required in deploy. c++ modules require compilation +./deploy.sh # Always required - Supports ssh remote deploy or local +./status.sh # Optional - Shows health and accesibility of all containers and current user data ``` **First deployment takes 30-60 minutes** for database setup and client data download. Subsequent starts are much faster. -See [Local Deployment](#-local-deployment) for detailed walkthrough. +See [Getting Started](#-getting-started) for detailed walkthrough. --- -## 📋 What Gets Installed Automatically +## 🎯 What You Get ### ✅ Core Server Components -- **AzerothCore 3.3.5a** - WotLK server application +- **AzerothCore 3.3.5a** - WotLK server application with 93+ enhanced modules - **MySQL 8.0** - Database with intelligent initialization and restoration -- **Smart Module System** - Automated module management and source builds (compiles the [mod-playerbots fork](https://github.com/mod-playerbots/azerothcore-wotlk/tree/Playerbot) whenever modules need C++ changes) +- **Smart Module System** - Automated module management and source builds - **phpMyAdmin** - Web-based database administration - **Keira3** - Game content editor and developer tools -### ✅ Available Enhanced Modules +### ✅ Automated Configuration +- **Intelligent Database Setup** - Smart backup detection, restoration, and conditional schema import +- **Backup Management** - Automated hourly/daily backups with intelligent restoration +- **Module Integration** - Automatic source builds when C++ modules are enabled +- **Service Orchestration** - Profile-based deployment (standard/playerbots/modules) + +--- + +## 📋 Getting Started + +Complete walkthrough for deploying on your local machine or remote server. + +### Local Deployment + +#### Step 1: Initial Setup + +**1.1 Clone the Repository** +```bash +git clone https://github.com/uprightbass360/AzerothCore-RealmMaster.git +cd AzerothCore-RealmMaster +``` + +**1.2 Run Interactive Setup** +```bash +./setup.sh +``` + +The setup wizard will guide you through: +- **Server Configuration**: IP address, ports, timezone +- **Module Selection**: Choose from 30+ available modules or use presets +- **Storage Paths**: Configure NFS/local storage locations +- **Playerbot Settings**: Max bots, account limits (if enabled) +- **Backup Settings**: Retention policies for automated backups +- **Permissions**: User/group IDs for file ownership + +**Setup Output:** Creates `.env` file with your configuration + +#### Step 2: Build Images (if using C++ modules or playerbots) + +```bash +./build.sh +``` + +**Skip this step if:** +- You're using only Lua/data modules +- You want vanilla AzerothCore without playerbots + +**Required when:** +- Playerbots enabled (`MODULE_PLAYERBOTS=1`) +- Any C++ module enabled (check `needs_build: true` in `config/modules.json`) + +**Build process:** +1. Clones AzerothCore source to `local-storage/source/` +2. Downloads and stages enabled modules +3. Compiles server binaries with modules +4. Creates Docker images tagged as `:authserver-modules-latest`, etc. +5. Takes 20-60 minutes depending on hardware + +#### Step 3: Deploy Services + +```bash +./deploy.sh +``` + +**Deployment flow:** +1. Validates environment configuration +2. Auto-selects Docker Compose profile: + - `services-standard` - Vanilla AzerothCore + - `services-playerbots` - Playerbot build + - `services-modules` - Custom C++ modules build +3. Starts services in dependency order: + - Database layer (`ac-mysql`, `ac-db-init`, `ac-db-import`, `ac-backup`) + - Module management (`ac-modules`, `ac-post-install`) + - Client data (`ac-client-data`) + - Game servers (`ac-authserver`, `ac-worldserver`) +4. Tails worldserver logs (Ctrl+C to detach safely) + +**First deployment takes longer** due to: +- Database schema import (~5-10 minutes) +- Client data download (~15GB, ~10-30 minutes) +- Module SQL execution + +**Subsequent deployments** restore from backups and skip imports. + +#### Step 4: Create Admin Account + +```bash +# Attach to worldserver console +docker attach ac-worldserver + +# Create admin account +account create admin yourpassword +account set gmlevel admin 3 -1 + +# Detach: Ctrl+P, Ctrl+Q (NOT Ctrl+C - that stops the server!) +``` + +#### Step 5: Connect Game Client + +Edit `realmlist.wtf` in your WoW 3.3.5a client folder: +``` +set realmlist 127.0.0.1 +``` + +For custom ports: +``` +set realmlist 127.0.0.1 8215 +``` + +#### Step 6: Access Management Tools + +- **phpMyAdmin**: http://localhost:8081 - Database administration +- **Keira3**: http://localhost:4201 - World database editor + +**Credentials:** +- Username: `root` +- Password: From `MYSQL_ROOT_PASSWORD` in `.env` + +### Remote Deployment + +Deploy your configured realm to a remote server while building images locally. + +#### Remote Deployment Workflow + +**Step 1: Configure & Build Locally** +```bash +# Interactive configuration with module selection +./setup.sh + +# Build custom images (if using C++ modules or playerbots) +./build.sh --yes +``` + +#### Step 2: Package & Transfer to Remote Host + +You can deploy remotely in two ways: + +**Option A: Interactive (Recommended)** +```bash +./deploy.sh +# When prompted, select "2) Remote host (package for SSH deployment)" +# Follow prompts for hostname, username, and paths +``` + +**Option B: Non-Interactive** +```bash +./deploy.sh --yes \ + --remote-host your-server.com \ + --remote-user youruser \ + --remote-project-dir /home/youruser/AzerothCore-RealmMaster +``` + +Optional flags: +- `--remote-port 2222` - Custom SSH port +- `--remote-identity ~/.ssh/custom_key` - Specific SSH key +- `--remote-skip-storage` - Don't sync storage directory (fresh install on remote) + +#### Step 3: Deploy on Remote Host +```bash +ssh your-server.com +cd /home/youruser/AzerothCore-RealmMaster +./deploy.sh --yes --no-watch +``` + +The remote deployment uses the images you built locally (no rebuild needed). + +#### Step 4: Verify Deployment +```bash +./status.sh +# Check service logs +docker logs ac-worldserver -f +``` + +#### What Gets Transferred + +The remote deployment process transfers: +- ✅ Docker images (exported to `local-storage/images/`) +- ✅ Project files (scripts, configs, docker-compose.yml, .env) +- ✅ Storage directory (unless `--remote-skip-storage` is used) +- ❌ Build artifacts (source code, compilation files stay local) + +#### Module Presets +- Define JSON presets in `profiles/*.json`. Each file contains: + - `modules` (array, required) – list of `MODULE_*` identifiers to enable. + - `label` (string, optional) – text shown in the setup menu (emoji welcome). + - `description` (string, optional) – short help text for maintainers. + - `order` (number, optional) – determines the menu position (lower appears first). + Example: + + ```json + { + "modules": ["MODULE_ELUNA", "MODULE_SOLO_LFG", "MODULE_SOLOCRAFT"], + "label": "⭐ Suggested Modules", + "description": "Baseline solo-friendly quality of life mix", + "order": 1 + } + ``` +- `setup.sh` automatically adds these presets to the module menu and enables the listed modules when selected or when `--module-config ` is provided. +- Built-in presets: + - `profiles/suggested-modules.json` – default solo-friendly QoL stack. + - `profiles/playerbots-suggested-modules.json` – suggested stack plus playerbots. + - `profiles/playerbots-only.json` – playerbot-focused profile (adjust `--playerbot-max-bots`). +- Custom example: + - `profiles/sam.json` – Sam's playerbot-focused profile (set `--playerbot-max-bots 3000` when using this preset). + +### Post-Installation Steps + +#### Create Admin Account + +```bash +# Attach to worldserver console +docker attach ac-worldserver + +# Create admin account +account create admin yourpassword +account set gmlevel admin 3 -1 + +# Detach: Ctrl+P, Ctrl+Q (NOT Ctrl+C - that stops the server!) +``` + +#### Access Management Tools + +- **phpMyAdmin**: http://localhost:8081 - Database administration +- **Keira3**: http://localhost:4201 - World database editor + +**Credentials:** +- Username: `root` +- Password: From `MYSQL_ROOT_PASSWORD` in `.env` + +#### Configure Server for Public Access + +```sql +-- Update realmlist for public server +UPDATE acore_auth.realmlist +SET address = 'your-public-ip', port = 8215 +WHERE id = 1; +``` + +See [Next Steps After Installation](#-credits--next-steps) for detailed setup and administration guidance. + +--- + +## 📚 Complete Module Catalog All modules are automatically downloaded, configured, and SQL scripts executed when enabled. Browse the complete collection of **93 modules** organized by category: @@ -221,223 +491,188 @@ All modules are automatically downloaded, configured, and SQL scripts executed w |--------|-------------| | **[skeleton-module](https://github.com/azerothcore/skeleton-module.git)** | Provides a minimal AzerothCore module scaffold for building new features | - -### ✅ Automated Configuration -- **Intelligent Database Setup** - Smart backup detection, restoration, and conditional schema import -- **Backup Management** - Automated hourly/daily backups with intelligent restoration -- **Module Integration** - Automatic source builds when C++ modules are enabled -- **Realmlist Configuration** - Server address and port setup -- **Service Orchestration** - Profile-based deployment (standard/playerbots/modules) -- **Health Monitoring** - Container health checks and restart policies - -### ✅ Lua Scripting Environment -- **Eluna Engine** - Built-in Lua scripting support with TypeScript compilation -- **Script Auto-loading** - Scripts automatically loaded from `storage/lua_scripts/` -- **Development Tools** - Script reloading with `.reload eluna` command -- **Volume Mounting** - Hot-reload development environment - --- -## 🏗️ Local Deployment +## 🛠️ Management & Operations -Complete walkthrough for deploying on your local machine. +Essential commands and workflows for operating your AzerothCore server. -### Step 1: Initial Setup +### Common Workflows -**1.1 Clone the Repository** -```bash -git clone https://github.com/uprightbass360/AzerothCore-RealmMaster.git -cd AzerothCore-RealmMaster -``` - -**1.2 Run Interactive Setup** -```bash -./setup.sh -``` - -The setup wizard will guide you through: -- **Server Configuration**: IP address, ports, timezone -- **Module Selection**: Choose from 30+ available modules or use presets -- **Storage Paths**: Configure NFS/local storage locations -- **Playerbot Settings**: Max bots, account limits (if enabled) -- **Backup Settings**: Retention policies for automated backups -- **Permissions**: User/group IDs for file ownership - -**Setup Output:** Creates `.env` file with your configuration - -### Step 2: Build Images (if using C++ modules or playerbots) +#### Changing Module Configuration ```bash -./build.sh -``` - -**Skip this step if:** -- You're using only Lua/data modules -- You want vanilla AzerothCore without playerbots - -**Required when:** -- Playerbots enabled (`MODULE_PLAYERBOTS=1`) -- Any C++ module enabled (check `needs_build: true` in `config/modules.json`) - -**Build process:** -1. Clones AzerothCore source to `local-storage/source/` -2. Downloads and stages enabled modules -3. Compiles server binaries with modules -4. Creates Docker images tagged as `:authserver-modules-latest`, etc. -5. Takes 20-60 minutes depending on hardware - -### Step 3: Deploy Services - -```bash -./deploy.sh -``` - -**Deployment flow:** -1. Validates environment configuration -2. Auto-selects Docker Compose profile: - - `services-standard` - Vanilla AzerothCore - - `services-playerbots` - Playerbot build - - `services-modules` - Custom C++ modules build -3. Starts services in dependency order: - - Database layer (`ac-mysql`, `ac-db-init`, `ac-db-import`, `ac-backup`) - - Module management (`ac-modules`, `ac-post-install`) - - Client data (`ac-client-data`) - - Game servers (`ac-authserver`, `ac-worldserver`) -4. Tails worldserver logs (Ctrl+C to detach safely) - -**First deployment takes longer** due to: -- Database schema import (~5-10 minutes) -- Client data download (~15GB, ~10-30 minutes) -- Module SQL execution - -**Subsequent deployments** restore from backups and skip imports. - -### Step 4: Create Admin Account - -```bash -# Attach to worldserver console -docker attach ac-worldserver - -# Create admin account -account create admin yourpassword -account set gmlevel admin 3 -1 - -# Detach: Ctrl+P, Ctrl+Q (NOT Ctrl+C - that stops the server!) -``` - -### Step 5: Connect Game Client - -Edit `realmlist.wtf` in your WoW 3.3.5a client folder: -``` -set realmlist 127.0.0.1 -``` - -For custom ports: -``` -set realmlist 127.0.0.1 8215 -``` - -### Step 6: Access Management Tools - -- **phpMyAdmin**: http://localhost:8081 - Database administration -- **Keira3**: http://localhost:4201 - World database editor - -**Credentials:** -- Username: `root` -- Password: From `MYSQL_ROOT_PASSWORD` in `.env` - ---- - -## 🚀 Remote Deployment - -Deploy your configured realm to a remote server while building images locally. - -### Remote Deployment Workflow - -**Step 1: Configure & Build Locally** -```bash -# Interactive configuration with module selection +# 1. Reconfigure modules ./setup.sh -# Build custom images (if using C++ modules or playerbots) +# 2. Rebuild if you changed C++ modules ./build.sh --yes -``` -**Step 2: Package & Transfer to Remote Host** - -You can deploy remotely in two ways: - -**Option A: Interactive (Recommended)** -```bash +# 3. Redeploy with new configuration ./deploy.sh -# When prompted, select "2) Remote host (package for SSH deployment)" -# Follow prompts for hostname, username, and paths ``` -**Option B: Non-Interactive** +#### Updating to Latest Code + ```bash -./deploy.sh --yes \ - --remote-host your-server.com \ - --remote-user youruser \ - --remote-project-dir /home/youruser/AzerothCore-RealmMaster +# Pull latest changes +git pull origin main + +# Rebuild images (if using modules/playerbots) +./build.sh --force + +# Restart services +docker compose down +./deploy.sh ``` -Optional flags: -- `--remote-port 2222` - Custom SSH port -- `--remote-identity ~/.ssh/custom_key` - Specific SSH key -- `--remote-skip-storage` - Don't sync storage directory (fresh install on remote) +#### Managing Services -**Step 3: Deploy on Remote Host** -```bash -ssh your-server.com -cd /home/youruser/AzerothCore-RealmMaster -./deploy.sh --yes --no-watch -``` - -The remote deployment uses the images you built locally (no rebuild needed). - -**Step 4: Verify Deployment** ```bash +# Check service status ./status.sh -# Check service logs + +# View logs docker logs ac-worldserver -f +docker logs ac-authserver -f +docker logs ac-mysql -f + +# Restart specific service +docker compose restart ac-worldserver + +# Stop all services +./scripts/stop-containers.sh + +# Start services +./scripts/start-containers.sh ``` -### What Gets Transferred +### Management Commands -The remote deployment process transfers: -- ✅ Docker images (exported to `local-storage/images/`) -- ✅ Project files (scripts, configs, docker-compose.yml, .env) -- ✅ Storage directory (unless `--remote-skip-storage` is used) -- ❌ Build artifacts (source code, compilation files stay local) +#### Health Monitoring +```bash +# Check realm status +./status.sh -### Module Presets -- Define JSON presets in `profiles/*.json`. Each file contains: - - `modules` (array, required) – list of `MODULE_*` identifiers to enable. - - `label` (string, optional) – text shown in the setup menu (emoji welcome). - - `description` (string, optional) – short help text for maintainers. - - `order` (number, optional) – determines the menu position (lower appears first). - Example: +# Watch services continuously +./status.sh --watch - ```json - { - "modules": ["MODULE_ELUNA", "MODULE_SOLO_LFG", "MODULE_SOLOCRAFT"], - "label": "⭐ Suggested Modules", - "description": "Baseline solo-friendly quality of life mix", - "order": 1 - } - ``` -- `setup.sh` automatically adds these presets to the module menu and enables the listed modules when selected or when `--module-config ` is provided. -- Built-in presets: - - `profiles/suggested-modules.json` – default solo-friendly QoL stack. - - `profiles/playerbots-suggested-modules.json` – suggested stack plus playerbots. - - `profiles/playerbots-only.json` – playerbot-focused profile (adjust `--playerbot-max-bots`). -- Custom example: - - `profiles/sam.json` – Sam's playerbot-focused profile (set `--playerbot-max-bots 3000` when using this preset). +# View service logs +docker logs ac-worldserver -f +docker logs ac-authserver -f + +# Check module management +docker logs ac-modules --tail 50 +``` + +#### Web Tools Access + +Once deployed, access the management tools in your browser: + +```bash +# Database Management (phpMyAdmin) +http://YOUR_SERVER_IP:8081 + +# World Database Editor (Keira3) +http://YOUR_SERVER_IP:4201 + +# Replace YOUR_SERVER_IP with your actual server address +# Example: http://192.168.1.100:4201 +``` + +**Note**: Initial Keira3 startup may show database connection errors until the world database import completes. This is expected behavior. + +#### Module Management + +```bash +# Reconfigure modules via interactive setup +./setup.sh + +# Build custom images with enabled modules +./build.sh # Interactive build (prompts for confirmation) +./build.sh --yes # Auto-confirm build +./build.sh --force # Force rebuild regardless of state + +# Deploy with automatic profile selection +./deploy.sh # Auto-detects and deploys correct profile +./deploy.sh --profile standard # Force standard AzerothCore +./deploy.sh --profile playerbots # Force playerbots branch +./deploy.sh --profile modules # Force custom modules build + +# Lower-level module operations +./scripts/stage-modules.sh # Download enabled modules +./scripts/setup-source.sh # Initialize AzerothCore source +./scripts/copy-module-configs.sh # Create module .conf files +./scripts/manage-modules-sql.sh # Execute module SQL scripts + +# Management tools +./scripts/deploy-tools.sh # Launch phpMyAdmin + Keira3 +``` + +#### Container Management +```bash +# Start specific services +./scripts/start-containers.sh # Start all configured containers + +# Stop services gracefully +./scripts/stop-containers.sh # Stop all containers + +# Monitor service health +./status.sh # Check realm status +./status.sh --watch # Watch services continuously +./status.sh --once # Single status check +``` + +#### Deployment Verification +```bash +# Quick health check +./scripts/verify-deployment.sh --skip-deploy --quick + +# Full deployment verification +./scripts/verify-deployment.sh +``` + +#### Cleaning Up + +```bash +# Soft cleanup (stop containers only) +./cleanup.sh --soft + +# Hard cleanup (remove containers and networks) +./cleanup.sh --hard + +# Nuclear cleanup (everything including images and data) +./cleanup.sh --nuclear --preserve-backups +``` + +### Database Operations + +```bash +# Access database via phpMyAdmin +open http://localhost:8081 + +# Direct MySQL access +docker exec -it ac-mysql mysql -u root -p + +# Manual backup operations +./scripts/backup.sh # Create immediate backup +./scripts/restore.sh YYYYMMDD_HHMMSS # Restore from specific backup + +# User data backup/import utilities +./scripts/backup-export.sh [output_dir] # Export user accounts & characters +./scripts/backup-import.sh [backup_dir] # Import user data from backup + +# View available backups +ls -la storage/backups/ +``` --- -## 🏗️ Architecture Overview +## 🏗️ Advanced Configuration + +Technical details for advanced users and system administrators. + +### Architecture Overview ### Container Profiles @@ -571,114 +806,24 @@ local-storage/ This separation ensures database and build artifacts stay on fast local storage while configuration, modules, and backups can be shared across hosts via NFS. ---- +### Build System +The build system is optimized for development and production deployments with Docker multi-stage builds and caching. -## 🛠️ Management Commands +**Build Configuration:** +- Automated dependency resolution and compilation +- Multi-stage Docker builds for optimal image sizes +- Build artifact caching for faster rebuilds +- Support for custom patches and modifications -### Health Monitoring -```bash -# Check realm status -./status.sh +### Custom Configuration +Advanced customization options for specialized deployments and development environments. -# Watch services continuously -./status.sh --watch +**Configuration Options:** +- Environment-specific overrides in `docker-compose.override.yml` +- Custom module loading and configuration +- Database schema modifications and patches +- Network and security configuration -# View service logs -docker logs ac-worldserver -f -docker logs ac-authserver -f - -# Check module management -docker logs ac-modules --tail 50 -``` - -### Web Tools Access - -Once deployed, access the management tools in your browser: - -```bash -# Database Management (phpMyAdmin) -http://YOUR_SERVER_IP:8081 - -# World Database Editor (Keira3) -http://YOUR_SERVER_IP:4201 - -# Replace YOUR_SERVER_IP with your actual server address -# Example: http://192.168.1.100:4201 -``` - -**Note**: Initial Keira3 startup may show database connection errors until the world database import completes. This is expected behavior. - -### Module Management - -```bash -# Reconfigure modules via interactive setup -./setup.sh - -# Build custom images with enabled modules -./build.sh # Interactive build (prompts for confirmation) -./build.sh --yes # Auto-confirm build -./build.sh --force # Force rebuild regardless of state - -# Deploy with automatic profile selection -./deploy.sh # Auto-detects and deploys correct profile -./deploy.sh --profile standard # Force standard AzerothCore -./deploy.sh --profile playerbots # Force playerbots branch -./deploy.sh --profile modules # Force custom modules build - -# Lower-level module operations -./scripts/stage-modules.sh # Download enabled modules -./scripts/setup-source.sh # Initialize AzerothCore source -./scripts/copy-module-configs.sh # Create module .conf files -./scripts/manage-modules-sql.sh # Execute module SQL scripts - -# Management tools -./scripts/deploy-tools.sh # Launch phpMyAdmin + Keira3 -``` - -### Database Operations -```bash -# Access database via phpMyAdmin -open http://localhost:8081 - -# Direct MySQL access -docker exec -it ac-mysql mysql -u root -p - -# Manual backup operations -./scripts/backup.sh # Create immediate backup -./scripts/restore.sh YYYYMMDD_HHMMSS # Restore from specific backup - -# User data backup/import utilities -./scripts/backup-export.sh [output_dir] # Export user accounts & characters -./scripts/backup-import.sh [backup_dir] # Import user data from backup - -# View available backups -ls -la storage/backups/ -``` - -### Container Management -```bash -# Start specific services -./scripts/start-containers.sh # Start all configured containers - -# Stop services gracefully -./scripts/stop-containers.sh # Stop all containers - -# Monitor service health -./status.sh # Check realm status -./status.sh --watch # Watch services continuously -./status.sh --once # Single status check -``` - -### Deployment Verification -```bash -# Quick health check -./scripts/verify-deployment.sh --skip-deploy --quick - -# Full deployment verification -./scripts/verify-deployment.sh -``` - ---- ## 📜 Script Reference @@ -688,8 +833,8 @@ ls -la storage/backups/ Interactive `.env` generator with module selection, server configuration, and deployment profiles. ```bash -./setup.sh # Interactive configuration -./setup.sh --module-config sam # Use predefined module preset +./setup.sh # Interactive configuration +./setup.sh --module-config sam # Use predefined module profile, check profiles directory ./setup.sh --playerbot-max-bots 3000 # Set playerbot limits ``` @@ -705,9 +850,9 @@ Interactive `.env` generator with module selection, server configuration, and de Compiles AzerothCore with enabled C++ modules and creates deployment-ready Docker images. ```bash -./build.sh # Interactive build -./build.sh --yes # Auto-confirm all prompts -./build.sh --force # Force rebuild regardless of state +./build.sh # Interactive build +./build.sh --yes # Auto-confirm all prompts +./build.sh --force # Force rebuild regardless of state ./build.sh --source-path /custom/path # Use custom source path ./build.sh --skip-source-setup # Skip source repo setup ``` @@ -723,7 +868,7 @@ Compiles AzerothCore with enabled C++ modules and creates deployment-ready Docke Module-aware deployment with automatic profile selection and optional remote deployment. ```bash -./deploy.sh # Interactive deployment +./deploy.sh # Interactive deployment ./deploy.sh --yes # Auto-confirm deployment ./deploy.sh --profile standard # Force standard AzerothCore ./deploy.sh --profile playerbots # Force playerbots branch @@ -748,7 +893,7 @@ Module-aware deployment with automatic profile selection and optional remote dep Comprehensive cleanup with multiple destruction levels and safety checks. ```bash -./cleanup.sh # Interactive cleanup +./cleanup.sh # Interactive cleanup ./cleanup.sh --soft # Stop containers only ./cleanup.sh --hard # Remove containers, networks, volumes ./cleanup.sh --nuclear # Full cleanup including images @@ -925,162 +1070,6 @@ Runs inside the backup container to provide scheduled database backups. --- ---- - -## 🔄 Common Workflows - -### Changing Module Configuration - -```bash -# 1. Reconfigure modules -./setup.sh - -# 2. Rebuild if you changed C++ modules -./build.sh --yes - -# 3. Redeploy with new configuration -./deploy.sh -``` - -### Updating to Latest Code - -```bash -# Pull latest changes -git pull origin main - -# Rebuild images (if using modules/playerbots) -./build.sh --force - -# Restart services -docker compose down -./deploy.sh -``` - -### Managing Services - -```bash -# Check service status -./status.sh - -# View logs -docker logs ac-worldserver -f -docker logs ac-authserver -f -docker logs ac-mysql -f - -# Restart specific service -docker compose restart ac-worldserver - -# Stop all services -./scripts/stop-containers.sh - -# Start services -./scripts/start-containers.sh -``` - -### Database Management - -```bash -# Backup user data -./scripts/backup-export.sh - -# Restore user data -./scripts/backup-import.sh /path/to/backup - -# Access database directly -docker exec -it ac-mysql mysql -u root -p -``` - -### Cleaning Up - -```bash -# Soft cleanup (stop containers only) -./cleanup.sh --soft - -# Hard cleanup (remove containers and networks) -./cleanup.sh --hard - -# Nuclear cleanup (everything including images and data) -./cleanup.sh --nuclear --preserve-backups -``` - ---- - -## 🔧 Advanced Configuration - -### Module-Specific Requirements - -Some modules require additional manual configuration after deployment: - -#### mod-playerbots -- Requires playerbots-specific AzerothCore branch -- Automatically handled when `MODULE_PLAYERBOTS=1` is set in setup - -#### mod-individual-progression -- **Client patches required**: `patch-V.mpq` (found in module storage) -- **Server config**: Add `EnablePlayerSettings = 1` and `DBC.EnforceItemAttributes = 0` to worldserver.conf - -#### mod-transmog / mod-npc-* modules -- **NPC spawning required**: Use GM commands to spawn service NPCs -- Examples: - ```bash - .npc add 190010 # Transmog NPC (mod-transmog) - .npc add 601016 # Buff NPC (mod-npc-buffer) - .npc add 601026 # Beastmaster NPC "White Fang" (mod-npc-beastmaster) - .npc add 601015 # Enchanter NPC (mod-npc-enchanter) - .npc add 290011 # Reagent Bank NPC (mod-reagent-bank) - .npc add 500030 # Guild House vendor (mod-guildhouse) - .npc add 601072 # Morph Summon NPC (mod-morphsummon) - .npc add 98500 # Arena Replay NPC (mod-arena-replay) - .npc add 100155 # Tic-Tac-Toe game NPC (mod-tic-tac-toe) - .npc add 1128001 # Mythic Mode NPC (mod-zone-difficulty, spawns in raids/heroic dungeons) - .npc add 1128002 # Mythic Rewards NPC (mod-zone-difficulty) - ``` - -#### mod-arac (All Races All Classes) -- **Client patches required**: `Patch-A.MPQ` (found in module storage) -- **Installation**: Players must copy to `WoW/Data/` directory -- **Server-side**: DBC files automatically applied during module installation - -### Profile Selection - -The deployment system uses Docker Compose profiles to manage different configurations: - -| Profile | When Used | Image Source | -|---------|-----------|--------------| -| `services-standard` | No C++ modules, no playerbots | Upstream `acore/*` images | -| `services-playerbots` | `MODULE_PLAYERBOTS=1` + no other C++ modules | Project-built `:*-playerbots` | -| `services-modules` | Any C++ module enabled (incl. playerbots + others) | Project-built `:*-modules-latest` | - -**Profile selection is automatic** - `deploy.sh` analyzes your `.env` and selects the appropriate profile. - -### Build System - -**When builds are required:** -- Playerbots enabled (`MODULE_PLAYERBOTS=1`) -- Any C++ module enabled (see `needs_build: true` in `config/modules.json`) - -**Build workflow (`./build.sh`):** -1. Clones AzerothCore source to `local-storage/source/` - - Uses [mod-playerbots fork](https://github.com/mod-playerbots/azerothcore-wotlk) when playerbots enabled - - Uses [main AzerothCore](https://github.com/azerothcore/azerothcore-wotlk) otherwise -2. Stages enabled C++ modules into `modules/` directory within source -3. Compiles binaries using Dockerized build environment -4. Creates and tags images: - - `:authserver-playerbots` / `authserver-modules-latest` - - `:worldserver-playerbots` / `worldserver-modules-latest` - - `:client-data-playerbots` (playerbots only) - - `:db-import-playerbots` (playerbots only) - -**Build time:** 20-60 minutes depending on hardware and module count - -### MySQL Runtime Storage & Timezone Data - -- `MYSQL_RUNTIME_TMPFS_SIZE` controls the in-memory datadir used by the MySQL container. Increase this value if you see `No space left on device` errors inside `/var/lib/mysql-runtime`. -- `MYSQL_INNODB_REDO_LOG_CAPACITY` increases redo log headroom (defaults to `512M`). Raise it further if logs report `log_checkpointer` lag. -- `HOST_ZONEINFO_PATH` should point to a host directory containing timezone definitions (defaults to `/usr/share/zoneinfo`). The path is mounted read-only so the container can load timezone tables without extra image customization. Set it to a valid directory on your host if your OS stores zoneinfo elsewhere. - ---- - ## 🔧 Troubleshooting ### Common Issues @@ -1184,69 +1173,28 @@ ImportBackup/ # Used by scripts/backup-import.sh └── acore_world.sql[.gz] # Optional: world data ``` ---- -## 📚 Advanced Deployment Options -### Custom Environment Configuration -```bash -# Setup with specific module preset -./setup.sh --module-config sam --playerbot-max-bots 3000 -# Build with custom source path -./build.sh --source-path /path/to/custom/azerothcore --force -# Deploy with specific options -./deploy.sh --profile modules --no-watch --keep-running -``` +## 📄 Credits & Next Steps -### Manual Source Management -```bash -# Initialize/update AzerothCore source repository -./scripts/setup-source.sh +### Project Credits -# Stage modules into source tree (called by build.sh) -./scripts/stage-modules.sh +This project builds upon: +- **[AzerothCore](https://github.com/azerothcore/azerothcore-wotlk)** - Core server application +- **[AzerothCore Module Community](https://github.com/azerothcore)** - Enhanced gameplay modules -# Build images from prepared source -./build.sh --skip-source-setup -``` +#### Key Features +- ✅ **Fully Automated Setup** - Interactive configuration and deployment +- ✅ **Intelligent Module System** - Automatic source builds and profile selection +- ✅ **Automated Backups** - Health checks, scheduled backups, and monitoring +- ✅ **Docker-Based** - Containerized deployment for easy setup and portability +- ✅ **Comprehensive Documentation** - Clear setup and troubleshooting guides -### Manual Service Control -```bash -# Stop all services -docker compose --profile db --profile services-standard \ - --profile services-playerbots --profile services-modules \ - --profile client-data --profile modules --profile tools down +### Next Steps After Installation -# Start specific profile -docker compose --profile db --profile services-playerbots --profile tools up -d - -# Restart after configuration changes -docker compose restart ac-worldserver ac-authserver -``` - -### Force Rebuild -```bash -# Force complete rebuild (ignores build state markers) -./build.sh --force - -# Clean build artifacts and rebuild -rm -rf local-storage/source local-storage/images -./build.sh -``` - ---- - -## 🧭 Ownership Hardening TODO - -- [ ] MySQL container: prototype running as `${CONTAINER_USER}` (or via Docker userns remap/custom entrypoint) so shared `${STORAGE_PATH}` data stays user-owned while preserving required init privileges. - ---- - -## 🎯 Next Steps After Installation - -### In-Game Setup +#### In-Game Setup 1. **Create GM Account** ```bash @@ -1268,7 +1216,7 @@ rm -rf local-storage/source local-storage/images WHERE id = 1; ``` -### Server Administration +#### Server Administration 1. **Set Up Monitoring** ```bash @@ -1298,7 +1246,7 @@ rm -rf local-storage/source local-storage/images - Auto-loaded on worldserver start - Reload with `.reload eluna` in-game -### Performance Tuning +#### Performance Tuning 1. **Database Optimization** - Adjust `MYSQL_INNODB_BUFFER_POOL_SIZE` in `.env` @@ -1314,17 +1262,3 @@ rm -rf local-storage/source local-storage/images - `8215` (worldserver) - Configure NAT/port forwarding for public access ---- - -## 📄 Project Credits - -This project builds upon: -- **[AzerothCore](https://github.com/azerothcore/azerothcore-wotlk)** - Core server application -- **[AzerothCore Module Community](https://github.com/azerothcore)** - Enhanced gameplay modules - -### Key Features -- ✅ **Fully Automated Setup** - Interactive configuration and deployment -- ✅ **Intelligent Module System** - Automatic source builds and profile selection -- ✅ **Automated Backups** - Health checks, scheduled backups, and monitoring -- ✅ **Docker-Based** - Containerized deployment for easy setup and portability -- ✅ **Comprehensive Documentation** - Clear setup and troubleshooting guides diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000..faad459 Binary files /dev/null and b/img/logo.png differ