diff --git a/charts/findmydevice/Chart.yaml b/charts/findmydevice/Chart.yaml
index beb15bcb6a9d181f0297d98824fa5b1c09a22ee6..54cfe04e9fe622bd0854f5136b95dd0ba00962bb 100644
--- a/charts/findmydevice/Chart.yaml
+++ b/charts/findmydevice/Chart.yaml
@@ -12,5 +12,5 @@ sources:
 
 
 type: application
-version: 0.1.0
-appVersion: "0.4.1-deploy"
+version: 0.1.1
+appVersion: "0.4.0"
diff --git a/charts/findmydevice/README.md b/charts/findmydevice/README.md
index 188d2c113e1bd3d169e6173eaf0a8e6789b2f5ba..846f51876cec6d609dffef5e36fdf7142fbebbff 100644
--- a/charts/findmydevice/README.md
+++ b/charts/findmydevice/README.md
@@ -1,6 +1,6 @@
 # findmydevice
 
-![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.4.1-deploy](https://img.shields.io/badge/AppVersion-0.4.1--deploy-informational?style=flat-square)
+![Version: 0.1.1](https://img.shields.io/badge/Version-0.1.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.4.0](https://img.shields.io/badge/AppVersion-0.4.0-informational?style=flat-square)
 
 A Helm chart for the findmydevice (FMD) server. A project for Android and linux that allows "Find my Phone"-functionality as known from Apple and Google, without handing data over to them.
 
@@ -18,7 +18,7 @@ A Helm chart for the findmydevice (FMD) server. A project for Android and linux
 | affinity | object | `{}` |  |
 | fullnameOverride | string | `""` |  |
 | image.pullPolicy | string | `"IfNotPresent"` | Pull policy allows to configure whether an image should be used if already on the host or pulled freshly regardless. |
-| image.repository | string | `"registry.shivering-isles.com/sheogorath/findmydevice-server"` | Container registry image to use |
+| image.repository | string | `"quay.io/shivering-isles/findmydevice-server"` | Container registry image to use |
 | image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. |
 | imagePullSecrets | list | `[]` |  |
 | ingress.annotations | object | `{}` |  |
diff --git a/charts/findmydevice/values.yaml b/charts/findmydevice/values.yaml
index cdafac4ea02fb7c1bea1cdc9b675c01d7d8c7669..c685fcb8ace11309c30a29d4bc7907e0bb4770df 100644
--- a/charts/findmydevice/values.yaml
+++ b/charts/findmydevice/values.yaml
@@ -1,7 +1,7 @@
 ---
 image:
   # -- Container registry image to use
-  repository: registry.shivering-isles.com/sheogorath/findmydevice-server
+  repository: quay.io/shivering-isles/findmydevice-server
   # -- Pull policy allows to configure whether an image should be used if already on the host or pulled freshly regardless.
   pullPolicy: IfNotPresent
   # -- Overrides the image tag whose default is the chart appVersion.
diff --git a/images/.utils/gitlab-ci.yaml b/images/.utils/gitlab-ci.yaml
index cdb619a81d5901087f02a70f351c16cf2010146f..7efcaf881d0c6655c701adb26e5105f79c5b04af 100644
--- a/images/.utils/gitlab-ci.yaml
+++ b/images/.utils/gitlab-ci.yaml
@@ -7,6 +7,7 @@
           - koolbox
           - synadm
           - query-exposer
+          - findmydevice-server
 
 earthly:
   stage: build
diff --git a/images/findmydevice-server/.release b/images/findmydevice-server/.release
new file mode 100644
index 0000000000000000000000000000000000000000..9ecf65833e93819c610252d4a015a950b621a0dc
--- /dev/null
+++ b/images/findmydevice-server/.release
@@ -0,0 +1 @@
+release=0.4.0
diff --git a/images/findmydevice-server/Earthfile b/images/findmydevice-server/Earthfile
new file mode 100644
index 0000000000000000000000000000000000000000..4c5799e494818e7018def164aff51f42a6a217e6
--- /dev/null
+++ b/images/findmydevice-server/Earthfile
@@ -0,0 +1,57 @@
+VERSION 0.7
+
+builder:
+    FROM docker.io/library/golang:bullseye
+
+    WORKDIR /go/src/findmydeviceserver
+    ENV GOPATH /go
+
+    RUN apt update && apt install -y npm
+
+    GIT CLONE --keep-ts --branch=v0.4.0 https://gitlab.com/Nulide/findmydeviceserver.git ./
+    RUN sed 's/1020/8080/' cmd/fmdserver.go
+    RUN sed 's/1008/8443/' cmd/fmdserver.go
+
+    RUN curl -L https://raw.githubusercontent.com/objectbox/objectbox-go/main/install.sh > objectbox-install.sh
+    RUN bash ./objectbox-install.sh
+
+    RUN go build -o /fmd cmd/fmdserver.go
+    RUN npm install
+
+    SAVE ARTIFACT /usr/lib/libobjectbox.so ./libobjectbox.so
+    SAVE ARTIFACT /go/src/findmydeviceserver/node_modules ./node_modules
+    SAVE ARTIFACT /fmd ./server
+    SAVE ARTIFACT ./extra ./extra
+    SAVE ARTIFACT ./web ./web
+
+
+container:
+    FROM docker.io/library/debian:bullseye-slim
+
+    ARG registry=quay.io/shivering-isles/findmydevice-server
+    COPY .release ./
+    ARG tag=$(awk -F'=' '$1 == "release" {print $2}' .release)
+    ARG latest=false
+
+    RUN apt update && apt install -y ca-certificates && rm -rf /var/lib/apt/lists/*
+
+    COPY +builder/server /fmd/server
+    COPY +builder/node_modules /fmd/web/node_modules
+    COPY +builder/libobjectbox.so /usr/lib/libobjectbox.so
+
+    COPY +builder/web /fmd/web
+    COPY +builder/extra /fmd/extra
+
+    RUN useradd -m -u 1000 user
+    RUN mkdir /fmd/objectbox \
+    && chown user:user /fmd/objectbox
+    USER 1000
+
+    EXPOSE 8080/tcp
+
+    ENTRYPOINT ["/fmd/server"]
+
+    IF [ $latest = "true" ]
+        SAVE IMAGE --push ${registry}:latest
+    END
+    SAVE IMAGE --push ${registry}:${tag}