From c2ebb2f794d2e88350c9e0490ce0189ea89cb0ba Mon Sep 17 00:00:00 2001 From: uprightbass360 Date: Tue, 30 Sep 2025 04:36:57 -0400 Subject: [PATCH] documentation cleanup --- DEPLOYMENT-README.md | 363 ------------------------------------------- DEPLOYMENT_GUIDE.md | 152 ------------------ readme.md | 203 +++++++++++++----------- 3 files changed, 109 insertions(+), 609 deletions(-) delete mode 100644 DEPLOYMENT-README.md delete mode 100644 DEPLOYMENT_GUIDE.md diff --git a/DEPLOYMENT-README.md b/DEPLOYMENT-README.md deleted file mode 100644 index 9ef2115..0000000 --- a/DEPLOYMENT-README.md +++ /dev/null @@ -1,363 +0,0 @@ -# AzerothCore Automated Deployment System - -## 🚀 Overview - -This deployment system provides automated installation, monitoring, and management of AzerothCore World of Warcraft server on Debian systems with Docker. It features layered service deployment, comprehensive monitoring, and system service integration. - -## 📋 Features - -- **Layered Deployment**: Database → Services → Optional → Tools -- **Real-time Monitoring**: Health checks, alerts, and web dashboard -- **System Service**: Automatic startup on boot with systemd -- **Resource Management**: CPU, memory, and disk monitoring -- **Backup System**: Automated database backups with retention -- **Security**: User isolation, firewall rules, and secure defaults -- **Web Interface**: Real-time status at http://localhost:8080 - -## 🛠️ Prerequisites - -### System Requirements -- **OS**: Debian 10+ (Ubuntu 18.04+ compatible) -- **RAM**: 4GB minimum, 8GB recommended -- **Disk**: 20GB free space minimum -- **Network**: Internet access for image downloads - -### Software Requirements -```bash -# Install Docker -curl -fsSL https://get.docker.com | sh -sudo usermod -aG docker $USER - -# Install Docker Compose -sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose - -# Reboot to apply group changes -sudo reboot -``` - -## 🚀 Quick Start - -### 1. Test Installation -```bash -# Clone or download the AzerothCore deployment files -cd /path/to/azerothcore-compose2 - -# Run comprehensive tests -./test-deployment.sh all - -# Expected output: "All tests passed! 🎉" -``` - -### 2. Manual Deployment (Development) -```bash -# Start the stack manually -./azerothcore-deploy.sh start - -# Monitor status -./azerothcore-deploy.sh status - -# View logs -./azerothcore-deploy.sh logs ac-worldserver - -# Stop the stack -./azerothcore-deploy.sh stop -``` - -### 3. System Service Installation (Production) -```bash -# Install as system service -sudo ./install-system-service.sh install - -# Start services -sudo systemctl start azerothcore - -# Check status -sudo systemctl status azerothcore - -# Enable auto-start on boot (already enabled by installer) -sudo systemctl enable azerothcore -``` - -## 📊 Monitoring & Management - -### Web Dashboard -- **URL**: http://localhost:8080 -- **Features**: Real-time service status, resource usage, recent alerts -- **Auto-refresh**: Updates every 30 seconds - -### Command Line Monitoring -```bash -# Real-time monitoring -./azerothcore-monitor.sh monitor - -# Generate status page -./azerothcore-monitor.sh status - -# View alerts -./azerothcore-monitor.sh alerts - -# View metrics -./azerothcore-monitor.sh metrics -``` - -### System Service Management -```bash -# Start services -sudo systemctl start azerothcore - -# Stop services -sudo systemctl stop azerothcore - -# Restart services -sudo systemctl restart azerothcore - -# Check status -sudo systemctl status azerothcore - -# View logs -sudo journalctl -u azerothcore -f - -# Check monitoring service -sudo systemctl status azerothcore-monitor - -# Check web service -sudo systemctl status azerothcore-web -``` - -## 🔧 Configuration - -### Environment Files -- `.env-database-local`: Local development settings -- `.env-production`: Production optimized settings (auto-created during system install) - -### Key Configuration Options -```bash -# Database settings -MYSQL_ROOT_PASSWORD=azerothcore123 -DB_WAIT_RETRIES=60 -DB_WAIT_SLEEP=10 - -# Performance settings -MYSQL_MAX_CONNECTIONS=200 -MYSQL_INNODB_BUFFER_POOL_SIZE=512M -PLAYERBOT_MAX_BOTS=20 - -# Storage paths -STORAGE_PATH=./local-data # or /opt/azerothcore/data for system install -``` - -## 🗂️ Directory Structure - -``` -azerothcore-compose2/ -├── azerothcore-deploy.sh # Main deployment script -├── azerothcore-monitor.sh # Monitoring script -├── install-system-service.sh # System service installer -├── test-deployment.sh # Test suite -├── docker-compose-*.yml # Service layer definitions -├── .env-* # Environment configurations -├── deployment-logs/ # Deployment logs -├── monitoring-logs/ # Monitoring logs -├── monitoring-web/ # Web dashboard files -├── local-data/ # Application data -├── backups/ # Database backups -└── backup-scripts/ # Backup scripts -``` - -## 🚀 Deployment Layers - -### 1. Database Layer -- **Services**: MySQL, DB Init, DB Import, Backup, Persistence -- **Purpose**: Core database infrastructure -- **Startup Time**: 2-5 minutes - -### 2. Services Layer -- **Services**: Auth Server, World Server, Client Data -- **Purpose**: Core game servers -- **Startup Time**: 5-15 minutes (includes 15GB client data download) - -### 3. Optional Layer -- **Services**: Eluna, Modules, Playerbots -- **Purpose**: Enhanced features and scripting -- **Startup Time**: 1-2 minutes - -### 4. Tools Layer -- **Services**: PHPMyAdmin, Keira3, Grafana, InfluxDB -- **Purpose**: Management and monitoring interfaces -- **Startup Time**: 2-3 minutes - -## 🔍 Troubleshooting - -### Common Issues - -#### Services Not Starting -```bash -# Check Docker daemon -sudo systemctl status docker - -# Check logs -./azerothcore-deploy.sh logs [service-name] - -# Check resource usage -docker stats - -# Restart specific layer -docker-compose -f docker-compose-azerothcore-database.yml restart -``` - -#### Database Connection Issues -```bash -# Test database connectivity -docker exec ac-mysql mysql -uroot -pazerothcore123 -e "SELECT 1;" - -# Check database logs -docker logs ac-mysql - -# Verify network -docker network ls | grep azerothcore -``` - -#### Web Dashboard Not Accessible -```bash -# Check web service -sudo systemctl status azerothcore-web - -# Check port availability -sudo netstat -tlnp | grep 8080 - -# Restart web service -sudo systemctl restart azerothcore-web -``` - -#### High Resource Usage -```bash -# Check container stats -docker stats - -# Reduce playerbot count -# Edit .env: PLAYERBOT_MAX_BOTS=5 - -# Reduce MySQL buffer size -# Edit .env: MYSQL_INNODB_BUFFER_POOL_SIZE=256M -``` - -### Log Locations - -#### Manual Deployment -- **Deployment Logs**: `./deployment-logs/` -- **Monitoring Logs**: `./monitoring-logs/` -- **Container Logs**: `docker logs [container-name]` - -#### System Service -- **System Logs**: `sudo journalctl -u azerothcore` -- **Application Logs**: `/opt/azerothcore/deployment-logs/` -- **Monitoring Logs**: `/opt/azerothcore/monitoring-logs/` - -## 🔐 Security Considerations - -### Default Security Features -- Dedicated service user (`azerothcore`) -- Firewall rules for game ports only -- Database access restricted to localhost -- Non-root container execution where possible -- Secure systemd service configuration - -### Additional Security Recommendations -```bash -# Configure UFW firewall -sudo ufw enable -sudo ufw default deny incoming -sudo ufw allow ssh - -# Update system regularly -sudo apt update && sudo apt upgrade - -# Monitor logs for suspicious activity -sudo journalctl -u azerothcore | grep -i error - -# Change default passwords -# Edit .env: MYSQL_ROOT_PASSWORD=your-secure-password -``` - -## 🔄 Backup & Recovery - -### Automated Backups -- **Schedule**: Daily at 3:00 AM (configurable) -- **Location**: `./backups/` or `/opt/azerothcore/backups/` -- **Retention**: 7 days (configurable) -- **Format**: SQL dumps with timestamp - -### Manual Backup -```bash -# Create immediate backup -docker exec ac-mysql mysqldump -uroot -pazerothcore123 --all-databases > backup-$(date +%Y%m%d).sql - -# Backup with backup script -./backup-scripts/backup.sh -``` - -### Recovery -```bash -# Stop services -./azerothcore-deploy.sh stop - -# Restore from backup -docker run --rm -v $(pwd)/backups:/backups -v azerothcore_mysql_data:/var/lib/mysql mysql:8.0 \ - sh -c "mysql -uroot -pazerothcore123 < /backups/your-backup.sql" - -# Restart services -./azerothcore-deploy.sh start -``` - -## 🗑️ Uninstallation - -### Manual Deployment -```bash -# Stop and remove containers -./azerothcore-deploy.sh stop -docker system prune -a --volumes - -# Remove data (optional) -rm -rf local-data backups deployment-logs monitoring-logs -``` - -### System Service -```bash -# Run uninstaller -sudo /opt/azerothcore/uninstall.sh - -# Follow prompts to remove data directories -``` - -## 📞 Support - -### Documentation -- [AzerothCore Wiki](https://www.azerothcore.org/wiki/) -- [Docker Documentation](https://docs.docker.com/) -- [Docker Compose Reference](https://docs.docker.com/compose/) - -### Getting Help -1. Check logs for error messages -2. Run diagnostic tests: `./test-deployment.sh all` -3. Search [AzerothCore Discord](https://discord.gg/azerothcore) -4. Review [GitHub Issues](https://github.com/azerothcore/azerothcore-wotlk/issues) - -### Performance Tuning -- Adjust `PLAYERBOT_MAX_BOTS` based on server capacity -- Tune MySQL settings for your hardware -- Monitor resource usage and scale accordingly -- Consider SSD storage for better I/O performance - ---- - -## 🎉 Enjoy Your AzerothCore Server! - -Your World of Warcraft server is now ready to accept connections: - -- **Auth Server**: `localhost:3784` -- **World Server**: `localhost:8215` -- **Web Dashboard**: `http://localhost:8080` -- **Database**: `localhost:64306` (internal use) - -Happy gaming! 🏰⚔️🛡️ \ No newline at end of file diff --git a/DEPLOYMENT_GUIDE.md b/DEPLOYMENT_GUIDE.md deleted file mode 100644 index 715e87b..0000000 --- a/DEPLOYMENT_GUIDE.md +++ /dev/null @@ -1,152 +0,0 @@ -# AzerothCore Deployment Guide - -## 🚀 Quick Deployment Options - -### **Option 1: Fast Deployment (Use Cached Images)** -Set this in `.env-core` for fastest deployment: -```bash -IMAGE_PULL_POLICY=if_not_present -SKIP_CLIENT_DATA_IF_EXISTS=true -ENABLE_PARALLEL_STARTUP=true -``` - -### **Option 2: Always Fresh Images** -For production deployments with latest images: -```bash -IMAGE_PULL_POLICY=always -SKIP_CLIENT_DATA_IF_EXISTS=false -ENABLE_PARALLEL_STARTUP=true -``` - -### **Option 3: Offline Deployment** -If images are already present locally: -```bash -IMAGE_PULL_POLICY=never -SKIP_CLIENT_DATA_IF_EXISTS=true -ENABLE_PARALLEL_STARTUP=true -``` - -## 📊 Image Pull Policy Options - -| Policy | Speed | Reliability | Use Case | -|--------|-------|-------------|----------| -| `if_not_present` | ⚡ Fast | ✅ Good | **Recommended** - Best balance | -| `always` | 🐌 Slow | ✅ Best | Production with latest images | -| `never` | ⚡ Fastest | ⚠️ Risk | Offline or cached deployments | - -## 🛠️ Pre-deployment Steps (Optional) - -To avoid Portainer timeouts, pre-pull images manually: - -```bash -# Core AzerothCore images (large downloads) -docker pull acore/ac-wotlk-db-import:14.0.0-dev -docker pull acore/ac-wotlk-authserver:14.0.0-dev -docker pull acore/ac-wotlk-worldserver:14.0.0-dev -docker pull acore/eluna-ts:master - -# Base images (usually cached) -docker pull mysql:8.0 -docker pull alpine:latest -docker pull alpine/git:latest -``` - -## 🏗️ Staged Deployment Strategy - -If experiencing timeouts, deploy in stages: - -### **Stage 1: Database Layer** -Deploy only MySQL and database initialization: -```yaml -services: - ac-mysql-init: ... - ac-mysql: ... - ac-db-init: ... - ac-db-import: ... -``` - -### **Stage 2: Core Services** -Add authentication and world servers: -```yaml -services: - ac-authserver: ... - ac-client-data: ... - ac-worldserver: ... -``` - -### **Stage 3: Optional Services** -Add monitoring and modules: -```yaml -services: - ac-eluna: ... - ac-modules: ... - ac-backup: ... -``` - -## 🎯 Troubleshooting Deployment Issues - -### **504 Gateway Timeout in Portainer** -- **Cause**: Large image downloads or client data download (15GB) -- **Solutions**: - 1. Set `IMAGE_PULL_POLICY=if_not_present` - 2. Pre-pull images manually - 3. Use staged deployment - 4. Increase Portainer timeout settings - -### **Container "Already Exists" Errors** -- **Cause**: Previous deployment attempts left containers -- **Solution**: Remove old containers first: -```bash -docker container prune -f -docker volume prune -f -``` - -### **Client Data Download Timeout** -- **Cause**: 15GB download takes time -- **Solutions**: - 1. Set `SKIP_CLIENT_DATA_IF_EXISTS=true` - 2. Pre-download data manually - 3. Use faster internet connection - -## 📋 Environment Variables for Speed Optimization - -```bash -# Image handling -IMAGE_PULL_POLICY=if_not_present - -# Deployment optimization -SKIP_CLIENT_DATA_IF_EXISTS=true -ENABLE_PARALLEL_STARTUP=true - -# Reduce health check intervals for faster startup -MYSQL_HEALTHCHECK_INTERVAL=5s -MYSQL_HEALTHCHECK_TIMEOUT=3s -AUTH_HEALTHCHECK_INTERVAL=10s -WORLD_HEALTHCHECK_INTERVAL=15s -``` - -## 🚨 Production vs Development Settings - -### **Development (Fast Deployment)** -```bash -IMAGE_PULL_POLICY=if_not_present -SKIP_CLIENT_DATA_IF_EXISTS=true -MYSQL_HEALTHCHECK_INTERVAL=5s -``` - -### **Production (Reliable Deployment)** -```bash -IMAGE_PULL_POLICY=always -SKIP_CLIENT_DATA_IF_EXISTS=false -MYSQL_HEALTHCHECK_INTERVAL=15s -``` - -## 📊 Expected Deployment Times - -| Configuration | First Deploy | Subsequent Deploys | -|---------------|--------------|-------------------| -| Fast (cached) | 5-10 minutes | 2-3 minutes | -| Standard | 15-20 minutes | 5-8 minutes | -| Always pull | 20-30 minutes | 15-20 minutes | - -*Times vary based on internet speed and server performance* \ No newline at end of file diff --git a/readme.md b/readme.md index e0412ec..1a001e3 100644 --- a/readme.md +++ b/readme.md @@ -96,17 +96,17 @@ This project provides a production-ready AzerothCore deployment using Docker/Pod ## Project Structure ``` -acore-compose/ -├── docker-compose.yml # Main orchestration file -├── .env # Environment configuration -├── data/ # Game data files (maps, vmaps, etc.) -│ ├── dbc/ # Client database files -│ ├── maps/ # Map files -│ ├── vmaps/ # Visual map files -│ └── mmaps/ # Movement map files (optional) -├── backups/ # Automated backup storage -├── backup-scripts/ # Database backup automation -└── assets/ # Web interface assets +acore-compose2/ +├── docker-compose-azerothcore-database.yml # Database layer +├── docker-compose-azerothcore-services.yml # Game services layer +├── docker-compose-azerothcore-tools.yml # Management tools layer +├── docker-compose-azerothcore-database.env # Database configuration +├── docker-compose-azerothcore-services.env # Services configuration +├── docker-compose-azerothcore-tools.env # Tools configuration +├── docker-compose-azerothcore-optional.env # Optional services config +├── backup-scripts/ # Database backup automation +├── local-data/ # Local storage (when not using NFS) +└── readme.md # This documentation ``` ## Container Architecture @@ -150,44 +150,43 @@ graph TD ```bash # Clone the repository -git clone https://github.com/uprightbass360/acore-compose.git -cd acore-compose +git clone https://github.com/uprightbass360/acore-compose2.git +cd acore-compose2 -# Environment file is already configured with defaults -# Modify .env file for your specific deployment: -# - EXTERNAL_IP: Your server's public IP -# - MYSQL_ROOT_PASSWORD: Strong password (default: azerothcore123) +# Environment files are pre-configured with defaults +# Modify the relevant .env files for your deployment: +# - docker-compose-azerothcore-database.env: Database settings +# - docker-compose-azerothcore-services.env: Game server settings +# - docker-compose-azerothcore-tools.env: Management tools settings ``` ### Step 2: Prepare Game Data Files -The server requires extracted game data from the WoW 3.3.5a client: +The server automatically downloads and extracts game data on first run. The `ac-client-data` service will: +- Download the latest client data from wowgaming/client-data releases (~15GB) +- Extract maps, vmaps, mmaps, and DBC files +- Cache the download for future deployments +- Verify data integrity -```bash -# Create data directory structure -mkdir -p data/{dbc,maps,vmaps,mmaps} - -# Option A: Copy from existing extraction -cp -r /path/to/extracted/dbc/* data/dbc/ -cp -r /path/to/extracted/maps/* data/maps/ -cp -r /path/to/extracted/vmaps/* data/vmaps/ -cp -r /path/to/extracted/mmaps/* data/mmaps/ # Optional - -# Option B: Extract from WoW client -# Use AzerothCore extraction tools on your WoW 3.3.5a client -``` +No manual data extraction is required, but ensure you have sufficient disk space and bandwidth. ### Step 3: Deploy the Stack +Deploy services in the correct order: + ```bash -# Deploy all services -docker-compose up -d +# Step 1: Deploy database layer +docker compose --env-file docker-compose-azerothcore-database.env -f docker-compose-azerothcore-database.yml up -d -# Monitor deployment -docker-compose logs -f +# Step 2: Wait for database initialization, then deploy services +docker compose --env-file docker-compose-azerothcore-services.env -f docker-compose-azerothcore-services.yml up -d -# Verify all containers are running -docker ps | grep ac- +# Step 3: Deploy management tools (optional) +docker compose --env-file docker-compose-azerothcore-tools.env -f docker-compose-azerothcore-tools.yml up -d + +# Monitor deployment progress +docker logs ac-client-data -f # Watch data download/extraction +docker logs ac-db-init -f # Watch database initialization ``` ### Step 4: Initial Database Import @@ -229,38 +228,27 @@ set realmlist YOUR_SERVER_IP ### Environment Variables -All configuration is managed through the `.env` file. Key variables: +Configuration is managed through separate `.env` files for each layer: -#### Database Settings -- `MYSQL_ROOT_PASSWORD`: Database root password -- `MYSQL_HOST`: Database hostname (default: ac-mysql) -- `DB_AUTH_NAME`: Authentication database name -- `DB_WORLD_NAME`: World database name -- `DB_CHARACTERS_NAME`: Characters database name +#### Database Layer (`docker-compose-azerothcore-database.env`) +- `MYSQL_ROOT_PASSWORD`: Database root password (default: azerothcore123) +- `STORAGE_PATH`: Data storage path (default: /nfs/containers/azerothcore) +- `NETWORK_SUBNET`: Docker network subnet +- `BACKUP_RETENTION_DAYS`: Backup retention period -#### Network Settings -- `EXTERNAL_IP`: Public IP for realm list -- `EXTERNAL_BASE_URL`: Custom domain URL (e.g., https://acore.example.com) +#### Services Layer (`docker-compose-azerothcore-services.env`) - `DOCKER_AUTH_EXTERNAL_PORT`: Auth server external port (3784) - `DOCKER_WORLD_EXTERNAL_PORT`: World server external port (8215) - `DOCKER_SOAP_EXTERNAL_PORT`: SOAP API port (7778) +- `PLAYERBOT_ENABLED`: Enable/disable playerbots (1/0) +- `PLAYERBOT_MAX_BOTS`: Maximum number of bots (default: 40) -#### Web Interface Settings (Collision-Free Ports) +#### Tools Layer (`docker-compose-azerothcore-tools.env`) - `PMA_EXTERNAL_PORT`: PHPMyAdmin port (8081) - `KEIRA3_EXTERNAL_PORT`: Database editor port (4201) - `GF_EXTERNAL_PORT`: Grafana monitoring port (3001) - `INFLUXDB_EXTERNAL_PORT`: InfluxDB metrics port (8087) - -#### Performance Settings -- `MAX_PLAYERS`: Maximum concurrent players -- `PROCESS_PRIORITY`: Process priority level -- `MAX_CONNECTIONS`: MySQL max connections - -#### Game Rates -- `RATE_XP_KILL`: Experience from kills multiplier -- `RATE_XP_QUEST`: Experience from quests multiplier -- `RATE_DROP_MONEY`: Money drop rate multiplier -- `RATE_DROP_ITEMS`: Item drop rate multiplier +- `STORAGE_PATH_TOOLS`: Tools storage path (default: ./volumes-tools) ### Realm Configuration @@ -389,11 +377,19 @@ docker exec ac-mysql mysqlcheck \ #### Update Containers: ```bash -# Pull latest images -docker-compose pull +# Pull latest images for database layer +docker-compose -f docker-compose-azerothcore-database.yml pull + +# Pull latest images for services layer +docker-compose -f docker-compose-azerothcore-services.yml pull + +# Pull latest images for tools layer +docker-compose -f docker-compose-azerothcore-tools.yml pull # Recreate containers with new images -docker-compose up -d --force-recreate +docker-compose -f docker-compose-azerothcore-database.yml up -d --force-recreate +docker-compose -f docker-compose-azerothcore-services.yml up -d --force-recreate +docker-compose -f docker-compose-azerothcore-tools.yml up -d --force-recreate # Remove old unused images docker image prune -a @@ -401,14 +397,14 @@ docker image prune -a #### Update AzerothCore: ```bash -# Stop services -docker-compose stop ac-worldserver ac-authserver +# Stop services layer +docker-compose -f docker-compose-azerothcore-services.yml stop # Update database -docker-compose up ac-db-import +docker-compose -f docker-compose-azerothcore-database.yml up ac-db-import -# Restart services -docker-compose start ac-worldserver ac-authserver +# Restart services layer +docker-compose -f docker-compose-azerothcore-services.yml up -d ``` ### Log Management @@ -442,7 +438,7 @@ EOF ### Automated Backups -The `ac-backup` container provides automated backups. Configure via environment: +The database layer includes an automated backup service. Configure via environment variables in `docker-compose-azerothcore-database.env`: - `BACKUP_CRON_SCHEDULE`: Cron expression (default: "0 3 * * *" - 3 AM daily) - `BACKUP_RETENTION_DAYS`: Days to keep backups (default: 7) @@ -496,10 +492,7 @@ docker logs ac-mysql --tail 50 #### 4. Permission Denied Errors **Error**: Various permission denied messages -**Solution**: Run containers as root (configured in .env): -```bash -DOCKER_USER=root -``` +**Solution**: Containers are configured to run as root to handle NFS permissions. Check volume mount permissions and ensure storage paths are accessible. ### Debug Commands @@ -527,25 +520,29 @@ docker exec ac-worldserver ls -la /azerothcore/data/ #### Complete Reset: ```bash -# Stop all containers -docker-compose down +# Stop all layers +docker-compose -f docker-compose-azerothcore-tools.yml down +docker-compose -f docker-compose-azerothcore-services.yml down +docker-compose -f docker-compose-azerothcore-database.yml down # Remove all volumes (WARNING: Deletes all data) -docker-compose down -v +docker volume prune -f # Remove all containers and images docker system prune -a -# Start fresh -docker-compose up -d +# Start fresh (in order) +docker-compose -f docker-compose-azerothcore-database.yml up -d +docker-compose -f docker-compose-azerothcore-services.yml up -d +docker-compose -f docker-compose-azerothcore-tools.yml up -d ``` #### Reset Specific Service: ```bash # Reset worldserver only -docker-compose stop ac-worldserver -docker-compose rm -f ac-worldserver -docker-compose up -d ac-worldserver +docker-compose -f docker-compose-azerothcore-services.yml stop ac-worldserver +docker-compose -f docker-compose-azerothcore-services.yml rm -f ac-worldserver +docker-compose -f docker-compose-azerothcore-services.yml up -d ac-worldserver ``` ## Security Considerations @@ -563,9 +560,9 @@ docker-compose up -d ac-worldserver - Disable SOAP if not needed 3. **File Permissions** - - Restrict access to .env file: `chmod 600 .env` + - Restrict access to .env files: `chmod 600 *.env` - Secure backup directories - - Use non-root user when possible + - Containers run as root to handle NFS permissions 4. **Regular Updates** - Keep containers updated @@ -627,7 +624,7 @@ docker stats --no-stream ### Database Credentials - **Host**: `localhost:64306` - **User**: `root` -- **Password**: `azerothcore123` (configurable in .env) +- **Password**: `azerothcore123` (configurable in environment files) - **Databases**: `acore_auth`, `acore_world`, `acore_characters` ### Related Projects @@ -637,22 +634,40 @@ docker stats --no-stream ### Useful Commands Reference ```bash # Quick status check -docker-compose ps +docker ps | grep ac- -# Restart all services -docker-compose restart +# Restart database layer +docker-compose -f docker-compose-azerothcore-database.yml restart -# View all logs -docker-compose logs +# Restart services layer +docker-compose -f docker-compose-azerothcore-services.yml restart -# Stop everything -docker-compose stop +# Restart tools layer +docker-compose -f docker-compose-azerothcore-tools.yml restart -# Start everything -docker-compose start +# View database logs +docker-compose -f docker-compose-azerothcore-database.yml logs -# Update and restart -docker-compose pull && docker-compose up -d +# View services logs +docker-compose -f docker-compose-azerothcore-services.yml logs + +# View tools logs +docker-compose -f docker-compose-azerothcore-tools.yml logs + +# Stop everything (in reverse order) +docker-compose -f docker-compose-azerothcore-tools.yml down +docker-compose -f docker-compose-azerothcore-services.yml down +docker-compose -f docker-compose-azerothcore-database.yml down + +# Start everything (in order) +docker-compose -f docker-compose-azerothcore-database.yml up -d +docker-compose -f docker-compose-azerothcore-services.yml up -d +docker-compose -f docker-compose-azerothcore-tools.yml up -d + +# Update and restart all layers +docker-compose -f docker-compose-azerothcore-database.yml pull && docker-compose -f docker-compose-azerothcore-database.yml up -d +docker-compose -f docker-compose-azerothcore-services.yml pull && docker-compose -f docker-compose-azerothcore-services.yml up -d +docker-compose -f docker-compose-azerothcore-tools.yml pull && docker-compose -f docker-compose-azerothcore-tools.yml up -d # Backup database docker exec ac-mysql mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > backup.sql