diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0f8e3602d100b9d08452b851f08cd12243758a19..949f9e59e4cbe43cbc0793b6c4dae9ed143927c2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,7 @@
 stages:
   - lint
   - build
+  - deploy
 
 lint_frontend:
   stage: lint
@@ -31,3 +32,23 @@ build:
   script:
     - docker build -t $CI_REGISTRY/sbibauw/languagelab:$COMPONENT $COMPONENT
     - docker push $CI_REGISTRY/sbibauw/languagelab:$COMPONENT
+
+docker_deploy:
+  stage: deploy
+  only:
+    - main
+    - feat/cd
+  image: debian:latest
+  before_script:
+    - "command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )"
+    - eval $(ssh-agent -s)
+    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
+    - mkdir -p ~/.ssh
+    - touch ~/.ssh/config
+    - touch ~/.ssh/known_hosts
+    - chmod -R 400 ~/.ssh
+    - ssh bridubois@languagelab.sipr.ucl.ac.be
+  script:
+    - cd /mnt/data/languagelab/repo/
+    - git pull
+    - docker compose up -d