Skip to Content

Rackvio Community Edition — Software Bill of Materials (SBOM)

Overview

Rackvio publishes a Software Bill of Materials (SBOM) in CycloneDX JSON format for both the backend (Python) and frontend (Node.js) components. The SBOM provides a complete inventory of all third-party dependencies, enabling:

SBOM Format

FieldValue
StandardCycloneDX v1.5
FormatJSON
Filessbom-backend.json, sbom-frontend.json

Generating SBOMs

Prerequisites

The generation tools are not included in the Rackvio runtime containers. Install them in your local environment or CI pipeline.

Backend SBOM (Python)

The backend SBOM covers all Python packages in the application:

# Install the CycloneDX Python tool pip install cyclonedx-bom # Generate SBOM from the installed packages (recommended -- captures exact versions) # Run inside the backend container or a venv with backend deps installed: cyclonedx-py environment -o sbom-backend.json --output-format json

Rackvio backend uses pyproject.toml (PEP 621, built with Hatchling) — there is no requirements.txt and it is not a Poetry project. The cyclonedx-py environment form is the reliable path: it captures the exact resolved versions from the installed interpreter (run it inside the backend container).

Frontend SBOM (Node.js)

The frontend SBOM covers all npm packages:

# Generate SBOM using the CycloneDX npm plugin (npx, no global install needed) cd frontend npx @cyclonedx/cyclonedx-npm --output-file ../sbom-frontend.json . cd ..

Generate Both at Once

#!/usr/bin/env bash # generate-sbom.sh -- Generate CycloneDX SBOMs for Rackvio set -euo pipefail echo "Generating backend SBOM (Python)..." pip install --quiet cyclonedx-bom cyclonedx-py environment -o sbom-backend.json --output-format json echo " -> sbom-backend.json" echo "Generating frontend SBOM (Node.js)..." cd frontend npx --yes @cyclonedx/cyclonedx-npm --output-file ../sbom-frontend.json . cd .. echo " -> sbom-frontend.json" echo "SBOM generation complete."

What the SBOM Covers

Backend (sbom-backend.json)

CategoryExamples
Web frameworkFastAPI, Uvicorn, Starlette
DatabaseSQLAlchemy, asyncpg, Alembic
Authpython-jose, passlib, bcrypt
ValidationPydantic, pydantic-settings
Task queueRedis (aioredis)
Utilitiespython-multipart, python-dotenv, httpx

Frontend (sbom-frontend.json)

CategoryExamples
FrameworkNext.js, React, React DOM
UI componentsRadix UI, Tailwind CSS, Lucide icons
State managementReact Query (TanStack)
AuthNextAuth.js (Auth.js)
VisualizationThree.js (3D renderer), Recharts
Utilitiesdate-fns, clsx, zod

SBOM in Release Artifacts

For each tagged release, the SBOM files are:

  1. Generated in CI during the release build.
  2. Attached to the GitHub Release as downloadable assets.
  3. Embedded in the Docker image labels (OCI annotations).

To extract the SBOM from a running container:

# Check OCI labels for SBOM reference docker inspect rackvio-community-backend | jq '.[0].Config.Labels'

Scanning the SBOM

# Scan the backend SBOM for known vulnerabilities trivy sbom sbom-backend.json # Scan the frontend SBOM trivy sbom sbom-frontend.json

Using Grype

grype sbom:sbom-backend.json grype sbom:sbom-frontend.json

Using OSV-Scanner

osv-scanner --sbom=sbom-backend.json osv-scanner --sbom=sbom-frontend.json

Updating the SBOM

The SBOM should be regenerated whenever dependencies change:

CI automation ensures the SBOM in release artifacts always matches the shipped code.