diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index 5bb386d4412792d1f7136f8f94970e6fe209ba53..f9e30f406b68d6c26c825184b9b6e6b7793b08c7 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -50,7 +50,6 @@ INSTALLED_APPS = [
     "django.contrib.messages",
     "django.contrib.staticfiles",
     "django_global_request",
-    "django_celery_beat",
     "settings_context_processor",
     "sass_processor",
     "easyaudit",
@@ -369,9 +368,12 @@ if _settings.get("2fa.twilio.sid", None):
     TWILIO_TOKEN = _settings.get("2fa.twilio.token")
     TWILIO_CALLER_ID = _settings.get("2fa.twilio.callerid")
 
-CELERY_RESULT_BACKEND = "django-db"
-CELERY_CACHE_BACKEND = "django-cache"
-CELERY_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
+
+if _settings.get("celery.enabled", False):
+    INSTALLED_APPS += ("django_celery_beat",)
+    CELERY_RESULT_BACKEND = "django-db"
+    CELERY_CACHE_BACKEND = "django-cache"
+    CELERY_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
 
 if _settings.get("celery.email", False):
    INSTALLED_APPS += ("djcelery_email",)
diff --git a/pyproject.toml b/pyproject.toml
index f1459a6713be76efcaef2db1507ae909ece5ed67..51f0c074dcb8f63f187a070af0955c192dc2efbf 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -57,13 +57,14 @@ django-templated-email = "^2.3.0"
 html2text = "^2019.9.26"
 django-ckeditor = "^5.8.0"
 django-js-reverse = "^0.9.1"
-Celery = "^4.4.0"
-django-celery-results = "^1.1.2"
-django-celery-beat = "^1.5.0"
-django-celery-email = "^3.0.0"
+Celery = {version="^4.4.0", optional=true}
+django-celery-results = {version="^1.1.2", optional=true}
+django-celery-beat = {version="^1.5.0", optional=true}
+django-celery-email = {version="^3.0.0", optional=true}
 
 [tool.poetry.extras]
 ldap = ["django-auth-ldap"]
+celery = ["Celery", "django-celery-results", "django-celery-beat", "django-celery-email"]
 
 [tool.poetry.dev-dependencies]
 sphinx = "^2.1"