diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 28e055e2696759d61b4cd74a0b799ab23ad033ea..c19a0a3e9691b3379d733a1df78dae73ed26a47c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -33,6 +33,12 @@
     paths:
       - public/
 
+.ssh-config: &ssh
+- which ssh-agent
+- eval $(ssh-agent -s)
+- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
+- mkdir -p ~/.ssh
+- chmod 700 ~/.ssh
 
 cache:
   paths:
@@ -55,6 +61,7 @@ variables:
 stages:
   - pre-build
   - build
+  - deploy_to_server
   - pages
   - preserve-pages
   - remove_unused_envs
@@ -96,6 +103,34 @@ build_page-main-backend:
     VUE_APP_PUBLIC_PATH: "${BASE_BACKEND}"
   <<: *build-defaults
 
+deploy-dev:
+  stage: deploy_to_server
+  image: rsamban/scp-resource:latest
+  only:
+    - develop
+  dependencies:
+    - build_page-develop-backend
+  script:
+    - *ssh
+    # remove the old version from dev and test
+    - ssh -o 'StrictHostKeyChecking no' $SSH_USER@$SSH_IP "rm -rf ~/$CI_COMMIT_REF_NAME/frontend/website/*"
+    - ssh -o 'StrictHostKeyChecking no' $SSH_USER@$SSH_IP "rm -rf ~/test/frontend/website/*"
+    # install new version to dev and test
+    - scp -o 'StrictHostKeyChecking no' -r public/$CI_COMMIT_REF_NAME/* $SSH_USER@$SSH_IP:~/$CI_COMMIT_REF_NAME/frontend/website/
+    - ssh -o 'StrictHostKeyChecking no' $SSH_USER@$SSH_IP "cp -r ~/$CI_COMMIT_REF_NAME/frontend/website/* ~/test/frontend/website/"
+
+deploy-main:
+  stage: deploy_to_server
+  image: rsamban/scp-resource:latest
+  only:
+    - main
+  dependencies:
+    - build_page-main-backend
+  script:
+    - *ssh
+    - ssh -o 'StrictHostKeyChecking no' $SSH_USER@$SSH_IP "rm -rf ~/$CI_COMMIT_REF_NAME/frontend/website/*"
+    - scp -o 'StrictHostKeyChecking no' -r public/$CI_COMMIT_REF_NAME/* $SSH_USER@$SSH_IP:~/$CI_COMMIT_REF_NAME/frontend/website/
+
 
 # this stage creates a new environment for the current branch.
 pages: