DefectDojo consists of several components that work together closely.



The webserver NGINX delivers all static content, e.g. images, JavaScript files or CSS files.


uWSGI is the application server that runs the DefectDojo application, written in Python/Django, to serve all dynamic content.

Message Broker

The application server sends tasks to a Message Broker for asynchronous execution. RabbitMQ is a well supported choice.

Celery Worker

Tasks like deduplication or the Jira synchonization are performed asynchronously in the background by the Celery Worker.

Celery Beat

In order to identify and notify users about things like upcoming engagements, DefectDojo runs scheduled tasks. These tasks are scheduled and run using Celery Beat.


The Initializer gets started during startup of DefectDojo to initialize the database and run database migrations after upgrades of DefectDojo. It shuts itself down after all tasks are performed.


The Database stores all data of DefectDojo. Currently MySQL and PostgreSQL are supported. Please note the django-watson search engine require one or more MyISAM tables, so you cannot use Azure MySQL or Cloud SQL for MySQL. AWS RDS MySQL supports MyISAM tables, so it will work.

Last modified September 14, 2021: docs: add MyISAM requirement (#5093) (367921240)