Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
minimal — Minimale CVE-gehärtete Container-Image-Sammlung | Kitploit
Tools/GitHubGitHub/rtvkiz/minimal
SchwachstellenscannerContainer-SicherheitKonfigurationsprüfungCloud-SicherheitDevSecOpsLieferkettensicherheit
GitHubrtvkiz/minimal

minimal

Minimale CVE-gehärtete Container-Image-Sammlung

Repository anzeigen
513213vor 14h 27mVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

minimal — gehärtete Container-Images

Kleine, gehärtete Container-Images, kostenlos und MIT-lizenziert.
Aus dem Quellcode mit Chainguards apko und Wolfi-Paketen gebaut, alle sechs Stunden neu erstellt.
Jedes Image ist mit cosign signiert, enthält eine SPDX-SBOM-Bescheinigung und führt den SLSA-Level-3-Build-Provenance mit. Sie können alles ohne Konto überprüfen.

🌐  Das vollständige Katalog durchsuchen auf minimalcontainers.com  →

Build-Status Bildkatalog Lizenz: MIT SLSA Level 3 Bilder: 57 Architekturen

Bildkatalog · Ein Image überprüfen · Alle 57 Bilder · HN-Diskussion


In 30 Sekunden herunterladen und überprüfen

Tool herunterladen

