This guide explains how to run the ARES GUI using Docker.
The Docker setup includes: - Multi-stage build for optimized image size and security - Non-root user for enhanced security - Red Hat UBI 10 base for enterprise-grade reliability - Python 3.12 with all ARES dependencies - Automatic file creation for missing assets (styles.css, favicon)
The Dockerfile automatically handles these gui.py dependencies:
1. Line 650: Creates styles.css if missing
2. Line 655: Creates docs/source/_static/ directory structure
3. Line 658: Creates placeholder favicon.ico if missing
From the ARES project root directory, build the Docker image:
docker build -t ares-gui .
This will: - Install Python 3.11 and system dependencies - Install ARES and all required Python packages - Copy necessary files (GUI, assets, example configs) - Set up the environment to run the GUI
Run the ARES GUI container with volume mounts to persist results:
docker run -d \
--name ares-gui \
-p 8081:8081 \
-v $(pwd)/results:/app/results \
-v $(pwd)/example_configs:/app/example_configs \
-v $(pwd)/assets:/app/assets \
ares-gui
Flags explained:
- -d: Run in detached mode (background)
- --name ares-gui: Name the container for easy reference
- -p 8081:8081: Map port 8081 from container to host
- -v: Mount volumes to persist data and access configs
Open your browser and navigate to:
http://localhost:8081
You should see the ARES GUI interface with 5 tabs: - 📝 Configuration - 📊 Data - 🔌 Plugins - 🎯 Red Team - 📈 Reports
docker logs -f ares-gui
docker stop ares-gui
docker start ares-gui
docker stop ares-gui
docker rm ares-gui
If you modify the code or configuration:
docker stop ares-gui
docker rm ares-gui
docker build -t ares-gui .
docker run -d --name ares-gui -p 8081:8081 \
-v $(pwd)/results:/app/results \
-v $(pwd)/example_configs:/app/example_configs \
-v $(pwd)/assets:/app/assets \
ares-gui
To use a different port (e.g., 8080):
docker run -d \
--name ares-gui \
-p 8080:8081 \
-v $(pwd)/results:/app/results \
ares-gui
Then access at http://localhost:8080
Limit CPU and memory usage:
docker run -d \
--name ares-gui \
--cpus="4" \
--memory="8g" \
-p 8081:8081 \
-v $(pwd)/results:/app/results \
ares-gui
To access the container shell for debugging:
docker exec -it ares-gui /bin/bash
To see output directly in your terminal:
docker run --rm \
--name ares-gui \
-p 8081:8081 \
-v $(pwd)/results:/app/results \
ares-gui
Press Ctrl+C to stop.
The Docker setup uses volume mounts to:
results/: Persist evaluation results outside the containerSurvives container restarts and rebuilds
example_configs/: Access configuration files
Share configs between host and container
assets/: Access test data and resources
If port 8081 is already in use:
# Find what's using the port
lsof -i :8081
# Use a different port
docker run -d --name ares-gui -p 8082:8081 -v $(pwd)/results:/app/results ares-gui
Check logs for errors:
docker logs ares-gui
Increase Docker's memory allocation: - Docker Desktop: Settings → Resources → Memory - Recommended: At least 8GB
On Linux, you may need to adjust permissions:
chmod -R 755 results/ example_configs/ assets/
Check if container is running:
bash
docker ps
Check logs:
bash
docker logs ares-gui
Verify port mapping:
bash
docker port ares-gui
For production deployments, consider:
Example production Dockerfile modifications:
# Add health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8081/ || exit 1
# Run as non-root user
RUN useradd -m -u 1000 ares && chown -R ares:ares /app
USER ares
Once the GUI is running:
For more information: - ARES Documentation - ARES GitHub Repository - Main README