diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d94b0c9a3be31075e5ea4120e6f9b57cb1d73433..8901296c22dd00651884d128812a09682ed73098 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,3 +30,14 @@ build-utility:
   script:
     - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
     - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.utility --destination $CI_REGISTRY_IMAGE/utility:$CI_COMMIT_TAG
+
+build-meteor:
+  only:
+    - main
+  stage: build
+  image:
+    name: gcr.io/kaniko-project/executor:debug
+    entrypoint: [""]
+  script:
+    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
+    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.meteor --destination $CI_REGISTRY_IMAGE/meteor:$CI_COMMIT_TAG
diff --git a/Dockerfile.meteor b/Dockerfile.meteor
new file mode 100644
index 0000000000000000000000000000000000000000..07ef8d9e25deb49742272e45a228624f8b763713
--- /dev/null
+++ b/Dockerfile.meteor
@@ -0,0 +1,15 @@
+FROM debian:bullseye
+
+ENV METEOR_VERSION=2.5.1
+
+RUN apt-get -qq update && \
+    apt-get -qq dist-upgrade && \
+    apt-get -qq install lsb-release curl wget ca-certificates debhelper apt-utils libarchive-tools gnupg bzip2 g++ build-essential git python3 nodejs npm && \
+    apt-get -qq clean && \
+    lsb_release -a && uname -a
+
+RUN cd && \
+    wget "https://static-meteor.netdna-ssl.com/packages-bootstrap/${METEOR_VERSION}/meteor-bootstrap-os.linux.x86_64.tar.gz" -O meteor-bootstrap.tar.gz && \
+    # The package only contains an ".meteor" directory that ends up in "/root/.meteor"
+    tar -xzf meteor-bootstrap.tar.gz && \\
+    rm meteor-bootstrap.tar.gz