DFIR-IRIS, the open source collaborative platform where incident response and digital forensics teams run an investigation together, with cases, indicators, evidence and a full REST API in one shared workspace.
DFIR-IRIS is a collaborative case management platform for digital forensics and incident response. It gives a team one shared workspace per incident: a case with a structured investigation timeline, the assets that were touched, the indicators of compromise observed, the evidence collected with its hashes, and the tasks and notes that record who did what. Instead of an investigation living across spreadsheets, chat threads and one analyst's notebook, every artifact is recorded against the case with an audit trail, so a second responder can pick it up and a report can be generated from what was actually done. A complete REST API exposes the same objects the web interface uses, so cases can be opened, enriched and closed from existing tooling, and a pluggable module system connects it to sources such as MISP, VirusTotal, IntelOwl and EVTX processing, or to a webhook of your own. It is designed for the working pattern of a SOC or an IR practice: many concurrent analysts on one case, and many cases open at once.
DFIR-IRIS holds evidence, so how it is secured on first boot is the whole story, and this is where a community deployment is weakest. Upstream ships a development secret key, a default password salt and a self signed certificate that many deployments never replace. The cloudimg image replaces all of them per instance: every VM generates its own administrator password, REST API key, PostgreSQL and RabbitMQ passwords, Flask secret key, password salt and TLS certificate on first boot, written to a root only file, so no two deployments share a secret and there is no known default login to find. The stack is assembled and hardened for you rather than left as an exercise: gunicorn runs the application on loopback behind an nginx reverse proxy that terminates TLS and redirects plain HTTP, PostgreSQL 16 holds durable state and RabbitMQ drives a Celery worker for module pipelines and report generation, with PostgreSQL, RabbitMQ and gunicorn all bound to loopback and never exposed. Only SSH, HTTP and HTTPS are open, an unauthenticated health endpoint is provided for load balancer probes, and the image ships fully patched with 24/7 cloudimg support behind it.
Real screenshots taken while testing this image against its deployment guide.