Der Sinn dieser Images ist, dass Sie mir nicht vertrauen müssen. Laden Sie eines herunter und überprüfen Sie dann selbst die Provenienz:```bash

Pull. It's public — no login, no rate limit.

docker pull ghcr.io/rtvkiz/minimal-python:latest

Verify the build provenance. This proves the image was produced by the

workflow file in this repo, at a specific commit, on a GitHub-hosted runner.

gh attestation verify oci://ghcr.io/rtvkiz/minimal-python:latest --owner rtvkiz

Pull the SPDX SBOM so you can see exactly what's inside.

cosign verify-attestation --type spdxjson
--certificate-identity-regexp='https://github.com/rtvkiz/minimal/'
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'
ghcr.io/rtvkiz/minimal-python:latest
| jq -r '.payload | @base64d | fromjson | .predicate' > python-sbom.spdx.json

root@kitploit:~
Weitere Verifikationsrezepte (Cosign-Signatur, SBOM, SLSA-Provenienz) befinden sich in [`.github/SECURITY.md`](https://github.com/rtvkiz/minimal/blob/main/.github/SECURITY.md).

## Wie sich `minimal` unterscheidet

|  | minimal | Chainguard | Docker Hardened | Minimus / RapidFort |
|---|:---:|:---:|:---:|:---:|
| **Lizenz** | MIT | Proprietär | Apache-2.0 | Proprietär |
| **Kosten** | $0 | ~$30.000/Bild/Jahr | Kostenlos + kostenpflichtiger Support | Verkaufsgespräch |
| **Authentifizierung zum Pull** | Nein | Ja | Ja | Ja |
| **Ratenbegrenzungen** | Keine | Ja | Ja | Ja |
| **Bau-Rezepte öffentlich** | Ja, jede `melange.yaml` | Nein | Ja, Dockerfiles | Nein |
| **Cosign-Sig + SBOM + SLSA L3** | Ja | Ja | Ja | Ja |
| **Anbieter-SLA, FedRAMP/STIG** | Nein | Ja (kostenpflichtig) | Ja (kostenpflichtig) | Ja (kostenpflichtig) |

Greifen Sie zu `minimal` wenn Sie gehärtete Images ohne Bezahlung oder Registrierung möchten, wenn Sie jedes Bau-Rezept vollständig lesen möchten, oder wenn Sie eine funktionierende Vorlage zum Forken in Ihren eigenen internen Katalog wünschen.

Es ist wahrscheinlich nicht die richtige Wahl, wenn Sie einen Anbietervertrag, FedRAMP- oder STIG-Akkreditierungsunterlagen oder am ersten Tag tausend oder mehr Images benötigen – das sind reale Dinge, die dieses Projekt nicht zu lösen versucht.

## Was jedes Image mitbringt

- Eine Cosign-Signatur ohne Schlüssel, verifizierbar gegen das öffentliche Rekor-Transparenzlogbuch.
- Ein SPDX-SBOM, das als In-toto-Bestätigung angehängt ist – jedes Paket, jede Version und jede Lizenz.
- SLSA v1.0-Build-Provenienz – kryptografischer Nachweis, welcher Workflow, welcher Commit und welcher Runner das Image erstellt hat.
- Ein täglicher Grype-Scan, mit Ergebnissen im [öffentlichen Katalog](https://minimalcontainers.com) und dem GitHub Security-Tab.
- Native `linux/amd64`- und `linux/arm64`-Builds.
- Standardmäßig ein Nicht-Root-Benutzer (UID 65532), es sei denn, das Upstream-Projekt besteht auf etwas anderem.
- Keine Shell, wo möglich – die meisten Images liefern kein `/bin/sh` mit.
- Ein sechsstündiger Neubau-Rhythmus, sodass Wolfi-CVE-Patches in Stunden statt Tagen ankommen.

## Verfügbare Images – 57 insgesamt

| Kategorie | Anzahl | Highlights |
|---|---|---|
| **Sprachen & Laufzeiten** | 9 | python, node-slim, bun, go, java, ruby, php, dotnet, deno |
| **Datenbanken** | 5 | mysql, mariadb, postgres-slim, sqlite, opensearch |
| **Caches, Warteschlangen, Messaging** | 7 | redis-slim, valkey, memcached, kafka, rabbitmq, nats, mosquitto |
| **Webserver & Proxys** | 6 | nginx, httpd, caddy, haproxy, traefik, envoy |
| **Observability** | 14 | prometheus, alertmanager, victoria-metrics, thanos, mimir, jaeger, loki, tempo, otelcol, fluent-bit, telegraf, node-exporter, blackbox-exporter, pushgateway |
| **Infrastruktur** | 7 | coredns, etcd, openbao, keycloak, qdrant, registry, consul |
| **Kubernetes, CI & IaC** | 4 | helm, kubectl, opentofu, trivy |
| **Apps** | 5 | jenkins, gitea, minio, rails, mailpit |

Durchsuchen Sie jedes Image – mit Live-CVE-Scans, allen Tags, SBOMs und Build-Provenienz – unter **[minimalcontainers.com](https://minimalcontainers.com)** oder erweitern Sie die vollständige Pull-Befehrsliste unten.

<details>
<summary><strong>Vollständiger Image-Katalog mit Pull-Befehlen</strong></summary>

<br>

![6cf9d22b-2cae-41d5-8eb2-52547d9e9f7f_1920x1080.png](https://raw.githubusercontent.com/rtvkiz/minimal/main/src/6cf9d22b-2cae-41d5-8eb2-52547d9e9f7f_1920x1080.png)

| Image | Pull-Befehl | Shell | Anwendungsfall |
|-------|--------------|-------|----------|
| | | **Sprachen** | |
| Python | `docker pull ghcr.io/rtvkiz/minimal-python:latest` | Nein | Python-Apps, Microservices |
| Node.js-slim | `docker pull ghcr.io/rtvkiz/minimal-node-slim:latest` | Nein | Node.js-Apps, JavaScript |
| Bun | `docker pull ghcr.io/rtvkiz/minimal-bun:latest` | Nein | Schnelle JavaScript/TypeScript-Laufzeit |
| Go | `docker pull ghcr.io/rtvkiz/minimal-go:latest` | Nein | Go-Entwicklung, CGO-Builds |
| .NET Runtime | `docker pull ghcr.io/rtvkiz/minimal-dotnet:latest` | Nein | .NET 10-Laufzeit für Apps |
| Java | `docker pull ghcr.io/rtvkiz/minimal-java:latest` | Nein | OpenJDK 26 JRE für Java-Apps |
| Ruby | `docker pull ghcr.io/rtvkiz/minimal-ruby:latest` | Nein | Ruby 4.0-Laufzeit (aus Quellen gebaut) |
| PHP | `docker pull ghcr.io/rtvkiz/minimal-php:latest` | Nein | PHP 8.5 CLI (aus Quellen gebaut) |
| Rails | `docker pull ghcr.io/rtvkiz/minimal-rails:latest` | Nein | Ruby 4.0 + Rails 8.1 (aus Quellen gebaut) |
| Deno | `docker pull ghcr.io/rtvkiz/minimal-deno:latest` | Nein | Sichere TypeScript/JavaScript-Laufzeit |
| | | **Datenbanken** | |
| MySQL | `docker pull ghcr.io/rtvkiz/minimal-mysql:latest` | Ja | MySQL LTS 8.4.x, aus Quellen gebaut |
| MariaDB | `docker pull ghcr.io/rtvkiz/minimal-mariadb:latest` | Ja | MariaDB LTS 11.4.x, aus Quellen gebaut |
| PostgreSQL-slim | `docker pull ghcr.io/rtvkiz/minimal-postgres-slim:latest` | Nein | Relationale Datenbank |
| SQLite | `docker pull ghcr.io/rtvkiz/minimal-sqlite:latest` | Nein | Eingebettete SQL-Datenbank-CLI |
| OpenSearch | `docker pull ghcr.io/rtvkiz/minimal-opensearch:latest` | Nein* | OpenSearch 3.x – Suche & Analyse |
| | | **Caches, Warteschlangen, Messaging** | |
| Redis-slim | `docker pull ghcr.io/rtvkiz/minimal-redis-slim:latest` | Nein | In-Memory-Datenspeicher |
| Memcached | `docker pull ghcr.io/rtvkiz/minimal-memcached:latest` | Nein | In-Memory-Caching (aus Quellen gebaut) |
| Valkey | `docker pull ghcr.io/rtvkiz/minimal-valkey:latest` | Nein | BSD-lizenzierter Redis-Fork (LF) |
| Kafka | `docker pull ghcr.io/rtvkiz/minimal-kafka:latest` | Ja | Apache Kafka 4.x, KRaft-Modus |
| RabbitMQ | `docker pull ghcr.io/rtvkiz/minimal-rabbitmq:latest` | Ja | RabbitMQ 4.x AMQP-Broker |
| NATS | `docker pull ghcr.io/rtvkiz/minimal-nats:latest` | Nein | NATS Server mit JetStream |
| Mosquitto | `docker pull ghcr.io/rtvkiz/minimal-mosquitto:latest` | Nein | Eclipse Mosquitto MQTT-Broker (EPL-2.0/EDL-1.0) |
| | | **Webserver & Proxys** | |
| Nginx | `docker pull ghcr.io/rtvkiz/minimal-nginx:latest` | Nein | Reverse Proxy, statische Dateien |
| HTTPD | `docker pull ghcr.io/rtvkiz/minimal-httpd:latest` | Vielleicht* | Apache-Webserver |
| Caddy | `docker pull ghcr.io/rtvkiz/minimal-caddy:latest` | Nein | Automatischer HTTPS-Webserver |
| HAProxy | `docker pull ghcr.io/rtvkiz/minimal-haproxy:latest` | Nein | TCP/HTTP-Lastverteiler |
| Traefik | `docker pull ghcr.io/rtvkiz/minimal-traefik:latest` | Nein | Cloud-nativer Reverse Proxy |
| Envoy | `docker pull ghcr.io/rtvkiz/minimal-envoy:latest` | Nein | Service-Proxy & Lastverteiler |
| | | **Observability** | |
| Prometheus | `docker pull ghcr.io/rtvkiz/minimal-prometheus:latest` | Nein | Metriksammlung & Alarmierung |
| VictoriaMetrics | `docker pull ghcr.io/rtvkiz/minimal-victoria-metrics:latest` | Nein | Hochleistungs-Metrikspeicher |
| Jaeger | `docker pull ghcr.io/rtvkiz/minimal-jaeger:latest` | Nein | Verteiltes Tracing (v2) |
| Loki | `docker pull ghcr.io/rtvkiz/minimal-loki:latest` | Nein | Log-Aggregation (Grafana Labs) |
| Tempo | `docker pull ghcr.io/rtvkiz/minimal-tempo:latest` | Nein | Verteiltes Tracing-Backend (Grafana Labs, AGPL) |
| OTel Collector | `docker pull ghcr.io/rtvkiz/minimal-otelcol:latest` | Nein | OpenTelemetry Collector-Kern |
| Fluent Bit | `docker pull ghcr.io/rtvkiz/minimal-fluent-bit:latest` | Nein | Leichter Log-Prozessor |
| Node Exporter | `docker pull ghcr.io/rtvkiz/minimal-node-exporter:latest` | Nein | Prometheus-Host-Hardware- & Betriebssystemmetriken |
| Blackbox Exporter | `docker pull ghcr.io/rtvkiz/minimal-blackbox-exporter:latest` | Nein | Prometheus-Endpunkt-Prüfung (HTTP/DNS/TCP/ICMP) |
| Pushgateway | `docker pull ghcr.io/rtvkiz/minimal-pushgateway:latest` | Nein | Prometheus-Metrik-Push für Batch-Jobs |
| | | **Infrastruktur** | |
| CoreDNS | `docker pull ghcr.io/rtvkiz/minimal-coredns:latest` | Nein | Kubernetes-Standard-DNS |
| etcd | `docker pull ghcr.io/rtvkiz/minimal-etcd:latest` | Nein | Verteilter Key-Value-Speicher |
| OpenBao | `docker pull ghcr.io/rtvkiz/minimal-openbao:latest` | Nein | Geheimnisverwaltung (Vault-Fork) |
| Keycloak | `docker pull ghcr.io/rtvkiz/minimal-keycloak:latest` | Ja | Identitäts- & Zugriffsverwaltung |
| Qdrant | `docker pull ghcr.io/rtvkiz/minimal-qdrant:latest` | Nein | Vektor-DB für KI/ML (Rust) |
| Registry | `docker pull ghcr.io/rtvkiz/minimal-registry:latest` | Nein | OCI-Distributionsregister (Docker Registry v2), aus Quellen gebaut |
| Consul | `docker pull ghcr.io/rtvkiz/minimal-consul:latest` | Nein | HashiCorp Consul Service Discovery + KV (BUSL-1.1) |
| | | **Kubernetes & CI** | |
| Helm | `docker pull ghcr.io/rtvkiz/minimal-helm:latest` | Nein | Helm 3 CLI für Kubernetes-Chart-Bereitstellung |
| kubectl | `docker pull ghcr.io/rtvkiz/minimal-kubectl:latest` | Nein | kubectl CLI für Kubernetes-Cluster-Operationen |
| | | **Apps** | |
| Jenkins | `docker pull ghcr.io/rtvkiz/minimal-jenkins:latest` | Ja | CI/CD-Automatisierung |
| Gitea | `docker pull ghcr.io/rtvkiz/minimal-gitea:latest` | Ja | Selbstgehosteter Git-Dienst |
| MinIO | `docker pull ghcr.io/rtvkiz/minimal-minio:latest` | Nein | S3-kompatibler Objektspeicher |
| Mailpit | `docker pull ghcr.io/rtvkiz/minimal-mailpit:latest` | Nein | SMTP- & E-Mail-Tests für Entwickler, aus Quellen gebaut |
| | | **KI / ML** | |
| CUDA Python | *deaktiviert* | Nein | Python + CUDA 12.9 + cuDNN 9.10 (Build pausiert, Code beibehalten) |

*\*HTTPD, Jenkins, Kafka, MySQL, OpenSearch, Gitea, Keycloak enthalten eine Shell (`sh`/`busybox`/`bash`) über transitive Wolfi-Abhängigkeiten oder weil der Upstream-Entrypoint dies erfordert. CI behandelt das Vorhandensein einer Shell als informativ.*

</details>

## Schnellstart```bash
# Python app
docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-python:latest /app/main.py

