Hardened Grafana OSS from source — Go 1.26 + Node 24, non-root, Cosign-signed, 0 OS CVEs
10K+
Minimal, security-hardened Grafana OSS — built entirely from source on Alpine Linux. A four-stage build clones the pinned upstream commit, compiles the Node 24 frontend, cross-compiles the Go 1.26 backend for every target architecture, and ships a lean non-root runtime image.
| Feature | Official grafana/grafana | This image |
|---|---|---|
| OS CVEs | 2 HIGH (OpenSSL) | 0 — apk upgrade pulls latest patches |
| Built from source | No | Yes — Go 1.26 backend + Node 24 frontend |
| Non-root | Yes | Yes — uid 472 (well-known Grafana uid) |
| Read-only rootfs | No | Yes |
| Cosign signed | No | Yes |
| SBOM + provenance | No | Yes |
| Multi-arch | amd64, arm64 | amd64, arm64, ppc64le, s390x |
| Bundled plugins | Elasticsearch (24 CVEs) | None |
| Tag | Grafana version | Platforms |
|---|---|---|
13.0.2, latest | Grafana OSS 13.0.2 (commit 3fcdbc5a) | linux/amd64 · linux/arm64 · linux/ppc64le · linux/s390x |
docker run -d --name grafana \
-p 3000:3000 \
-v grafana-data:/var/lib/grafana \
truebyteinnovationllp/grafana:13.0.2
Open http://localhost:3000 and log in with admin / admin (you will be prompted to change the password). Check health:
curl -s http://localhost:3000/api/health
# {"commit":"3fcdbc5a","database":"ok","version":"13.0.2"}
Run with a read-only root filesystem — only the data volume needs to be writable:
docker run -d --name grafana \
--read-only \
--cap-drop ALL \
--security-opt no-new-privileges \
-p 3000:3000 \
-v grafana-data:/var/lib/grafana \
--tmpfs /tmp \
truebyteinnovationllp/grafana:13.0.2
Configure via GF_<SECTION>_<KEY> environment variables, or mount your own config:
docker run -d --name grafana \
-p 3000:3000 \
-e GF_SECURITY_ADMIN_PASSWORD='<strong-password>' \
-e GF_SERVER_ROOT_URL='https://grafana.example.com' \
-v grafana-data:/var/lib/grafana \
truebyteinnovationllp/grafana:13.0.2
Common environment variables:
| Variable | Default | Purpose |
|---|---|---|
GF_SECURITY_ADMIN_PASSWORD | admin | Initial admin password |
GF_SERVER_ROOT_URL | http://localhost:3000 | External URL (behind a reverse proxy) |
GF_PATHS_DATA | /var/lib/grafana | Database, plugins, sessions |
GF_PATHS_PROVISIONING | /etc/grafana/provisioning | Datasource/dashboard provisioning |
GF_LOG_MODE | console | Log to stdout (read-only-rootfs friendly) |
GF_INSTALL_PLUGINS | — | Comma-separated list of plugins to install at startup |
See the Grafana configuration reference for the full list.
The image is signed with Cosign. The public key is published at:
https://gitlab.truebyteinnovation.com/internal-docker/docker-images/-/raw/main/assets/cosign.pub
# Download the public key
curl -sSfL https://gitlab.truebyteinnovation.com/internal-docker/docker-images/-/raw/main/assets/cosign.pub \
-o cosign.pub
# Verify
cosign verify --key cosign.pub truebyteinnovationllp/grafana:13.0.2
This image is scanned with Trivy and Docker Scout on every build. CVEs suppressed via OpenVEX (grafana.openvex.json):
| CVE | Library | Justification |
|---|---|---|
| CVE-2025-60876 | BusyBox wget | Healthcheck-only; request target is a constant localhost URL — not adversary-controlled |
| CVE-2026-21728 | grafana/tempo v1 | Server-side query engine; Grafana imports only protobuf wire types — affected code path not compiled in |
| CVE-2026-28377 | grafana/tempo v1 | S3 storage backend; same reasoning — only protobuf types imported, server code absent |
| CVE-2026-42151 | prometheus/prometheus | Config HTTP API handler; Grafana uses prometheus as a Go library only — HTTP server never instantiated |
All four suppressions match the Docker Hardened Images (DHI) vulnerability profile for Grafana 13.0.2.
The frontend build requires ~6 GB RAM for webpack/rspack. Total build time is 15–30 minutes depending on hardware (builders run natively on $BUILDPLATFORM; Go cross-compiles without QEMU). The Node modules and Go module cache stay in throwaway builder stages and do not land in the final image.
Maintained by TrueByte Innovation.
Content type
Image
Digest
sha256:2165f7f08…
Size
311.6 MB
Last updated
3 months ago
docker pull truebyteinnovationllp/grafana