DiskHub is a production-oriented storage orchestration platform for teams that need a single control plane for identity, disk lifecycle, telemetry, and iSCSI exposure.
The platform combines a Rust microservice backend, an event-driven workflow layer over Kafka, a Next.js operator console, Keycloak-based identity, and a pluggable storage-node runtime. In practice, this gives you one cohesive surface for provisioning disks, managing users, tracking IO activity, and exposing storage workflows through a UI that feels like a real product rather than a demo panel.
DiskHub is built for environments where storage operations need to be predictable, observable, and easy to control:
- Centralized identity and access management through Keycloak
- Event-driven disk provisioning and deletion workflows via Kafka
- Dedicated services for identity, personal workspace logic, disk lifecycle, iSCSI, and storage-node execution
- Real-time workflow feedback for the frontend through platform events
- IO monitoring surface for operators and administrators
- Clear path from local development to staging-like and production-style deployments
- Authentication, token refresh, profile lookup, and admin user management
- Disk creation, listing, ownership management, and deletion workflows
- Workflow progress propagation from backend services to the frontend
- iSCSI integration layer for storage publication
- Storage-node abstraction with configurable backend driver
- Operator-facing monitoring for disk IO activity and platform state
- Admin panel flows for users, disks, and monitoring views
DiskHub follows a service-oriented, event-first control-plane model:
- The frontend initiates an authenticated request through the identity layer.
id-servicevalidates identity, issues workflow context, and publishes the request into Kafka.- Domain services consume and enrich the workflow as it moves through the provisioning pipeline.
disk-servicepersists disk state in MongoDB and coordinates lifecycle transitions.iscsi-serviceandstorage-node-servicehandle storage publication concerns.- Frontend update events are published throughout the pipeline so operators can track progress in near real time.
| Component | Role | Default Port |
|---|---|---|
frontend |
Next.js operator console | 3000 |
id-service |
Auth, token flows, admin users, workflow entrypoint | 3001 |
personal-service |
User-scoped workflow logic | 3002 |
disk-service |
Disk lifecycle, metadata, IO monitoring | 3003 |
iscsi-service |
iSCSI-facing workflow stage | 3004 |
storage-node-service |
Storage backend execution layer | 3005 |
keycloak |
Identity provider | 8080 |
mongo |
Persistent state store | 27017 |
kafka-worker-1/2/3 |
Event backbone | 29092 / 39092 / 49092 |
- Backend: Rust, Axum, Tokio
- Frontend: Next.js 14, React 18, TypeScript
- Messaging: Apache Kafka in KRaft mode
- Identity: Keycloak
- Persistence: MongoDB
- Container Runtime: Docker Compose
- Storage Integration: iSCSI workflow + pluggable storage-node driver
The repository ships with a full multi-service Docker Compose topology that mirrors how DiskHub is intended to run as an integrated platform:
- Independent stateless control-plane services
- Dedicated infrastructure containers for identity, persistence, and messaging
- Storage-node runtime with privileged host access when required
- Externalized configuration through environment variables
- Prebuilt image references for all major services
By default, the storage-node can run with a mock driver. For environments that need host-backed iSCSI publication, the runtime can be switched to a real driver model such as targetcli, provided the host supports the required kernel and configfs access.
Review and update .env for your environment-specific values:
- Keycloak admin credentials
- MongoDB bootstrap credentials
- Kafka cluster id if you want to override the default
ISCSI_PORTAL_ADDRESSSTORAGE_NODE_DRIVERSTORAGE_NODE_BACKING_STORE_DIR
docker compose up -dTo build local images first:
make build
docker compose up -d- Operator console:
http://localhost:3000 - Keycloak:
http://localhost:8080 - MongoDB:
mongodb://localhost:27017
cargo buildcd frontend
npm install
npm run devmake up
make down- JWT validation and Keycloak integration are handled centrally in the identity service
- Disk state is persisted in MongoDB and exposed through dedicated disk APIs
- Monitoring data is collected and surfaced through
disk-service - Frontend progress updates are emitted as workflow stages complete
- The platform is designed so each service can evolve independently without collapsing the overall operator experience
Selected platform entrypoints include:
id-servicePOST /requestPOST /auth/loginPOST /auth/refreshGET /auth/meGET /auth/configGET/POST /admin/users
disk-serviceGET /disksPOST /disksPUT /disksDELETE /disksGET /monitoring/io
All services also expose a root health endpoint on /.
DiskHub is not just a set of isolated services. It is an integrated storage control plane with a real operator workflow:
- identity-aware
- event-native
- operationally observable
- storage-focused
- ready to be adapted for internal platforms, lab clusters, staging environments, and serious infrastructure prototypes
.
├── frontend/ # Next.js operator console
├── id/ # Identity and access service
├── personal/ # User-scoped workflow service
├── disk/ # Disk lifecycle and monitoring service
├── ISCSI/ # iSCSI service
├── storage-node/ # Storage execution layer
├── data/ # Local persistent volumes
├── docker-compose.yml
└── Makefile
DiskHub gives teams a strong foundation for building a modern storage platform with authentication, orchestration, workflow visibility, and backend extensibility already wired together. If you need a storage control plane that looks and feels like a serious product from day one, this repository gives you that baseline.