A comprehensive Docker Compose environment for creating a multi-container lab setup simulating workstations, servers, and business applications to test Binalyze AIR.
This project provides a containerized lab environment with Binalyze AIR responders:
- 10 Ubuntu Workstation containers for security testing and development
- Web servers for hosting applications and services
- Multiple database systems for data storage and testing
- Message queuing for distributed applications
- Enterprise applications for real-world scenarios
Perfect for PoVs, demos, research, development, testing, learning, and proof of concepts.
- workstation-1 to workstation-10 - Ubuntu-based workstations
- nginx - Web server (ports 8080, 8443)
- httpd - Apache HTTP server (port 8081)
- tomcat - Java application server (port 8082)
- postgres - PostgreSQL database (port 5432)
- mongo - MongoDB NoSQL database (port 27017)
- redis - In-memory data store (port 6379)
- cassandra - Distributed NoSQL database (ports 9042, 9160)
- rabbitmq - Message broker with web UI (ports 5672, 15672)
- nextcloud - File sharing platform (port 8088)
- ghost - Blogging platform (port 8089)
-
Create environment configuration
# Create .env.local file with your Binalyze AIR deployment URL cat > .env.local << EOF AIR: RESPONDER_PACKAGE_URL: https://your-air-server.com/api/endpoints/download/deploy/linux?deployment-token=your-token EOF
-
Start all services (IMPORTANT: First execution will take time to pull the images)
docker-compose up -d
-
Check status
docker-compose ps
-
View logs
docker-compose logs -f
The included deploy.sh
script automatically installs Binalyze AIR on containers but includes smart optimization:
- First startup: Full Binalyze AIR installation (~30-60 seconds per container)
- Subsequent restarts: Instant startup if AIR is already installed (~1-2 seconds per container)
- Automatic detection: Checks for
/opt/binalyze/air/agent/air
before installing
This dramatically reduces restart times from ~12 minutes to ~30 seconds for the entire lab environment.
# Start specific services
docker-compose up -d nginx postgres nextcloud
# View service logs
docker-compose logs -f nextcloud
# Access a workstation
docker-compose exec workstation-1 /bin/bash
# Check Binalyze AIR installation status
docker-compose exec workstation-1 ls -la /opt/binalyze/air/agent/
# Restart a service
docker-compose restart nginx
# Stop all services
docker-compose down
- Binalyze AIR deployment: Configure
.env.local
with your deployment URL and token - Custom deployment: Edit
deploy.sh
for service customization - Data persistence: All data is stored in Docker volumes
- Minimum: 8GB RAM, 4 CPU cores, 30GB storage
- Recommended: 16GB RAM, 8 CPU cores, 50GB SSD
All containers use capitalized hostnames for easy identification:
- Workstations: WORKSTATION-1 to WORKSTATION-10
- Services: NGINX, HTTPD, TOMCAT, POSTGRES, MONGO, REDIS, CASSANDRA, RABBITMQ, NEXTCLOUD, GHOST
The following data persists across container restarts:
- Binalyze AIR installation (automatically detected and preserved)
- Database data (PostgreSQL, MongoDB, Redis, Cassandra)
- Application data (Nextcloud, Ghost)
- Web server content (Nginx, Apache, Tomcat)
- Message queue data (RabbitMQ)
Container startup issues:
- Check
.env.local
configuration - Verify Binalyze AIR deployment URL accessibility
- Monitor logs:
docker-compose logs -f [service-name]
Performance optimization:
- The deployment script automatically skips reinstallation on restarts
- Use
docker-compose restart
instead ofdown/up
for faster recovery
This project is provided as-is for educational, development, and security research purposes.