Configuration
Fleex stores all configuration in ~/.config/fleex/. Run fleex init to generate the initial configuration.
Directory Structure
~/.config/fleex/
├── config.json # Main configuration file
├── ssh/
│ ├── id_rsa # Private SSH key (auto-generated)
│ └── id_rsa.pub # Public SSH key (auto-generated)
├── builds/ # Build recipes for provisioning
│ ├── security-tools.yaml
│ ├── recon-tools.yaml
│ └── base-setup.yaml
└── workflows/ # Scan workflows
├── quick-scan.yaml
├── full-recon.yaml
├── subdomain-enum.yaml
├── port-scan.yaml
├── meg-scan.yaml
└── ffuf-fuzz.yaml
config.json
The main configuration file defines providers, SSH keys, and settings.
{
"settings": {
"provider": "linode"
},
"ssh_keys": {
"public_file": "/home/user/.config/fleex/ssh/id_rsa.pub",
"private_file": "/home/user/.config/fleex/ssh/id_rsa"
},
"providers": {
"linode": {
"token": "YOUR_LINODE_API_TOKEN",
"region": "us-east",
"size": "g6-nanode-1",
"image": "linode/ubuntu22.04",
"port": 22,
"username": "root"
},
"digitalocean": {
"token": "YOUR_DO_API_TOKEN",
"region": "nyc1",
"size": "s-1vcpu-1gb",
"image": "ubuntu-22-04-x64",
"port": 22,
"username": "root"
},
"vultr": {
"token": "YOUR_VULTR_API_TOKEN",
"region": "ewr",
"size": "vc2-1c-1gb",
"image": "387",
"port": 22,
"username": "root"
}
},
"custom_vms": [
{
"provider": "custom",
"instance_id": "my-server-1",
"public_ip": "192.168.1.100",
"ssh_port": 22,
"username": "root",
"key_path": "/path/to/private-key.pem",
"tags": ["production"]
}
]
}
Provider Configuration
Each provider requires:
| Field | Description |
|---|---|
token |
API token from your cloud provider |
region |
Data center region |
size |
Instance type/size |
image |
OS image ID or name |
port |
SSH port (default: 22) |
username |
SSH username (default: root) |
password |
SSH password (optional, key-based auth preferred) |
Provider Defaults
Linode:
- Region:
us-east - Size:
g6-nanode-1(1GB RAM, $5/month) - Image:
linode/ubuntu22.04
DigitalOcean:
- Region:
nyc1 - Size:
s-1vcpu-1gb(1GB RAM, $6/month) - Image:
ubuntu-22-04-x64
Vultr:
- Region:
ewr - Size:
vc2-1c-1gb(1GB RAM, $5/month) - Image:
387(Ubuntu 22.04)
Custom VMs
Use custom VMs to integrate existing servers or VMs from unsupported providers:
"custom_vms": [
{
"provider": "custom",
"instance_id": "aws-server-1",
"public_ip": "54.123.45.67",
"ssh_port": 22,
"username": "ubuntu",
"key_path": "/home/user/.ssh/aws-key.pem",
"tags": ["aws", "production"]
}
]
Custom VMs can be used with all Fleex commands by setting the provider to custom.
Adding Providers
Add a new provider to existing configuration:
fleex init --add-provider digitalocean
This prompts for API token and settings without overwriting existing configuration.
Using Custom Images
For faster deployments, use pre-configured images instead of installing tools on each spawn:
-
Spawn a single instance:
fleex spawn -n build -c 1 -
Build with a recipe:
fleex build run -r security-tools -n build --snapshot -
Use the new image in future spawns by updating
config.json:"image": "private/12345678"
List available images:
fleex images ls
Environment Variables
Override configuration with flags:
fleex spawn -n myfleet -c 5 \
-p linode \
-R us-west \
-S g6-standard-1 \
-I linode/ubuntu22.04