diff --git a/grafana/rootfs/Dockerfile b/grafana/rootfs/Dockerfile
index 92f1695..9ba02cd 100644
--- a/grafana/rootfs/Dockerfile
+++ b/grafana/rootfs/Dockerfile
@@ -1,17 +1,40 @@
-FROM docker.io/drycc/go-dev:latest AS go-dev
+FROM docker.io/drycc/base:bullseye
 
+RUN adduser --system \
+   --shell /bin/bash \
+   --disabled-password \
+   --home /usr/share/grafana \
+   --group \
+   drycc
 
-FROM docker.io/grafana/grafana:8.3.4
-USER root
 COPY . /
-COPY --from=go-dev /bin/envtpl /usr/share/grafana/envtpl
-RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
-    && apk add --update bash fontconfig curl \
-    && chmod +x /usr/share/grafana/start-grafana \
-    && chmod 644 /usr/share/grafana/grafana.ini.tpl \
-    && chmod +x /usr/share/grafana/entrypoint.sh
+ENV GRAFANA_VERSION="8.3.6" \
+    ENVTPL_VERSION="1.0.0"
 
+RUN install-packages fontconfig curl \
+  && install-stack grafana $GRAFANA_VERSION \
+  && install-stack envtpl $ENVTPL_VERSION \
+  && rm -rf \
+      /usr/share/doc \
+      /usr/share/man \
+      /usr/share/info \
+      /usr/share/locale \
+      /var/lib/apt/lists/* \
+      /var/log/* \
+      /var/cache/debconf/* \
+      /etc/systemd \
+      /lib/lsb \
+      /lib/udev \
+      /usr/lib/`echo $(uname -m)`-linux-gnu/gconv/IBM* \
+      /usr/lib/`echo $(uname -m)`-linux-gnu/gconv/EBC* \
+  && bash -c "mkdir -p /usr/share/man/man{1..8}" \
+  && mkdir /var/lib/grafana -p \
+  && chown -R drycc:drycc /opt/drycc/grafana /usr/share/grafana /var/lib/grafana \
+  && chmod +x /usr/share/grafana/start-grafana \
+  && chmod 644 /usr/share/grafana/grafana.ini.tpl \
+  && chmod +x /usr/share/grafana/entrypoint.sh
+
+USER drycc
 WORKDIR /usr/share/grafana
-ENTRYPOINT ["/usr/share/grafana/entrypoint.sh"]
 CMD ["./start-grafana"]
 EXPOSE 3000
diff --git a/grafana/rootfs/usr/share/grafana/start-grafana b/grafana/rootfs/usr/share/grafana/start-grafana
index d16df04..e3c0948 100755
--- a/grafana/rootfs/usr/share/grafana/start-grafana
+++ b/grafana/rootfs/usr/share/grafana/start-grafana
@@ -19,7 +19,7 @@ DASHBOARD_LOCATION=${DASHBOARD_JSON_PATH:-"/usr/share/grafana/api/dashboards"}
 mkdir /usr/share/grafana/dashboards
 
 echo "Building grafana.ini!"
-./envtpl > grafana.ini < grafana.ini.tpl
+envtpl > grafana.ini < grafana.ini.tpl
 echo "Finished building grafana config..."
 echo "###########################################"
 echo "###########################################"
@@ -40,7 +40,7 @@ if [ -n "${LDAP_ENDPOINT}" ]; then
   fi
   export LDAP_HOST=${ldap_url_array[3]//\/\//}
   export LDAP_PORT=${ldap_url_array[4]}
-  ./envtpl > ldap.toml < ldap.toml.tpl
+  envtpl > ldap.toml < ldap.toml.tpl
   echo "Finished building ldap config..."
   echo "###########################################"
   echo "###########################################"
@@ -65,7 +65,7 @@ fi
 
 set -m
 echo "Starting Grafana in the background"
-exec grafana-server -config /usr/share/grafana/grafana.ini -homepath /usr/share/grafana &
+exec grafana-server -config /usr/share/grafana/grafana.ini -homepath /opt/drycc/grafana &
 echo "Waiting for Grafana to come up..."
 until curl -q --fail --output /dev/null --silent "http://${GRAFANA_USER}:${GRAFANA_PASSWD}@localhost:${GRAFANA_PORT}/api/org"; do
   printf "."
diff --git a/telegraf/rootfs/Dockerfile b/telegraf/rootfs/Dockerfile
index ec406ab..72507b2 100644
--- a/telegraf/rootfs/Dockerfile
+++ b/telegraf/rootfs/Dockerfile
@@ -1,16 +1,33 @@
-FROM docker.io/drycc/go-dev:latest AS go-dev
+FROM docker.io/drycc/base:bullseye
 
-
-FROM docker.io/library/telegraf:1.21.2
+RUN adduser --system \
+   --shell /bin/bash \
+   --disabled-password \
+   --group \
+   drycc
 
 COPY . /
-COPY --from=go-dev /bin/envtpl /usr/bin/envtpl
+ENV TELEGRAF_VERSION="1.21.3" \
+    ENVTPL_VERSION="1.0.0" \
+    JQ_VERSION="1.6"
+
+RUN install-stack telegraf $TELEGRAF_VERSION \
+  && install-stack envtpl $ENVTPL_VERSION \
+  && install-stack jq $JQ_VERSION \
+  && rm -rf \
+      /usr/share/doc \
+      /usr/share/man \
+      /usr/share/info \
+      /usr/share/locale \
+      /var/lib/apt/lists/* \
+      /var/log/* \
+      /var/cache/debconf/* \
+      /etc/systemd \
+      /lib/lsb \
+      /lib/udev \
+      /usr/lib/`echo $(uname -m)`-linux-gnu/gconv/IBM* \
+      /usr/lib/`echo $(uname -m)`-linux-gnu/gconv/EBC* \
+  && bash -c "mkdir -p /usr/share/man/man{1..8}"
 
-RUN chown -R telegraf /home/telegraf/ \
-  && apt-get update \
-  && apt-get install -y --no-install-recommends jq \
-  && apt-get autoremove -y \
-  && apt-get clean -y \
-  && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man /usr/share/doc
-WORKDIR /home/telegraf
+USER drycc
 CMD ["/home/telegraf/start-telegraf"]
