Prerequisites
- Go 1.21+ (for local builds)
- Docker 20.10+ (for containerized deployment)
- Docker Compose 2.0+ (for distributed mode)
Quick Start
Building
Local Build
Docker Build
Deployment Modes
Single Host
Direct Binary
Docker Container
Distributed Mode (Master/Worker)
Distributed mode allows scaling scan workloads across multiple worker nodes using Redis as a message queue.Architecture
Docker Compose Setup
Manual Distributed Setup
If not using Docker Compose:Submitting Distributed Scans
Configuration
Configuration File
Default location:~/osmedeus-base/osm-settings.yaml
Environment Variables
| Variable | Description | Default |
|---|---|---|
REDIS_HOST | Redis hostname | localhost |
REDIS_PORT | Redis port | 6379 |
OSM_BASE_FOLDER | Base folder path | ~/osmedeus-base |
Command Line Overrides
Docker Compose Reference
The includedbuild/docker/docker-compose.yml provides a complete distributed setup:
Services
| Service | Purpose | Ports |
|---|---|---|
redis | Task queue and coordination | 6379 |
master | API server and task distributor | 8001 |
worker | Task executor (scalable) | - |
Volumes
| Volume | Purpose |
|---|---|
redis-data | Redis persistence |
osmedeus-data | Workflows and configuration |
workspaces | Scan output data |
Scaling
Production Considerations
Security
- Authentication: Never use
-A(no-auth) in production - JWT Secret: Change the default JWT secret in config
- TLS: Use a reverse proxy (nginx, traefik) for HTTPS
- Network: Restrict Redis access to internal network only
Resource Limits
Worker resource limits in docker-compose.yml:Health Checks
The Docker image includes built-in health checks:Logging
Database Options
For production, consider PostgreSQL instead of SQLite:Backup
Ansible Deployment
Deploy Osmedeus on Ubuntu/Debian servers using Ansible. Uses the official install script, SQLite storage, and no Redis — designed for simple single-host setups.Prerequisites
- Control machine: Ansible 2.12+
- Target server: Ubuntu 20.04+ or Debian 11+
- SSH access with root or sudo privileges
Quick Start
What It Does
- Installs system dependencies (curl, tmux, git, chromium, etc.)
- Installs Osmedeus via
curl -fsSL https://www.osmedeus.org/install.sh | bash - Deploys
osm-settings.yamlconfigured with SQLite (no Redis) - Runs
osmedeus healthto verify the installation - Sets up a systemd service for auto-start on boot
Playbook Files
Variables
| Variable | Default | Description |
|---|---|---|
osm_server_port | 8002 | API server port |
osm_admin_user | admin | Admin username |
osm_admin_password | CHANGE_ME_ADMIN_PASSWORD | Admin password |
osm_jwt_secret | CHANGE_ME_JWT_SECRET_MIN_32_CHARS | JWT signing secret |
osm_jwt_expiration_minutes | 1440 | Token expiry (24h) |
osm_threads_aggressive | 50 | Aggressive scan threads |
osm_threads_default | 20 | Default scan threads |
osm_threads_gently | 5 | Gentle scan threads |
osm_enable_service | true | Install systemd service |
osm_telegram_enabled | false | Enable Telegram notifications |
osm_telegram_bot_token | "" | Telegram bot token |
osm_telegram_chat_id | "" | Telegram chat ID |
osm_global_variables | [] | Extra env vars for workflows |
Customization
Override any variable at deploy time with-e:
