This commit is contained in:
Jonas Bengtsson
2026-09-16 06:08:37 +02:00
parent cce6a4960e
commit 8d2c54beae
54 changed files with 8480 additions and 41 deletions
+79 -41
View File
@@ -2,7 +2,7 @@
## Service Specification
**Status:** Initial specification
**Status:** Initial specification, revised 2026-09-15 (MVP split into three releases)
**Target deployment:** Docker Compose / Portainer Stack
**Primary broker:** Eclipse Mosquitto 2.1.x
**Architecture:** Mosquitto + custom backend + custom frontend + PostgreSQL
@@ -2134,14 +2134,18 @@ Generated configuration and secrets shall not be stored in Git.
---
# 68. MVP scope
# 68. MVP scope and release plan
The first functional release should include:
The original single "first release" list contained roughly 25 sub-systems and is not achievable as one release. The MVP is therefore split into three releases. Each release is independently deployable and useful, and each builds on the previous one.
## 68.1 Release 1 — Core broker administration
Goal: deliver the original core requirement — a web-managed Mosquitto broker with client authentication and authorization, including ACLs, without touching files on the host.
```text
Docker Compose stack
Mosquitto 2.1.x
Mosquitto 2.1.x (pinned)
PostgreSQL
@@ -2149,60 +2153,94 @@ FastAPI backend
React frontend
Management authentication
Management authentication (sessions, Argon2id, ADMIN_INITIAL_* bootstrap)
Management RBAC
Management RBAC (core roles)
Dynamic Security integration
Dynamic Security integration (backend as MQTT admin client)
MQTT clients
MQTT clients (create/disable/enable/delete, password reset, random passwords)
Groups
Roles
ACL editor
ACL editor (all six ACL types, %u/%c patterns, priorities)
ACL simulator
CA creation
Server certificates
Client certificates
CSR signing
Certificate revocation
CRL
Broker configuration editor
Broker configuration editor (basic + advanced mode)
Listener configuration
Configuration validation
Configuration validation (--test-config)
Configuration revisioning
Configuration deployment
Broker reload
Dashboard
$SYS monitoring
Audit logging
Backup/restore
Configuration generation from the PostgreSQL model
```
Release 1 delivers a secure default broker configuration and removes the need to edit
`mosquitto.conf`, the Dynamic Security JSON, or password files manually.
## 68.2 Release 2 — PKI, versioning, and controlled change
Goal: make TLS/mTLS and broker configuration changes safe and auditable.
```text
CA creation (internal CA, import CA)
Server certificate generation (CN, SANs, key algorithm/length)
Client certificates (managed-key mode, one-time download)
CSR signing
Certificate revocation and CRL generation/publishing
mTLS listeners (require_certificate, use_identity_as_username)
Configuration revisions (history, diff)
Configuration deployment with health check
Broker reload (mosquitto_signal / SIGHUP), reload-vs-restart classification
Configuration rollback (rollback creates a new revision)
mosquitto-control service (validate, activate, signal, health check)
```
## 68.3 Release 3 — Operations, safety, and visibility
Goal: make the platform usable for daily operation and secure change management.
```text
ACL simulator (with parity tests against real broker decisions)
Dashboard ($SYS monitoring, broker status)
Certificate expiry monitoring and dashboard warnings
Audit logging (all privileged actions)
Backup and restore (logical backup, encrypted)
Configuration drift detection
Client metadata/tags (owner, purpose, last known connection)
Connected-client view (where available)
```
## 68.4 Post-MVP
Topic explorer, MQTT test client, connection tester, client provisioning wizard,
bridge configuration, retained-message administration, Prometheus metrics, external
notifications, and the approval workflow remain post-MVP features as previously
planned (see sections 69 and 70).
---
# 69. Phase 2
# 69. Post-MVP: Phase 2
The second phase should add:
After the three MVP releases (section 68) are complete, the next phase should add:
```text
Topic explorer
@@ -2221,7 +2259,7 @@ External notification mechanisms
---
# 70. Phase 3
# 70. Post-MVP: Phase 3
Potential advanced functionality: