A web-based administration panel for AzerothCore World of Warcraft private servers. Manage accounts, characters, server status, and more through an intuitive web interface.
-
Account Management
- Create and manage WoW accounts
- SRP6 password hashing (AzerothCore compatible)
- Set account access levels (Player, GM, Admin)
- Account locking/unlocking
- View last login information
-
Server Control
- Start/stop/restart server processes
- Real-time server status monitoring
- View server logs
- Monitor CPU and memory usage
-
Character Management
- View character information
- Character database queries
- Manage character data
-
Security
- Secure authentication system
- Session management
- Environment-based configuration
- No hardcoded credentials
- Python 3.8+
- AzerothCore server installation
- MySQL/MariaDB with AzerothCore databases:
acore_auth- Authentication databaseacore_characters- Character databaseacore_world- World database
git clone https://github.com/Kyworn/azeroth-admin-panel.git
cd azeroth-admin-panelpip install -r requirements.txtCopy the example environment file and configure it:
cp .env.example .env
nano .envEdit the .env file with your configuration:
# Flask Configuration
SECRET_KEY=your_generated_secret_key_here
FLASK_ENV=production
# MySQL Configuration
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=acore
MYSQL_PASSWORD=your_secure_password
MYSQL_AUTH_DB=acore_auth
MYSQL_CHARACTERS_DB=acore_characters
MYSQL_WORLD_DB=acore_world
# Server Configuration
SERVER_PATH=/path/to/azerothcore
LOG_PATH=/var/log/wow-admin-panelGenerate a secure SECRET_KEY:
python3 -c "import secrets; print(secrets.token_hex(32))"python3 -c "from app import db; db.create_all()"Development:
python3 app.pyProduction (with Gunicorn):
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:appThe panel will be accessible at http://localhost:5000
| Variable | Description | Default |
|---|---|---|
SECRET_KEY |
Flask secret key for sessions | Generated randomly |
FLASK_ENV |
Flask environment (development/production) | production |
DATABASE_URL |
SQLite database for admin panel | sqlite:///admin_panel.db |
MYSQL_HOST |
MySQL server host | 127.0.0.1 |
MYSQL_PORT |
MySQL server port | 3306 |
MYSQL_USER |
MySQL username | acore |
MYSQL_PASSWORD |
MySQL password | acore |
MYSQL_AUTH_DB |
AzerothCore auth database | acore_auth |
MYSQL_CHARACTERS_DB |
AzerothCore characters database | acore_characters |
MYSQL_WORLD_DB |
AzerothCore world database | acore_world |
SERVER_PATH |
Path to AzerothCore installation | /path/to/azerothcore |
LOG_PATH |
Path for admin panel logs | /var/log/wow-admin-panel |
- Navigate to the admin panel
- Click "Create Account"
- Enter username and password
- Set account access level:
- 0 = Player
- 1 = GM
- 2 = Admin
- Account will be created with SRP6 password hashing
- View Status: Dashboard shows real-time server status
- Start Server: Click "Start" button
- Stop Server: Click "Stop" button
- View Logs: Access server logs from the Logs tab
The dashboard displays:
- Server uptime
- CPU usage
- Memory usage
- Active players
- Recent server events
-
Use a strong SECRET_KEY
python3 -c "import secrets; print(secrets.token_hex(32))" -
Secure MySQL credentials
- Use strong passwords
- Limit MySQL user permissions
- Create a dedicated user for the admin panel
-
Use HTTPS
- Configure reverse proxy (Nginx/Apache)
- Use SSL certificates (Let's Encrypt)
-
Restrict access
- Use firewall rules
- Implement IP whitelisting
- Use VPN for remote access
-
Regular updates
- Keep dependencies updated
- Monitor security advisories
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Create /etc/systemd/system/azeroth-panel.service:
[Unit]
Description=Azeroth Admin Panel
After=network.target mysql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/azeroth-admin-panel
Environment="PATH=/usr/bin"
ExecStart=/usr/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app
Restart=always
[Install]
WantedBy=multi-user.targetEnable and start:
sudo systemctl daemon-reload
sudo systemctl enable azeroth-panel
sudo systemctl start azeroth-panel# Check MySQL service
systemctl status mysql
# Verify credentials
mysql -u acore -p -h 127.0.0.1
# Check database permissions
SHOW GRANTS FOR 'acore'@'localhost';# Ensure log directory exists and is writable
sudo mkdir -p /var/log/wow-admin-panel
sudo chown $USER:$USER /var/log/wow-admin-panel# Reinstall dependencies
pip install -r requirements.txt --force-reinstallThis panel is designed for AzerothCore (WotLK 3.3.5a) and uses:
- SRP6 password hashing for account creation
- AzerothCore database schema
- Compatible with AC-Web and similar panels
Tested with:
- AzerothCore master branch
- MySQL 8.0 / MariaDB 10.6+
- Python 3.8 - 3.11
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Test thoroughly with AzerothCore
- Commit changes (
git commit -m 'Add feature') - Push to branch (
git push origin feature/improvement) - Open a Pull Request
This project is provided as-is for managing AzerothCore private servers.
This tool is for managing private World of Warcraft servers using AzerothCore. It is not affiliated with or endorsed by Blizzard Entertainment. Use only for educational or development purposes on legally obtained server software.
- AzerothCore - Open-source WoW emulator
- AC-Web - Official AzerothCore web panel
- TrinityCore - Alternative WoW emulator
For issues or questions:
- Open an issue on GitHub
- Check AzerothCore documentation
- Join AzerothCore Discord
Created by Kyworn