diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2d5f3a42823c4d25eea512cec08fc2248b4e32d3..67c44b1a2dadf9b09f89b8ae6e84ddb81a394456 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -524,7 +524,7 @@ release-images:
   image: docker:${DOCKER_VERSION}-dind
   variables:
     BUILD_ARGS: --network=host
-    COMPOSE_BUILD_ARGS: -q --parallel
+    BAKE_ARGS: --allow=network.host --builder multiarch --load
   dependencies:
     - clean-images
     - test-analyse-service
@@ -538,37 +538,19 @@ release-images:
     - tags
     - dev
   before_script:
+    - "apk add --no-cache make"
     - "docker logout ${CI_REGISTRY_URL}"
     - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}"
     - "docker logout ${CI_REGISTRY2_URL}"
     - "echo ${CI_REGISTRY2_PASSWORD} | docker login --username ${CI_REGISTRY2_USER} --password-stdin ${CI_REGISTRY2_URL}"
-  script:
-    - docker build $BUILD_ARGS -t dbrepo-core:build --target build ./lib/java/dbrepo-core
-    - docker build $BUILD_ARGS -t dbrepo-data-service:build --target build ./dbrepo-data-service
-    - docker build $BUILD_ARGS -t dbrepo-metadata-service:build --target build ./dbrepo-metadata-service
-    - docker compose build $COMPOSE_BUILD_ARGS
-    - docker tag dbrepo-analyse-service:latest "${CI_REGISTRY2_URL}/analyse-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-auth-service-init:latest "${CI_REGISTRY2_URL}/auth-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-dashboard-service:latest "${CI_REGISTRY2_URL}/dashboard-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-dashboard-service-init:latest "${CI_REGISTRY2_URL}/dashboard-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-dashboard-ui:latest "${CI_REGISTRY2_URL}/dashboard-ui:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-data-service:latest "${CI_REGISTRY2_URL}/data-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-metadata-service:latest "${CI_REGISTRY2_URL}/metadata-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-search-service:latest "${CI_REGISTRY2_URL}/search-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-search-service-init:latest "${CI_REGISTRY2_URL}/search-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-storage-service-init:latest "${CI_REGISTRY2_URL}/storage-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker tag dbrepo-ui:latest "${CI_REGISTRY2_URL}/ui:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/analyse-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/auth-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/dashboard-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/dashboard-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/dashboard-ui:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/data-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/metadata-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/search-service:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/search-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/storage-service-init:${APP_VERSION}${BUILD_VERSION}"
-    - docker push "${CI_REGISTRY2_URL}/ui:${APP_VERSION}${BUILD_VERSION}"
+    - docker buildx create --name multiarch --driver docker-container --use
+  script:
+    - docker buildx build $BUILD_ARGS --platform=linux/amd64 -t dbrepo-core:build --target build ./lib/java/dbrepo-core
+    - docker buildx bake $BAKE_ARGS --platform=linux/amd64
+    - REPOSITORY_URL=$CI_REGISTRY_URL make release-images
+    - docker buildx build $BUILD_ARGS --platform=linux/arm64 -t dbrepo-core:build --target build ./lib/java/dbrepo-core
+    - docker buildx bake $BAKE_ARGS --platform=linux/arm64
+    - REPOSITORY_URL=$CI_REGISTRY2_URL make release-images
 
 release-helm:
   stage: release
diff --git a/dbrepo-analyse-service/Dockerfile b/dbrepo-analyse-service/Dockerfile
index 26ea3ce65c2336bfd065e891c8d88ea47aaf73a3..df313ec934c825ab20b71da9a29f6e3f272a3462 100644
--- a/dbrepo-analyse-service/Dockerfile
+++ b/dbrepo-analyse-service/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk --no-cache add \
diff --git a/dbrepo-dashboard-service/Dockerfile b/dbrepo-dashboard-service/Dockerfile
index e739245d3031956fe99203167a25f72b9c06ed3b..62caad802ff5e7a852e9d47bbd8d41c79bb2e261 100644
--- a/dbrepo-dashboard-service/Dockerfile
+++ b/dbrepo-dashboard-service/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-dashboard-service/init.Dockerfile b/dbrepo-dashboard-service/init.Dockerfile
index 487e3e280e245e8f01a2a2caf0c8bf202765bc0c..4d00c467cd4621e894c456e4a7325d87108ccfb3 100644
--- a/dbrepo-dashboard-service/init.Dockerfile
+++ b/dbrepo-dashboard-service/init.Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-dashboard-ui/Dockerfile b/dbrepo-dashboard-ui/Dockerfile
index daf9ef46dd808a99eb6bb776945f014cdf6f9c8f..346f800c8c575c13ed42377b1a05d0a0cb9a042e 100644
--- a/dbrepo-dashboard-ui/Dockerfile
+++ b/dbrepo-dashboard-ui/Dockerfile
@@ -1,4 +1,4 @@
-FROM docker.io/bitnami/grafana:11.5.3 AS runtime
+FROM --platform=$BUILDPLATFORM bitnami/grafana:11.5.3 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY --chown=grafana:grafana ./grafana.ini ./conf/grafana.ini
diff --git a/dbrepo-data-service/Dockerfile b/dbrepo-data-service/Dockerfile
index 7468f1c568d033c86d60579ed2c35576bcaac736..769014f61bd2b6925820470d9070203a8431e68b 100644
--- a/dbrepo-data-service/Dockerfile
+++ b/dbrepo-data-service/Dockerfile
@@ -1,9 +1,9 @@
 ###### FIRST STAGE ######
