Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
minimal — Минимальная коллекция образов контейнеров, защищённых от CVE | Kitploit
Инструменты/GitHubGitHub/rtvkiz/minimal
Сканеры уязвимостейБезопасность контейнеровАудит конфигурацииБезопасность облачных средDevSecOpsБезопасность Цепочки Поставок
GitHubrtvkiz/minimal

minimal

Минимальная коллекция образов контейнеров, защищённых от CVE

Репозиторий
5132136 ч 54 мин назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

minimal — укрепленные образы контейнеров

Маленькие, укрепленные образы контейнеров, бесплатные и лицензированные по MIT.
Собраны из исходного кода с помощью пакетов Chainguard's apko и Wolfi, пересобираются каждые шесть часов.
Каждый образ подписан с помощью cosign, поставляется с аттестацией SPDX SBOM и имеет происхождение сборки SLSA Level 3. Вы можете проверить все это без учетной записи.

🌐  Просмотрите полный каталог на minimalcontainers.com  →

Build status Image Catalog License: MIT SLSA Level 3 Images: 57 Architectures

Каталог образов · Проверить образ · ·

Все 57 образов
Обсуждение на HN

Загрузка и проверка за 30 секунд

Смысл этих образов в том, что вам не нужно доверять мне. Загрузите один, а затем проверьте происхождение сами:```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:~
Больше рецептов верификации (cosign-подпись, SBOM, происхождение SLSA) в [`.github/SECURITY.md`](https://github.com/rtvkiz/minimal/blob/main/.github/SECURITY.md).

## Чем `minimal` отличается

|  | minimal | Chainguard | Docker Hardened | Minimus / RapidFort |
|---|:---:|:---:|:---:|:---:|
| **Лицензия** | MIT | Проприетарная | Apache-2.0 | Проприетарная |
| **Стоимость** | $0 | ~$30k/образ/год | Бесплатно + платная поддержка | Звонок в продажи |
| **Аутентификация для загрузки** | Нет | Да | Да | Да |
| **Лимиты на запросы** | Нет | Да | Да | Да |
| **Рецепты сборки публичны** | Да, каждый `melange.yaml` | Нет | Да, Dockerfile | Нет |
| **Cosign-подпись + SBOM + SLSA L3** | Да | Да | Да | Да |
| **SLA вендора, FedRAMP/STIG** | Нет | Да (платно) | Да (платно) | Да (платно) |

Выбирайте `minimal`, если вам нужны hardened-образы без оплаты или регистрации, если хотите читать каждый рецепт сборки от начала до конца, или если вам нужен рабочий шаблон для форка в собственный каталог.

Вероятно, это не подойдёт, если вам нужен контракт с вендором, бумаги об аккредитации FedRAMP или STIG, или тысяча с лишним образов в первый же день — это реальные задачи, которые данный проект не пытается решить.

## Что входит в каждый образ

- Cosign-подпись без ключа, проверяемая через публичный журнал Rekor.
- SPDX SBOM, прикреплённый как in-toto-аттестация — каждый пакет, версия и лицензия.
- Происхождение сборки SLSA v1.0 — криптографическое доказательство того, какой рабочий процесс, какой коммит и какой runner создали образ.
- Ежедневное сканирование Grype с результатами в [публичном каталоге](https://minimalcontainers.com) и вкладке GitHub Security.
- Родные сборки для `linux/amd64` и `linux/arm64`.
- Пользователь без root по умолчанию (UID 65532), если upstream не требует иного.
- Отсутствие shell, где возможно — большинство образов не содержат `/bin/sh`.
- Периодичность пересборки шесть часов, поэтому исправления CVE для Wolfi попадают в образы за часы, а не дни.

## Доступные образы — всего 57

| Категория | Кол-во | Основные |
|---|---|---|
| **Языки и среды выполнения** | 9 | python, node-slim, bun, go, java, ruby, php, dotnet, deno |
| **Базы данных** | 5 | mysql, mariadb, postgres-slim, sqlite, opensearch |
| **Кеши, очереди, обмен сообщениями** | 7 | redis-slim, valkey, memcached, kafka, rabbitmq, nats, mosquitto |
| **Веб-серверы и прокси** | 6 | nginx, httpd, caddy, haproxy, traefik, envoy |
| **Наблюдаемость** | 14 | prometheus, alertmanager, victoria-metrics, thanos, mimir, jaeger, loki, tempo, otelcol, fluent-bit, telegraf, node-exporter, blackbox-exporter, pushgateway |
| **Инфраструктура** | 7 | coredns, etcd, openbao, keycloak, qdrant, registry, consul |
| **Kubernetes, CI и IaC** | 4 | helm, kubectl, opentofu, trivy |
| **Приложения** | 5 | jenkins, gitea, minio, rails, mailpit |

Просматривайте каждый образ — с живыми сканами CVE, всеми тегами, SBOM и происхождением сборки — на **[minimalcontainers.com](https://minimalcontainers.com)** или разверните полный список команд pull ниже.

<details>
<summary><strong>Полный каталог образов с командами pull</strong></summary>

<br>

| Образ | Команда pull | Shell | Назначение |
|-------|--------------|-------|------------|
| | | **Языки** | |
| Python | `docker pull ghcr.io/rtvkiz/minimal-python:latest` | Нет | Python-приложения, микросервисы |
| Node.js-slim | `docker pull ghcr.io/rtvkiz/minimal-node-slim:latest` | Нет | Node.js-приложения, JavaScript |
| Bun | `docker pull ghcr.io/rtvkiz/minimal-bun:latest` | Нет | Быстрая среда выполнения JavaScript/TypeScript |
| Go | `docker pull ghcr.io/rtvkiz/minimal-go:latest` | Нет | Разработка Go, CGO-сборки |
| .NET Runtime | `docker pull ghcr.io/rtvkiz/minimal-dotnet:latest` | Нет | Среда выполнения .NET 10 для приложений |
| Java | `docker pull ghcr.io/rtvkiz/minimal-java:latest` | Нет | OpenJDK 26 JRE для Java-приложений |
| Ruby | `docker pull ghcr.io/rtvkiz/minimal-ruby:latest` | Нет | Среда выполнения Ruby 4.0 (собрана из исходников) |
| PHP | `docker pull ghcr.io/rtvkiz/minimal-php:latest` | Нет | PHP 8.5 CLI (собран из исходников) |
| Rails | `docker pull ghcr.io/rtvkiz/minimal-rails:latest` | Нет | Ruby 4.0 + Rails 8.1 (собрано из исходников) |
| Deno | `docker pull ghcr.io/rtvkiz/minimal-deno:latest` | Нет | Безопасная среда выполнения TypeScript/JavaScript |
| | | **Базы данных** | |
| MySQL | `docker pull ghcr.io/rtvkiz/minimal-mysql:latest` | Да | MySQL LTS 8.4.x, собран из исходников |
| MariaDB | `docker pull ghcr.io/rtvkiz/minimal-mariadb:latest` | Да | MariaDB LTS 11.4.x, собрана из исходников |
| PostgreSQL-slim | `docker pull ghcr.io/rtvkiz/minimal-postgres-slim:latest` | Нет | Реляционная база данных |
| SQLite | `docker pull ghcr.io/rtvkiz/minimal-sqlite:latest` | Нет | CLI встраиваемой SQL-базы данных |
| OpenSearch | `docker pull ghcr.io/rtvkiz/minimal-opensearch:latest` | Нет* | OpenSearch 3.x — поиск и аналитика |
| | | **Кеши, очереди, обмен сообщениями** | |
| Redis-slim | `docker pull ghcr.io/rtvkiz/minimal-redis-slim:latest` | Нет | Хранилище данных в памяти |
| Memcached | `docker pull ghcr.io/rtvkiz/minimal-memcached:latest` | Нет | Кеширование в памяти (собран из исходников) |
| Valkey | `docker pull ghcr.io/rtvkiz/minimal-valkey:latest` | Нет | Форк Redis под лицензией BSD (LF) |
| Kafka | `docker pull ghcr.io/rtvkiz/minimal-kafka:latest` | Да | Apache Kafka 4.x, режим KRaft |
| RabbitMQ | `docker pull ghcr.io/rtvkiz/minimal-rabbitmq:latest` | Да | AMQP-брокер RabbitMQ 4.x |
| NATS | `docker pull ghcr.io/rtvkiz/minimal-nats:latest` | Нет | Сервер NATS с JetStream |
| Mosquitto | `docker pull ghcr.io/rtvkiz/minimal-mosquitto:latest` | Нет | MQTT-брокер Eclipse Mosquitto (EPL-2.0/EDL-1.0) |
| | | **Веб-серверы и прокси** | |
| Nginx | `docker pull ghcr.io/rtvkiz/minimal-nginx:latest` | Нет | Обратный прокси, статические файлы |
| HTTPD | `docker pull ghcr.io/rtvkiz/minimal-httpd:latest` | Возможно* | Веб-сервер Apache |
| Caddy | `docker pull ghcr.io/rtvkiz/minimal-caddy:latest` | Нет | Веб-сервер с автоматическим HTTPS |
| HAProxy | `docker pull ghcr.io/rtvkiz/minimal-haproxy:latest` | Нет | Балансировщик TCP/HTTP |
| Traefik | `docker pull ghcr.io/rtvkiz/minimal-traefik:latest` | Нет | Облачный обратный прокси |
| Envoy | `docker pull ghcr.io/rtvkiz/minimal-envoy:latest` | Нет | Сервисный прокси и балансировщик |
| | | **Наблюдаемость** | |
| Prometheus | `docker pull ghcr.io/rtvkiz/minimal-prometheus:latest` | Нет | Сбор метрик и оповещение |
| VictoriaMetrics | `docker pull ghcr.io/rtvkiz/minimal-victoria-metrics:latest` | Нет | Высокопроизводительное хранилище метрик |
| Jaeger | `docker pull ghcr.io/rtvkiz/minimal-jaeger:latest` | Нет | Распределённая трассировка (v2) |
| Loki | `docker pull ghcr.io/rtvkiz/minimal-loki:latest` | Нет | Агрегация логов (Grafana Labs) |
| Tempo | `docker pull ghcr.io/rtvkiz/minimal-tempo:latest` | Нет | Бэкенд распределённой трассировки (Grafana Labs, AGPL) |
| OTel Collector | `docker pull ghcr.io/rtvkiz/minimal-otelcol:latest` | Нет | Ядро коллектора OpenTelemetry |
| Fluent Bit | `docker pull ghcr.io/rtvkiz/minimal-fluent-bit:latest` | Нет | Лёгкий процессор логов |
| Node Exporter | `docker pull ghcr.io/rtvkiz/minimal-node-exporter:latest` | Нет | Метрики аппаратного обеспечения и ОС узла для Prometheus |
| Blackbox Exporter | `docker pull ghcr.io/rtvkiz/minimal-blackbox-exporter:latest` | Нет | Проверка конечных точек Prometheus (HTTP/DNS/TCP/ICMP) |
| Pushgateway | `docker pull ghcr.io/rtvkiz/minimal-pushgateway:latest` | Нет | Отправка метрик Prometheus для пакетных задач |
| | | **Инфраструктура** | |
| CoreDNS | `docker pull ghcr.io/rtvkiz/minimal-coredns:latest` | Нет | DNS по умолчанию для Kubernetes |
| etcd | `docker pull ghcr.io/rtvkiz/minimal-etcd:latest` | Нет | Распределённое key-value хранилище |
| OpenBao | `docker pull ghcr.io/rtvkiz/minimal-openbao:latest` | Нет | Управление секретами (форк Vault) |
| Keycloak | `docker pull ghcr.io/rtvkiz/minimal-keycloak:latest` | Да | Управление идентификацией и доступом |
| Qdrant | `docker pull ghcr.io/rtvkiz/minimal-qdrant:latest` | Нет | Векторная БД для AI/ML (Rust) |
| Registry | `docker pull ghcr.io/rtvkiz/minimal-registry:latest` | Нет | OCI-реестр дистрибуции (Docker Registry v2), собран из исходников |
| Consul | `docker pull ghcr.io/rtvkiz/minimal-consul:latest` | Нет | Обнаружение сервисов HashiCorp Consul + KV (BUSL-1.1) |
| | | **Kubernetes и CI** | |
| Helm | `docker pull ghcr.io/rtvkiz/minimal-helm:latest` | Нет | CLI Helm 3 для развёртывания чартов Kubernetes |
| kubectl | `docker pull ghcr.io/rtvkiz/minimal-kubectl:latest` | Нет | CLI kubectl для операций с кластером Kubernetes |
| | | **Приложения** | |
| Jenkins | `docker pull ghcr.io/rtvkiz/minimal-jenkins:latest` | Да | Автоматизация CI/CD |
| Gitea | `docker pull ghcr.io/rtvkiz/minimal-gitea:latest` | Да | Самостоятельно размещаемый Git-сервис |
| MinIO | `docker pull ghcr.io/rtvkiz/minimal-minio:latest` | Нет | S3-совместимое объектное хранилище |
| Mailpit | `docker pull ghcr.io/rtvkiz/minimal-mailpit:latest` | Нет | SMTP и тестирование email для разработчиков, собран из исходников |
| | | **AI / ML** | |
| CUDA Python | *отключено* | Нет | Python + CUDA 12.9 + cuDNN 9.10 (сборка приостановлена, код сохранён) |

*\*HTTPD, Jenkins, Kafka, MySQL, OpenSearch, Gitea, Keycloak содержат shell (`sh`/`busybox`/`bash`) из-за транзитивных зависимостей Wolfi или потому, что это требуется точкой входа upstream. CI считает наличие shell информационным.*

</details>

## Быстрый старт```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
Больше примеров docker run (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>

## Использование в продакшене

**Фиксируйте теги на неизменяемые версии.** Каждый образ публикуется с двумя тегами:

| Тег | Формат | Пример | Изменяемый |
|---|---|---|---|
| Версия | `VERSION-rEPOCH` | `ghcr.io/rtvkiz/minimal-redis-slim:8.4.1-r0` | Нет |
| Последняя | `latest` | `ghcr.io/rtvkiz/minimal-redis-slim:latest` | Да |

### Dev-варианты (`:latest-dev`)

Большинство образов публикуют `-dev`-версию, собранную из **того же исходного кода, что и продакшн** — та же версия рантайма, тот же набор пакетов, а также оболочка, менеджер пакетов, компиляторный инструментарий и отладочные инструменты, соответствующие образу. Предназначены для этапов сборки CI и отладки внутри пода, **не для развертывания в продакшене**.

Типичное многоэтапное использование:```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

Чтобы получить интерактивную оболочку, переопределите точку входа (образы для разработки сохраняют точку входа для продакшена для совместимости подстановки):```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:~
Варианты для разработчиков используют те же подписи, SBOM и конвейер происхождения SLSA, что и основные образы. Они **не отслеживаются на публичной панели CVE** — намеренно предоставляют большую поверхность атаки. См. [`.github/SECURITY.md`](https://github.com/rtvkiz/minimal/blob/main/.github/SECURITY.md#dev-variants--dev-tags) для политики и [`docs/dev-variants/CONVENTIONS.md`](https://github.com/rtvkiz/minimal/blob/main/docs/dev-variants/CONVENTIONS.md) для правил состава пакетов.

**Доступно сегодня:** 57 из 57 вариантов для разработчиков — каждый образ в каталоге теперь поставляется с сопутствующим тегом `:latest-dev`, собранным из того же исходного кода, что и основной.

<details>
<summary><strong>Статус варианта для разработчиков по каждому образу</strong></summary>

<br>

Легенда: ✅ поставляется с `:latest-dev` · 🚧 в процессе · 📝 запланировано

Категории следуют трём шаблонам из [`docs/dev-variants/templates/`](https://github.com/rtvkiz/minimal/blob/main/docs/dev-variants/templates) (среда выполнения / демон / сервер). Столбец "Ссылка" показывает, где мы зеркалируем публичный набор пакетов `<image>-public/devConfigs` от Chainguard; **собственная разработка** означает, что Chainguard поставляет образ только для Enterprise, и мы разработали состав dev-версии самостоятельно.

| Образ | Категория | Ссылка | Статус |
|---|---|---|---|
| ruby | среда выполнения | Chainguard `ruby-public` | ✅ |
| python | среда выполнения | Chainguard `python-public` | ✅ |
| node-slim | среда выполнения | Chainguard `node-public` | ✅ |
| go | среда выполнения | Chainguard `go-public` | ✅ |
| java | среда выполнения | Chainguard `jdk-public` | ✅ |
| dotnet | среда выполнения | Chainguard `dotnet-runtime-10-public` | ✅ |
| php | среда выполнения | собственная разработка (composer отложен — см. PR) | ✅ |
| rails | среда выполнения | собственная разработка (производный от ruby) | ✅ |
| bun | среда выполнения | собственная разработка | ✅ |
| deno | среда выполнения | собственная разработка | ✅ |
| postgres-slim | демон | Chainguard `postgres-public` | ✅ |
| mariadb | демон | Chainguard `mariadb-public` | ✅ |
| mysql | демон | собственная разработка | ✅ |
| redis-slim | демон | Chainguard `redis-public` | ✅ |
| valkey | демон | Chainguard `valkey-public` | ✅ |
| memcached | демон | собственная разработка | ✅ |
| sqlite | демон | собственная разработка | ✅ |
| opensearch | демон | собственная разработка | ✅ |
| kafka | демон | собственная разработка | ✅ |
| rabbitmq | демон | собственная разработка | ✅ |
| nats | демон | собственная разработка | ✅ |
| etcd | демон | собственная разработка | ✅ |
| qdrant | демон | собственная разработка | ✅ |
| nginx | сервер | Chainguard `nginx-public` | ✅ |
| haproxy | сервер | Chainguard `haproxy-public` | ✅ |
| minio | сервер | Chainguard `minio-client-public` (сервер — собственная разработка) | ✅ |
| httpd | сервер | собственная разработка | ✅ |
| caddy | сервер | собственная разработка | ✅ |
| traefik | сервер | собственная разработка | ✅ |
| envoy | сервер | собственная разработка | ✅ |
| prometheus | сервер | собственная разработка | ✅ |
| victoria-metrics | сервер | собственная разработка | ✅ |
| jaeger | сервер | собственная разработка | ✅ |
| otelcol | сервер | собственная разработка | ✅ |
| loki | сервер | собственная разработка | ✅ |
| fluent-bit | сервер | собственная разработка | ✅ |
| node-exporter | сервер | собственная разработка | ✅ |
| blackbox-exporter | сервер | собственная разработка | ✅ |
| pushgateway | сервер | собственная разработка | ✅ |
| coredns | сервер | собственная разработка | ✅ |
| gitea | сервер | собственная разработка | ✅ |
| jenkins | сервер | собственная разработка | ✅ |
| keycloak | сервер | собственная разработка | ✅ |
| openbao | сервер | собственная разработка | ✅ |
| registry | сервер | Chainguard `registry-public` | ✅ |
| mailpit | сервер | собственная разработка (Chainguard не поставляет публичный mailpit) | ✅ |
| consul | сервер | собственная разработка (Chainguard не поставляет публичный consul; BUSL-1.1) | ✅ |
| tempo | сервер | собственная разработка (Chainguard не поставляет публичный tempo; AGPL-3.0) | ✅ |
| mosquitto | демон | собственная разработка (Chainguard не поставляет публичный mosquitto; 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"]

Принудительное применение подписи + происхождения в Kubernetes с помощью sigstore-policy-controller или 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:~
Суффикс `-r0` — это номер ревизии: сбрасывается до `r0` при каждом обновлении вышестоящей версии, увеличивается (`r1`, `r2`, …) для пересборок той же вышестоящей версии (например, исправления зависимостей). Старые теги версий сохраняются при пересборках.

## Пайплайн сборки

<details>
<summary><strong>Диаграмма пайплайна</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.   │
└─────────────────────────────────────────────────────────────────────────────┘

Расписание обновлений

ТриггерКогдаЦель
По расписаниюКаждые 6 часовЗагрузка последних исправлений CVE из Wolfi
PushПри слиянии в mainРазвертывание изменений конфигурации
ВручнуюРучной запуск workflowЭкстренные пересборки

Результаты сканирования уязвимостей отображаются в живом каталоге, сводке задания и на вкладке GitHub Security.

Автоматическое отслеживание вышестоящих проектов

Образы, собираемые из исходников, отслеживаются специальными workflow, которые ежедневно проверяют вышестоящие проекты и открывают PR:

Workflow обновления для каждого образа (всего 21)
WorkflowОтслеживаетЧто делает
update-jenkins.ymlРелизы Jenkins LTSОбновляет версию в конфигурации melange, Makefile, build.yml
update-redis.ymlРелизы Redis на GitHubОбновляет версию и SHA256
update-mysql.ymlТеги MySQL LTS (8.4.x) на GitHubОбновляет версию и SHA256
update-memcached.ymlРелизы Memcached на GitHubОбновляет версию и SHA256
update-kafka.ymlТеги Apache Kafka 4.x на GitHubОбновляет версию и SHA512
update-php.ymlAPI релизов php.netОбновляет версию и SHA256; создает issue для новой минорной/мажорной серии
update-rails.ymlRubyGems API + теги Ruby на GitHubОбновляет версии гема Rails и исходного кода Ruby независимо
update-rabbitmq.ymlРелизы RabbitMQ на GitHubОбновляет версию и SHA256
update-minio.ymlРелизы MinIO на GitHubОбновляет тег релиза, версию на основе даты и SHA256
update-victoria-metrics.ymlРелизы VictoriaMetrics на GitHubОбновляет версию и SHA256
update-jaeger.ymlРелизы Jaeger v2.x на GitHubОбновляет версию и SHA256; предупреждает об изменении мажорной версии
update-otelcol.ymlСтабильные релизы OTel CollectorОбновляет версию и SHA256; пропускает предрелизы
update-qdrant.ymlРелизы Qdrant v1.x на GitHubОбновляет версию и SHA256
update-etcd.ymlРелизы etcd v3.x на GitHubОбновляет версию и SHA256
update-opensearch.ymlРелизы OpenSearch 3.x на GitHubОбновляет версию в Makefile и README
update-gitea.ymlТеги Gitea v1.x на GitHubОбновляет версию и SHA256
update-coredns.yml

Патч-обновления автоматически отправляются в PR и проверяются CI. Повышения минорной/мажорной версии создают issue в GitHub с чек-листом ручного обновления.

Спецификации образов (версии, пользователи, точки входа)
ОбразВерсияПользовательТочка входаРабочая директория
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

Сборка локально```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:~
Смотрите [Makefile](https://github.com/rtvkiz/minimal/blob/main/Makefile) для полного списка целей.

## Структура проекта

<details>
<summary><strong>Структура репозитория</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

Статус и дорожная карта

Недавно добавлено:

  • Бесключевые подписи Cosign на каждом образе.
  • SPDX SBOM, прикреплённые как атестации in-toto, проверяемые с помощью cosign verify-attestation.
  • Происхождение сборки SLSA v1.0, проверяемое с помощью gh attestation verify.
  • Публичная панель CVE с разбивкой по образам.
  • Цикл пересборки каждые шесть часов, плюс ежедневное исправление транзитивных CVE в Go.

Далее в планах:

  • Утверждения VEX для CVE, которые на самом деле не эксплуатируются в наших образах, чтобы панель перестала показывать шум.
  • Объединение рабочих процессов обновления для каждого образа в одну задачу на основе матрицы.
  • Узкоспециализированные AI/ML образы (варианты Python с поддержкой CUDA) — есть обсуждение на HN, где это поднималось, и кажется, стоит изучить.

Чем этот проект не является:

  • Поддерживается одним разработчиком, поэтому нет вендорского SLA и нет дежурной ротации.
  • Не сертифицирован по стандартам FedRAMP / FIPS / STIG. Проверяемое происхождение и SBOM помогают с аудитами, но не заменяют документацию.

Участие в разработке

PR'ы приветствуются. В CONTRIBUTING.md описана настройка сборки, соглашения по образам и чек-лист локальной валидации, который я запускаю перед отправкой.

Если вы нашли проблему безопасности, пожалуйста, используйте частную систему отчетов об уязвимостях GitHub, а не открывайте публичный issue. Политика раскрытия и сроки ответа описаны в .github/SECURITY.md.

Лицензия

MIT — см. LICENSE.

Образы контейнеров включают пакеты из Wolfi и других источников, каждый со своей лицензией (Apache-2.0, MIT, GPL, LGPL, BSD и т.д.). Полная информация о лицензиях находится в SBOM каждого образа:```bash cosign download sbom ghcr.io/rtvkiz/minimal-python:latest | jq '.packages[].licenseConcluded'

root@kitploit:~
Скачать инструмент
Теги CoreDNS v1.x на GitHub
Обновляет версию и SHA256
update-openbao.ymlТеги OpenBao v2.x на GitHubОбновляет версию и SHA256
update-loki.ymlТеги Loki v3.x на GitHubОбновляет версию и SHA256
update-fluent-bit.ymlТеги Fluent Bit v5.x на GitHubОбновляет версию и SHA256
update-keycloak.ymlТеги Keycloak 26.x на GitHubОбновляет версию и SHA256
update-wolfi-packages.ymlWolfi APKINDEXОбнаруживает новые версии Python, Node, Go, .NET, Java, PostgreSQL, Deno
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/