diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 153cb7d67bd0ce6af99bae847bb4d7e176e2fab6..e36c8f13ea4884760fb80f4e9e6f868278dfd385 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -27,10 +27,23 @@ test:
 create_docs:
   stage: create_docs
   needs: [test]
+  variables:
+    docs_upload_host: hosted-024-173.rz.uni-augsburg.de
+    docs_path_component: icartt
   script:
     - poetry install
     - cd docs
     - poetry run sphinx-build -b html . ../public
+    # Following lines are ssh-agent setup and key injection, to allow upload of docs
+    - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
+    - 'command -v rsync >/dev/null || ( apt-get update -y && apt-get install --no-install-recommends rsync -y )'
+    - eval $(ssh-agent -s)
+    # Encode with cat <key> | base64 -w0, then configure variable as admin in Gitlab Web UI
+    # Use the mbees.docs.user state via pillar to create users and ssh config on our docs web server
+    - echo "$docs_ssh_key" | tr -d ' ' | base64 --decode | ssh-add -
+    - mkdir -p ~/.ssh && chmod 700 ~/.ssh
+    - ssh-keyscan ${docs_upload_host} > ~/.ssh/known_hosts
+    - rsync -ax ../public/ ${CI_PROJECT_NAME}-docs@${docs_upload_host}:/srv/docs/${docs_path_component}/public/$(poetry version -s)/
   artifacts:
     paths:
       - public