Hardened InfluxDB OSS 2.9.1, built from source. Non-root, multi-arch, optional web UI via -ui tags.
927
Minimal, security-hardened InfluxDB OSS v2 for time-series data (metrics, events, IoT, monitoring). Compiled from source on Alpine with a patched dependency graph, runs non-root, statically linked, multi-arch (amd64 + arm64), and scans clean (0 HIGH/CRITICAL) on Docker Scout and Trivy.
Ships in two flavors — minimal (API-only) and with the embedded web UI — selected purely by which tag you pull.
| Tag | Web UI | Use when… | Size |
|---|---|---|---|
latest, 2.9.1 | ❌ | Production / headless. You drive InfluxDB via its HTTP API, Grafana, Telegraf, or Terraform. Smallest surface. | ~149 MB |
latest-ui, 2.9.1-ui | ✅ | You want the built-in browser UI at :8086 (dashboards, Data Explorer, setup wizard, token & bucket management). | ~191 MB |
-ui suffix = with UI. Same server either way; the
only difference is whether the web UI is compiled in.2.9.1 / 2.9.1-ui for reproducible deploys; latest / latest-ui
track the newest build.| Port | Purpose |
|---|---|
8086 | HTTP API and web UI (UI flavor). Health at GET /health. |
| Path | What | Notes |
|---|---|---|
/var/lib/influxdb2 | All data — TSM engine + bolt metadata | Declared VOLUME; mount a named volume or host dir here or you lose data on container removal. |
/etc/influxdb2 | Config directory | Mount if you use a config file. |
Runs as non-root uid/gid 1500; make mounted dirs writable by that uid.
With the web UI (easiest to explore):
docker run -d --name influxdb \
-p 8086:8086 \
-v influxdb-data:/var/lib/influxdb2 \
truebyteinnovationllp/influxdb:2.9.1-ui
Then open http://localhost:8086/ and complete the setup wizard.
Headless / API-only (production):
docker run -d --name influxdb \
-p 8086:8086 \
-v influxdb-data:/var/lib/influxdb2 \
truebyteinnovationllp/influxdb:2.9.1
First-time setup via the API (no UI needed):
curl -s -XPOST http://localhost:8086/api/v2/setup \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"<strong-password>",
"org":"my-org","bucket":"default","retentionPeriodSeconds":0}'
Check it's up:
curl -s http://localhost:8086/health
# {"name":"influxdb","status":"pass",...}
All InfluxDB v2 options are settable via INFLUXD_* env vars. Common ones:
| Env var | Default | Purpose |
|---|---|---|
INFLUXD_BOLT_PATH | /var/lib/influxdb2/influxd.bolt | Metadata (bolt) store |
INFLUXD_ENGINE_PATH | /var/lib/influxdb2/engine | TSM time-series engine |
INFLUXD_CONFIG_PATH | /etc/influxdb2 | Config directory |
Full reference: https://docs.influxdata.com/influxdb/v2/reference/config-options/
Read-only root filesystem (only the data volume stays writable):
docker run -d --name influxdb \
--read-only \
--cap-drop ALL \
--security-opt no-new-privileges \
-p 8086:8086 \
-v influxdb-data:/var/lib/influxdb2 \
truebyteinnovationllp/influxdb:2.9.1
Notes
influx CLI is not bundled; use the UI, the
HTTP API, Grafana, or Terraform.The server (Go binary) and Alpine layer are rebuilt with Go 1.26 and patched
dependencies, so both flavors report 0 HIGH/CRITICAL on Docker Scout and
Trivy. Honest caveat: the UI flavor embeds a prebuilt front-end (JS/CSS) bundle
inside the binary — image scanners don't inspect bundled JS, so its npm
dependencies are a detection gap, tracked upstream in influxdata/ui, not a
guarantee. The minimal (no-UI) flavor has no such surface.
Images are published multi-arch with SBOM + provenance attestations.
| Version | InfluxDB OSS 2.9.1 (built from upstream tag v2.9.1) |
| Base | Alpine (digest-pinned), non-root uid 1500 |
| Arch | linux/amd64, linux/arm64 |
| Data volume | /var/lib/influxdb2 |
| Port | 8086 |
Docs: https://docs.influxdata.com/influxdb/v2/ · Maintained by TrueByte Innovation.
Content type
Image
Digest
sha256:c5832c9c3…
Size
36.8 MB
Last updated
3 months ago
docker pull truebyteinnovationllp/influxdb