# Nginx reverse proxy
docker run -d -p 8080:80 ghcr.io/rtvkiz/minimal-nginx:latest

# PostgreSQL
docker run -d -p 5432:5432 -v pgdata:/var/lib/postgresql/data \
  ghcr.io/rtvkiz/minimal-postgres-slim:latest

# Redis
docker run -d -p 6379:6379 ghcr.io/rtvkiz/minimal-redis-slim:latest

# Kafka (KRaft mode — auto-initializes storage on first boot)
docker run -d -p 9092:9092 -v kafkadata:/var/kafka/data \
  ghcr.io/rtvkiz/minimal-kafka:latest
Weitere docker run Beispiele (Node, Go, MySQL, MariaDB, Java, .NET, PHP, Rails, RabbitMQ, Gitea, …)


```bash

Node.js

docker run --rm -v $(pwd):/app -w /app ghcr.io/rtvkiz/minimal-node-slim:latest index.js

Bun

docker run --rm ghcr.io/rtvkiz/minimal-bun:latest --version

Go

docker run --rm -v $(pwd):/app -w /app ghcr.io/rtvkiz/minimal-go:latest build -o /tmp/app .

HTTPD

docker run -d -p 8080:80 ghcr.io/rtvkiz/minimal-httpd:latest

Jenkins

docker run -d -p 8080:8080 -v jenkins_home:/var/jenkins_home ghcr.io/rtvkiz/minimal-jenkins:latest

MySQL

docker run -d -p 3306:3306 -v mysqldata:/var/lib/mysql ghcr.io/rtvkiz/minimal-mysql:latest

Memcached

docker run -d -p 11211:11211 ghcr.io/rtvkiz/minimal-memcached:latest

SQLite

docker run --rm -v $(pwd):/data ghcr.io/rtvkiz/minimal-sqlite:latest /data/mydb.sqlite "SELECT sqlite_version();"

.NET

docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-dotnet:latest /app/myapp.dll

Java

docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-java:latest -jar /app/myapp.jar

PHP

docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-php:latest /app/index.php

Rails

docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-rails:latest -e "require 'rails'; puts Rails.version"

RabbitMQ

docker run -d -p 5672:5672 -v rabbitmqdata:/var/lib/rabbitmq ghcr.io/rtvkiz/minimal-rabbitmq:latest

Gitea

docker run -d -p 3000:3000 -v giteadata:/data/gitea ghcr.io/rtvkiz/minimal-gitea:latest

root@kitploit:~
</details>

## Verwendung in der Produktion

**Auf unveränderliche Versionstags festlegen.** Jedes Image wird mit zwei Tags veröffentlicht:

| Tag | Format | Beispiel | Veränderlich |
|---|---|---|---|
| Version | `VERSION-rEPOCH` | `ghcr.io/rtvkiz/minimal-redis-slim:8.4.1-r0` | Nein |
| Latest | `latest` | `ghcr.io/rtvkiz/minimal-redis-slim:latest` | Ja |

### Dev-Varianten (`:latest-dev`)

Die meisten Images veröffentlichen einen `-dev`-Begleiter, der aus der **gleichen Quelle wie die Produktion** erstellt wird – gleiche Laufzeitversion, gleicher kuratierter Paketsatz – plus eine Shell, Paketmanager, Compiler-Toolchain und image-angepasste Debug-Werkzeuge. Gedacht für CI-Build-Stufen und Debugging im Pod, **nicht für den Produktionseinsatz**.

Typische Verwendung mit mehreren Stufen:

```dockerfile
# syntax=docker/dockerfile:1
FROM ghcr.io/rtvkiz/minimal-redis-slim:latest-dev AS build

