Installation
This guide covers all installation methods for Faction, from the recommended Docker Compose setup to building from source.Prerequisites
Before installing Faction, ensure your system meets these requirements:Required
- Docker and Docker Compose (for containerized deployment)
- Java JDK 11 (for building from source)
- Maven (for building from source)
- CPU with AVX support - Required for MongoDB 8.0
Recommended
- 4GB RAM minimum - 2GB allocated to Tomcat, additional for MongoDB
- 10GB disk space - For application, database, and report storage
- Linux, macOS, or Windows with Docker support
Docker Compose Installation (Recommended)
The fastest and most reliable way to deploy Faction is using Docker Compose.Step 1: Clone the Repository
Step 2: Review Configuration
Thedocker-compose.yml file includes default configuration:
Step 3: Launch Faction
The first build will download dependencies and compile the WAR file. This may take 5-10 minutes depending on your system.
Step 4: Access Faction
Once containers are running, access Faction at:Environment Variables
Faction uses environment variables for configuration. These can be set indocker-compose.yml or as system environment variables.
Core Configuration
| Variable | Description | Default |
|---|---|---|
FACTION_MONGO_HOST | MongoDB hostname | faction-mongo |
FACTION_MONGO_DATABASE | MongoDB database name | faction |
FACTION_MONGO_USER | MongoDB username | faction_mongo_user |
FACTION_MONGO_PASSWORD | MongoDB password | faction_mongo_pass |
FACTION_SECRET_KEY | Encryption key for sensitive data | faction_encryption_key |
Storage Configuration
| Variable | Description | Default |
|---|---|---|
FACTION_REPORT_STORAGE | Storage backend: local or s3 | local |
OAuth/SAML Configuration
| Variable | Description | Required |
|---|---|---|
FACTION_OAUTH_CALLBACK | OAuth callback URL | Yes (if using OAuth/SAML) |
FACTION_APPSTORE_ENABLED | Enable App Store extensions | true |
SMTP Configuration (Optional)
Configure SMTP for email notifications:| Variable | Description |
|---|---|
FACTION_SMTP_SERVER | SMTP server hostname |
FACTION_SMTP_PORT | SMTP server port |
FACTION_SMTP_USER | SMTP username |
FACTION_SMTP_PASSWORD | SMTP password |
FACTION_SMTP_FROM_ADDRESS | From email address |
SMTP settings can also be configured through the web interface at Settings → Email Configuration.
Building from Source
For development or customization, you can build Faction from source.Build with Maven
- Compile Java sources from
src/ - Run tests from
test/ - Package into
target/faction.war
The build process uses dependencies defined in
pom.xml, including Struts 6.7.0, MongoDB drivers, and docx4j for report generation.Data Persistence
By default, Docker Compose stores MongoDB data in:Backup Recommendations
Troubleshooting
MongoDB AVX Issues
Solutions:-
VirtualBox Users:
- Enable AVX passthrough in VM settings
- Or use MongoDB 4.4 (change in
docker-compose.yml) See: MongoDB VirtualBox Discussion
-
Kubernetes Users:
- Use node with AVX support
- Or downgrade MongoDB version See: MongoDB Kubernetes AVX Issue
Port Conflicts
If port 8080 is already in use:http://127.0.0.1:8081
Memory Issues
If you encounter OutOfMemoryError:-
Increase Tomcat Heap:
Edit
setenv.shor set indocker-compose.yml: -
Monitor with JMX:
The included
setenv.shenables JMX monitoring on port 9090:
Container Logs
View logs for troubleshooting:Production Deployment
Security Hardening
Performance Tuning
JVM Settings (setenv.sh):
Advanced Configuration
LDAP Integration
Configure LDAP authentication through the web interface: Settings → LDAP Configuration Required fields:- LDAP URL
- Base DN
- Bind DN
- Search DN
- Object Class
OAuth 2.0 / SAML Setup
Configure SSO through environment variables and web interface:-
Set callback URL:
-
Configure in Settings → SSO Configuration:
- OAuth Client ID
- OAuth Client Secret
- Discovery URI (for OIDC)
- SAML Metadata URL (for SAML)
S3 Storage Backend
For distributed deployments, use S3 for report storage:Development Setup
For development with live reload:- Mounts source code as volumes
- Enables hot reload
- Exposes debugging ports
Getting Help
Community Support
Join #project-faction on OWASP Slack
Report Issues
Submit bugs and feature requests on GitHub
Contributing
Read the contributing guidelines
Video Tutorials
Watch installation walkthroughs
Next: Once installed, follow the Quickstart Guide to create your first assessment.
