diff --git a/uwsgi-python/tasks/apps/alumnigraph.yml b/uwsgi-python/tasks/apps/alumnigraph.yml
index a3ec7ee5b6a96adf3223e28676595616dae56610..eff9d1a89765c069f08094ab7aaf35e8cfbd976a 100644
--- a/uwsgi-python/tasks/apps/alumnigraph.yml
+++ b/uwsgi-python/tasks/apps/alumnigraph.yml
@@ -19,6 +19,23 @@
   notify:
     - "restart uwsgi instance {{app.instance}}"
 
+- name: ensure the celery unit file exists
+  template:
+    src: apps/alumnigraph-celery.service.j2
+    dest: "/etc/systemd/system/{{ app_name }}-celery.service"
+    owner: root
+    group: root
+    mode: '0644'
+  notify:
+    - reload systemd service files
+    - "restart uwsgi instance {{app.instance}}"
+
+- name: ensure the celery service is enabled
+  service:
+    name: "{{app_name}}-celery"
+    enabled: true
+    state: started
+
 - name: ensure the folder from above is not present anymore
   file:
     path: "{{app_path}}/.ansible"
diff --git a/uwsgi-python/templates/apps/alumnigraph-celery.service.j2 b/uwsgi-python/templates/apps/alumnigraph-celery.service.j2
new file mode 100644
index 0000000000000000000000000000000000000000..0bcc872245e6f6b635598c93e5172a51815dd6db
--- /dev/null
+++ b/uwsgi-python/templates/apps/alumnigraph-celery.service.j2
@@ -0,0 +1,14 @@
+[Unit]
+Description={{ app_name }}-Celery
+After=network.target
+
+[Service]
+User={{ app_user }}
+Group={{ app_group }}
+WorkingDirectory={{ app_path }}
+Environment=VIRTUAL_ENV="{{ app_path }}"
+ExecStart={{ app_venv }}/bin/celery -A app.celery worker --loglevel=DEBUG --concurrency={{ alumni_graph_celery_concurrency }}
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/uwsgi-python/templates/apps/alumnigraph.j2 b/uwsgi-python/templates/apps/alumnigraph.j2
index 31ba5f45a0a28cde24a55bfaf7a065fddebc0b48..01938be2dfa1663080fbf90387f6dc249553b69b 100644
--- a/uwsgi-python/templates/apps/alumnigraph.j2
+++ b/uwsgi-python/templates/apps/alumnigraph.j2
@@ -23,3 +23,4 @@ SEND_INVITATIONS = {{ alumni_graph_send_invitation }}
 SENTRY_URL = "{{ alumni_graph_sentry_url }}"
 BABEL_DEFAULT_LOCALE = "DE"
 
+CELERY_BROKER_URL = {{ alumni_graph_celery_broker }}
diff --git a/uwsgi-python/vars/alumnigraph.yml b/uwsgi-python/vars/alumnigraph.yml
index 330e5135978929b062082e12ca384e9c18ffefec..c64810369b1ec9d3313cb333cb1e0482e6fb53d7 100644
--- a/uwsgi-python/vars/alumnigraph.yml
+++ b/uwsgi-python/vars/alumnigraph.yml
@@ -47,3 +47,6 @@ alumni_graph_sentry_url: ""
 # Do not define if there is no authentication needed
 # alumni_graph_mail_user: None
 # alumni_graph_mail_pass: None
+#
+alumni_graph_celery_broker: '"redis://localhost:6379/2"'
+alumni_graph_celery_concurrency: 2