COPY --from=ghcr.io/rtvkiz/minimal-redis-slim:latest --chown=root:root /usr/local/bin/redis-server /usr/local/bin/
# ... build steps ...

FROM ghcr.io/rtvkiz/minimal-redis-slim:latest

COPY --from=build /usr/local/bin/redis-server /usr/local/bin/redis-server
``````dockerfile
FROM ghcr.io/rtvkiz/minimal-ruby:latest-dev AS build
WORKDIR /work
COPY Gemfile Gemfile.lock ./
RUN bundle install

FROM ghcr.io/rtvkiz/minimal-ruby:latest
COPY --from=build /work /work

Um eine interaktive Shell zu erhalten, überschreiben Sie den Einstiegspunkt (Entwicklungs-Images behalten den Produktions-Einstiegspunkt für die Drop-in-Kompatibilität bei):```bash docker run -it --entrypoint /bin/sh ghcr.io/rtvkiz/minimal-:latest-dev docker run -it --entrypoint /bin/bash ghcr.io/rtvkiz/minimal-:latest-dev

root@kitploit:~
Dev-Varianten teilen sich die Signatur, SBOM und SLSA-Herkunftspipeline des Produktionsimages. Sie werden **nicht im öffentlichen CVE-Dashboard verfolgt** – sie liefern bewusst eine größere Angriffsfläche aus. Siehe [`.github/SECURITY.md`](https://github.com/rtvkiz/minimal/blob/main/.github/SECURITY.md#dev-variants--dev-tags) für die Richtlinie und [`docs/dev-variants/CONVENTIONS.md`](https://github.com/rtvkiz/minimal/blob/main/docs/dev-variants/CONVENTIONS.md) für die Regeln zur Paketzusammenstellung.

**Heute ausgeliefert:** 57 von 57 Dev-Varianten – jedes Image im Katalog hat jetzt einen `:latest-dev`-Begleiter, der aus derselben Quelle wie die Produktion erstellt wurde.

<details>
<summary><strong>Dev-Varianten-Status pro Image</strong></summary>

<br>

Legende: ✅ liefert `:latest-dev` · 🚧 in Arbeit · 📝 geplant

Kategorien folgen den drei Vorlagen in [`docs/dev-variants/templates/`](https://github.com/rtvkiz/minimal/blob/main/docs/dev-variants/templates) (Laufzeit / Daemon / Server). Die Spalte „Referenz“ zeigt, wo wir Chainguards öffentliches `<image>-public/devConfigs`-Paketset spiegeln; **hausintern** bedeutet, dass Chainguard ein reines Enterprise-Image ausliefert und wir die Dev-Komposition selbst entworfen haben.

| Bild | Kategorie | Referenz | Status |
|---|---|---|---|
| ruby | Laufzeit | Chainguard `ruby-public` | ✅ |
| python | Laufzeit | Chainguard `python-public` | ✅ |
| node-slim | Laufzeit | Chainguard `node-public` | ✅ |
| go | Laufzeit | Chainguard `go-public` | ✅ |
| java | Laufzeit | Chainguard `jdk-public` | ✅ |
| dotnet | Laufzeit | Chainguard `dotnet-runtime-10-public` | ✅ |
| php | Laufzeit | hausintern (Composer zurückgestellt – siehe PR) | ✅ |
| rails | Laufzeit | hausintern (von ruby abgeleitet) | ✅ |
| bun | Laufzeit | hausintern | ✅ |
| deno | Laufzeit | hausintern | ✅ |
| postgres-slim | Daemon | Chainguard `postgres-public` | ✅ |
| mariadb | Daemon | Chainguard `mariadb-public` | ✅ |
| mysql | Daemon | hausintern | ✅ |
| redis-slim | Daemon | Chainguard `redis-public` | ✅ |
| valkey | Daemon | Chainguard `valkey-public` | ✅ |
| memcached | Daemon | hausintern | ✅ |
| sqlite | Daemon | hausintern | ✅ |
| opensearch | Daemon | hausintern | ✅ |
| kafka | Daemon | hausintern | ✅ |
| rabbitmq | Daemon | hausintern | ✅ |
| nats | Daemon | hausintern | ✅ |
| etcd | Daemon | hausintern | ✅ |
| qdrant | Daemon | hausintern | ✅ |
| nginx | Server | Chainguard `nginx-public` | ✅ |
| haproxy | Server | Chainguard `haproxy-public` | ✅ |
| minio | Server | Chainguard `minio-client-public` (Server hausintern) | ✅ |
| httpd | Server | hausintern | ✅ |
| caddy | Server | hausintern | ✅ |
| traefik | Server | hausintern | ✅ |
| envoy | Server | hausintern | ✅ |
| prometheus | Server | hausintern | ✅ |
| victoria-metrics | Server | hausintern | ✅ |
| jaeger | Server | hausintern | ✅ |
| otelcol | Server | hausintern | ✅ |
| loki | Server | hausintern | ✅ |
| fluent-bit | Server | hausintern | ✅ |
| node-exporter | Server | hausintern | ✅ |
| blackbox-exporter | Server | hausintern | ✅ |
| pushgateway | Server | hausintern | ✅ |
| coredns | Server | hausintern | ✅ |
| gitea | Server | hausintern | ✅ |
| jenkins | Server | hausintern | ✅ |
| keycloak | Server | hausintern | ✅ |
| openbao | Server | hausintern | ✅ |
| registry | Server | Chainguard `registry-public` | ✅ |
| mailpit | Server | hausintern (Chainguard liefert kein öffentliches mailpit aus) | ✅ |
| consul | Server | hausintern (Chainguard liefert kein öffentliches consul aus; BUSL-1.1) | ✅ |
| tempo | Server | hausintern (Chainguard liefert kein öffentliches tempo aus; AGPL-3.0) | ✅ |
| mosquitto | Daemon | hausintern (Chainguard liefert kein öffentliches mosquitto aus; EPL-2.0/EDL-1.0) | ✅ |

</details>```dockerfile
# Production Dockerfile — pin by version tag, ideally by digest
FROM ghcr.io/rtvkiz/minimal-go:1.26.0-r0 AS build
WORKDIR /src
COPY . .
RUN go build -o /out/app

