Reef includes a few maintenance commands. Run them inside the web container, for example:
docker compose exec web python manage.py sysinfo
Commands
python manage.py reef_seed [--demo]
Creates the default scan schedules. It is safe to run more than once, because existing schedules are left alone. Add --demo to also create a sample agent, scan, and findings, which is handy for exploring the dashboard without a real host.
python manage.py ensure_superuser
Creates the administrator account from the DJANGO_SUPERUSER_* settings if it doesn’t already exist. This runs automatically every time the web container starts.
python manage.py sysinfo [--json]
Prints a summary of the operating system and software versions. This is useful when filing a bug report or comparing environments.
python manage.py reef_reset [--no-input] [--include-users] [--vacuum]
--include-users. The command asks for confirmation unless you pass --no-input (or --yes / -y). Afterwards, run reef_seed to restore the default schedules.
The --vacuum option compacts the database file after the reset to reclaim disk space.
Container roles
The web, worker, and beat services all use the same Reef image, and each one starts in a different role:
| Role | What it does |
|---|---|
web |
Serves the dashboard and API. On startup, it also applies database updates, creates the administrator account, and seeds the default schedules. |
worker |
Processes scan results into findings and sends notifications. |
beat |
Starts scheduled scans and runs routine housekeeping, such as marking silent agents offline. |
Only web applies database updates, so upgrading Reef is as simple as pulling the new images and running docker compose up -d.