-FROM dbrepo-core:build AS dependency
+FROM --platform=$BUILDPLATFORM dbrepo-core:build AS dependency
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 ###### SECOND STAGE ######
-FROM maven:3-amazoncorretto-17 AS build
+FROM --platform=$BUILDPLATFORM maven:3-amazoncorretto-17 AS build
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY ./pom.xml ./
@@ -21,7 +21,7 @@ COPY ./services ./services
 RUN mvn -fn clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM amazoncorretto:17-alpine3.19 AS runtime
+FROM --platform=$BUILDPLATFORM amazoncorretto:17-alpine3.19 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache curl bash jq
diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile
index 8d01865d85a0d1cad2cad9f2f7849a655b9e0259..f034640e6a47afdf6822352dc33bb498726bf708 100644
--- a/dbrepo-metadata-service/Dockerfile
+++ b/dbrepo-metadata-service/Dockerfile
@@ -1,9 +1,9 @@
 ###### FIRST STAGE ######
-FROM dbrepo-core:build AS dependency
+FROM --platform=$BUILDPLATFORM dbrepo-core:build AS dependency
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 ###### SECOND STAGE ######
-FROM maven:3-amazoncorretto-17 AS build
+FROM --platform=$BUILDPLATFORM maven:3-amazoncorretto-17 AS build
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY ./pom.xml ./
@@ -22,7 +22,7 @@ COPY ./services ./services
 RUN mvn -fn clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM amazoncorretto:17-alpine3.19 AS runtime
+FROM --platform=$BUILDPLATFORM amazoncorretto:17-alpine3.19 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache curl bash jq
diff --git a/dbrepo-search-service/Dockerfile b/dbrepo-search-service/Dockerfile
index 03660245769c484057c002c56ffc60e94370a8ee..1d0862a9e51d82a0f8e8154caea2efec9a51dba0 100644
--- a/dbrepo-search-service/Dockerfile
+++ b/dbrepo-search-service/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-search-service/init.Dockerfile b/dbrepo-search-service/init.Dockerfile
index cf4cb94d85e4e8c707e6305278a17a7a3cdbfc8e..2099df48cc53586a0cfa64bae3ea1dd4615c6780 100644
--- a/dbrepo-search-service/init.Dockerfile
+++ b/dbrepo-search-service/init.Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-ui/Dockerfile b/dbrepo-ui/Dockerfile
index 53928c49982c3574861affd83cc79c26c15813ec..966b7dbb3d1a17085732e852bcc64de713655586 100644
--- a/dbrepo-ui/Dockerfile
+++ b/dbrepo-ui/Dockerfile
@@ -1,5 +1,5 @@
 ###### FIRST STAGE ######
-FROM oven/bun:1.1.40-alpine AS build
+FROM --platform=$BUILDPLATFORM oven/bun:1.1.40-alpine AS build
 
 WORKDIR /app
 
@@ -27,7 +27,7 @@ COPY ./nuxt.config.ts ./nuxt.config.ts
 RUN bun run build
 
 ###### SECOND STAGE ######
-FROM node:22.9.0-alpine3.20 AS runtime
+FROM --platform=$BUILDPLATFORM node:22.9.0-alpine3.20 AS runtime
 
 ARG APP_VERSION="latest"
 ARG COMMIT=""
diff --git a/docker-compose.yml b/docker-compose.yml
index 69db5103154eaaa6d8a589e87a9c1e8cc6caaf02..c4c990a8cce944928e517969f3a7ead0c5fdbe00 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -88,7 +88,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro-hm
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -112,7 +111,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro-hm
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -135,7 +133,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -172,7 +169,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-medium
-    platform: linux/amd64
     depends_on:
       dbrepo-identity-service:
         condition: service_healthy
@@ -199,7 +195,6 @@ services:
       SYSTEM_PASSWORD: ${SYSTEM_PASSWORD:-admin}
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     depends_on:
       dbrepo-auth-service:
         condition: service_healthy
@@ -263,7 +258,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-small
-    platform: linux/amd64
     depends_on:
       dbrepo-auth-service:
         condition: service_healthy
@@ -308,7 +302,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -337,7 +330,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -355,7 +347,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-medium
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -385,7 +376,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -418,7 +408,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro
-    platform: linux/amd64
     depends_on:
       dbrepo-search-service:
         condition: service_healthy
@@ -441,7 +430,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     depends_on:
       dbrepo-analyse-service:
         condition: service_healthy
@@ -483,7 +471,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -506,7 +493,6 @@ services:
       SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     depends_on:
       dbrepo-search-db:
         condition: service_healthy
@@ -533,7 +519,6 @@ services:
       SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     depends_on:
       dbrepo-dashboard-ui:
         condition: service_healthy
@@ -558,7 +543,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -575,7 +559,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     logging:
       driver: json-file
 
@@ -595,7 +578,6 @@ services:
       STORAGE_ENDPOINT: ${STORAGE_ENDPOINT:-http://storage-service:9000}
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     depends_on:
       dbrepo-storage-service:
         condition: service_healthy
@@ -648,7 +630,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-large
-    platform: linux/amd64
     depends_on:
       dbrepo-data-db:
         condition: service_healthy
@@ -681,7 +662,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-nano
-    platform: linux/amd64
     extra_hosts:
       - "localhost:host-gateway"
     logging:
@@ -708,7 +688,6 @@ services:
       <<: *healthcheck-params
     deploy:
       <<: *resources-micro
-    platform: linux/amd64
     depends_on:
       dbrepo-dashboard-ui:
         condition: service_healthy
diff --git a/grafana/grafana.ini b/grafana/grafana.ini
deleted file mode 100644
index df8b9eb1b46e93de904d0c69a448a441f646260f..0000000000000000000000000000000000000000
--- a/grafana/grafana.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[server]
-domain = grafana
-root_url = http://grafana/grafana
-serve_from_sub_path = true
-