FROM ghcr.io/rtvkiz/minimal-python:3.14.0-r0
COPY --from=build /out/app /usr/bin/app
ENTRYPOINT ["/usr/bin/app"]

Signatur + Herkunft in Kubernetes durchsetzen mit sigstore-policy-controller oder Kyverno:```yaml

Kyverno ClusterPolicy — only allow signed minimal-* images

apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: verify-minimal-images spec: validationFailureAction: Enforce rules: - name: check-signature match: any: - resources: kinds: [Pod] verifyImages: - imageReferences: - "ghcr.io/rtvkiz/minimal-" attestors: - entries: - keyless: subject: "https://github.com/rtvkiz/minimal/" issuer: "https://token.actions.githubusercontent.com"

root@kitploit:~
The `-r0` suffix is the revision number — resets to `r0` on each upstream version bump, increments (`r1`, `r2`, …) for rebuilds of the same upstream version (e.g., dependency patches). Old version tags are preserved across rebuilds.

## Build-Pipeline

<details>
<summary><strong>Pipeline-Diagramm</strong></summary>

<br>```
┌─────────────────────────────────────────────────────────────────────────────┐
│                            BUILD PIPELINE                                   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Signing Keys:                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │  PRs: keygen job (ephemeral) │ Main: repository secrets (persistent)│    │
│  └─────────────────────────────────────────────────────────────────────┘    │
│                              │                                              │
│                              ▼                                              │
│  ┌─────────────────────────────┐    ┌─────────────────────────────────────┐ │
│  │  melange-build              │    │      build-apko                     │ │
│  │  Native ARM64 runners       │    │      Wolfi pre-built packages       │ │
│  │  ┌────────┐  ┌────────────┐ │    │  ┌─────────┐     ┌───────────────┐  │ │
│  │  │ x86_64 │  │  aarch64   │ │    │  │  Wolfi  │────►│ apko publish  │  │ │
│  │  │ ubuntu │  │ ubuntu-arm │ │    │  │ packages│     │ (multi-arch)  │  │ │
│  │  └────┬───┘  └─────┬──────┘ │    │  └─────────┘     └───────┬───────┘  │ │
│  │       └─────┬──────┘        │    │                          │          │ │
│  │             ▼               │    └──────────────────────────│──────────┘ │
│  │     ┌──────────────┐        │                               │            │
│  │     │   artifacts  │        │                               │            │
│  │     │ (x86+arm64)  │        │                               │            │
│  │     └──────┬───────┘        │                               │            │
│  └────────────│────────────────┘                               │            │
│               ▼                                                │            │
│  ┌─────────────────────────────┐                               │            │
│  │  build-melange              │                               │            │
│  │  ┌─────────┐ ┌────────────┐ │                               │            │
│  │  │  merge  │►│   apko     │─┼───────────────────────────────┤            │
│  │  │ packages│ │  publish   │ │                               │            │
│  │  └─────────┘ └────────────┘ │                               │            │
│  └─────────────────────────────┘                               │            │
│                                                                ▼            │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │                     Verification & Attestation                       │   │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌─────────────────────┐   │   │
│  │  │  Grype   │─►│   Test   │─►│  cosign  │─►│  SBOM + SLSA L3     │   │   │
│  │  │ CVE scan │  │  image   │  │   sign   │  │    attestations     │   │   │
│  │  └──────────┘  └──────────┘  └──────────┘  └─────────────────────┘   │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  Note: PRs build and test but do not publish. Only main branch publishes.   │
└─────────────────────────────────────────────────────────────────────────────┘

Aktualisierungsplan

AuslöserWannZweck
GeplantAlle 6 StundenNeueste CVE-Patches von Wolfi übernehmen
PushBei Merge in mainKonfigurationsänderungen bereitstellen
ManuellWorkflow-DispatchNotfall-Neuaufbauten

Ergebnisse von Schwachstellenscans erscheinen im Live-Katalog, in der Job-Zusammenfassung und auf dem GitHub-Sicherheitsreiter.

Automatisierte Upstream-Überwachung

Quellbasierte Images werden von dedizierten Workflows überwacht, die täglich den Upstream prüfen und PRs öffnen:

Aktualisierungs-Workflows pro Image (insgesamt 21)
WorkflowÜberwachtFunktion
update-jenkins.ymlJenkins-LTS-VersionenAktualisiert Version in Melange-Konfiguration, Makefile, build.yml
update-redis.ymlRedis GitHub-ReleasesAktualisiert Version und SHA256
update-mysql.ymlMySQL LTS (8.4.x) GitHub-TagsAktualisiert Version und SHA256
update-memcached.ymlMemcached GitHub-ReleasesAktualisiert Version und SHA256
update-kafka.ymlApache Kafka 4.x GitHub-TagsAktualisiert Version und SHA512
update-php.ymlphp.net Releases-APIAktualisiert Version und SHA256; erstellt Issue für neue Neben-/Hauptserien
update-rails.ymlRubyGems-API + Ruby GitHub-TagsAktualisiert Rails-Gem- und Ruby-Quellversionen unabhängig voneinander
update-rabbitmq.ymlRabbitMQ GitHub-ReleasesAktualisiert Version und SHA256
update-minio.ymlMinIO GitHub-ReleasesAktualisiert Release-Tag, datumsbasierte Version und SHA256
update-victoria-metrics.ymlVictoriaMetrics GitHub-ReleasesAktualisiert Version und SHA256
update-jaeger.ymlJaeger v2.x GitHub-ReleasesAktualisiert Version und SHA256; warnt bei Hauptversionswechsel
update-otelcol.ymlOTel Collector stabile ReleasesAktualisiert Version und SHA256; überspringt Vorabversionen
update-qdrant.ymlQdrant v1.x GitHub-ReleasesAktualisiert Version und SHA256
update-etcd.ymletcd v3.x GitHub-ReleasesAktualisiert Version und SHA256
update-opensearch.ymlOpenSearch 3.x GitHub-ReleasesAktualisiert Version in Makefile und README
update-gitea.ymlGitea v1.x GitHub-TagsAktualisiert Version und SHA256

Patch-Updates werden automatisch per PR erstellt und von CI validiert. Neben-/Hauptversionssprünge erstellen ein GitHub-Issue mit einer Checkliste für manuelle Upgrades.

Image-Spezifikationen (Versionen, Benutzer, Einstiegspunkte)
ImageVersionBenutzerEinstiegspunktArbeitsverzeichnis
Python3.14.xnonroot (65532)/usr/bin/python3/app
Node.js-slim25.xnonroot (65532)/usr/bin/dumb-init -- /usr/bin/node/app
Bunlatestnonroot (65532)/usr/bin/bun/app
Go1.26.xnonroot (65532)/usr/bin/go/app
Nginxmainlinenginx (65532)/usr/sbin/nginx -g "daemon off;"/
HTTPD2.4.xwww-data (65532)/usr/sbin/httpd -DFOREGROUND/var/www/localhost/htdocs
Jenkins2.555.x LTSjenkins (1000)tini -- java -jar jenkins.war/var/jenkins_home
Redis8.6.xredis (65532)/usr/bin/redis-server/
MySQL8.4.xmysql (65532)/usr/bin/docker-entrypoint.sh/
MariaDB11.4.xmariadb (65532)/usr/bin/mariadbd/var/lib/mysql
Memcached1.6.xmemcached (65532)/usr/bin/memcached/
PostgreSQL18.xpostgres (70)/usr/bin/postgres/
SQLite3.51.xnonroot (65532)/usr/bin/sqlite3/data
.NET Runtime10.x

Lokal bauen```bash

Prerequisites

go install chainguard.dev/apko@latest go install chainguard.dev/melange@latest brew install anchore/grype/grype

Build & test a specific image

make python make test-python

Build everything

make build

Scan for CVEs

make scan

root@kitploit:~
Siehe das [Makefile](https://github.com/rtvkiz/minimal/blob/main/Makefile) für die vollständige Zielliste.

## Projektstruktur

<details>
<summary><strong>Repository-Aufbau</strong></summary>

<br>```
minimal/
├── <image>/
│   ├── apko/<name>.yaml          # final image config
│   ├── melange.yaml              # source build (optional)
│   └── test.sh                   # smoke test
├── .github/
│   ├── SECURITY.md               # disclosure policy + verification recipes
│   └── workflows/
│       ├── build.yml             # main CI pipeline (6h rebuilds)
│       ├── patch-go-deps.yml     # daily Go transitive CVE patching
│       ├── update-<image>.yml    # per-image upstream version tracking
│       └── update-wolfi-packages.yml
├── Makefile
├── README.md
├── CONTRIBUTING.md
└── LICENSE

Status und Fahrplan

Kürzlich umgesetzt:

  • Cosign-schlüssellose Signaturen auf jedem Image.
  • SPDX-SBOMs als in-toto-Attestierungen beigefügt, überprüfbar mit cosign verify-attestation.
  • SLSA v1.0-Build-Provenienz, überprüfbar mit gh attestation verify.
  • Ein öffentliches CVE-Dashboard mit Aufschlüsselung pro Image.
  • Ein sechsstündiger Neubau-Rhythmus, plus tägliches Patchen von transitiven Go-CVEs.

Als Nächstes:

  • VEX-Aussagen für CVEs, die in unseren Images nicht tatsächlich ausnutzbar sind, damit das Dashboard keine unnötigen Meldungen mehr anzeigt.
  • Zusammenführung der image-spezifischen Update-Workflows in einen matrixgesteuerten Job.
  • Nischen-AI/ML-Images (CUDA-fähige Python-Varianten) — es gibt einen HN-Thread, in dem dies zur Sprache kam, und es scheint eine Erkundung wert.

Was dieses Projekt nicht ist:

  • Solo-gepflegt, daher gibt es keine Anbieter-SLA und keine Bereitschaftsrotation.
  • Nicht FedRAMP-/FIPS-/STIG-zertifiziert. Die überprüfbare Provenienz und SBOMs helfen bei Audits, ersetzen aber nicht die Bürokratie.

Mitwirken

PRs sind willkommen. In CONTRIBUTING.md finden Sie das Build-Setup, die Image-Konventionen und die Checkliste für die lokale Validierung, die ich vor dem Pushen durchführe.

Wenn Sie ein Sicherheitsproblem finden, nutzen Sie bitte die private Schwachstellenmeldung von GitHub anstatt ein öffentliches Issue zu eröffnen. Die Offenlegungsrichtlinie und der Reaktionszeitplan finden Sie in .github/SECURITY.md.

Lizenz

MIT — siehe LICENSE.

Container-Images enthalten Pakete von Wolfi und anderen Quellen, jeweils mit eigenen Lizenzen (Apache-2.0, MIT, GPL, LGPL, BSD usw.). Vollständige Lizenzinformationen finden Sie im SBOM jedes Images:```bash cosign download sbom ghcr.io/rtvkiz/minimal-python:latest | jq '.packages[].licenseConcluded'

root@kitploit:~
update-coredns.ymlCoreDNS v1.x GitHub-TagsAktualisiert Version und SHA256
update-openbao.ymlOpenBao v2.x GitHub-TagsAktualisiert Version und SHA256
update-loki.ymlLoki v3.x GitHub-TagsAktualisiert Version und SHA256
update-fluent-bit.ymlFluent Bit v5.x GitHub-TagsAktualisiert Version und SHA256
update-keycloak.ymlKeycloak 26.x GitHub-TagsAktualisiert Version und SHA256
update-wolfi-packages.ymlWolfi APKINDEXErkennt neue Python-, Node-, Go-, .NET-, Java-, PostgreSQL-, Deno-Versionen
nonroot (65532)
/usr/bin/dotnet
/app
Java26.xnonroot (65532)/usr/bin/java/app
Ruby4.0.xnonroot (65532)/usr/bin/ruby/work
PHP8.5.xnonroot (65532)/usr/bin/php/app
RailsRuby 4.0.x + Rails 8.1.xnonroot (65532)/usr/bin/ruby/app
Kafka4.2.xkafka (65532)/usr/bin/kafka-entrypoint.sh/
RabbitMQ4.3.xrabbitmq (65532)/opt/rabbitmq/sbin/rabbitmq-server/
NATSlatestnonroot (65532)/usr/bin/nats-server/
Valkeylatestnonroot (65532)/usr/bin/valkey-server/
MinIORELEASE.2025-10-15minio (65532)/usr/bin/minio server --console-address :9001 /data/data
OpenSearch3.7.0opensearch (65532)/usr/share/opensearch/opensearch-docker-entrypoint.sh/usr/share/opensearch/data
etcd3.6.xnonroot (65532)/usr/bin/etcd/var/lib/etcd
VictoriaMetrics1.142.xnonroot (65532)/usr/bin/victoria-metrics/
Jaeger2.18.xnonroot (65532)/usr/bin/jaeger/
OTel Collector0.151.xnonroot (65532)/usr/bin/otelcol/
Qdrant1.17.xnonroot (65532)/usr/bin/qdrant/qdrant
Deno2.xnonroot (65532)/usr/bin/deno/app
Gitea1.26.xgitea (65532)/usr/bin/gitea web --config /etc/gitea/app.ini/var/lib/gitea
CoreDNS1.14.xnonroot (65532)/usr/bin/coredns/
OpenBao2.5.xopenbao (65532)/usr/bin/bao server/openbao/data
Keycloak26.6.xkeycloak (65532)/opt/keycloak/bin/kc.sh start-dev/opt/keycloak/data
Loki3.6.xloki (65532)/usr/bin/loki/loki
Fluent Bit5.0.xnonroot (65532)/usr/bin/fluent-bit/