Caronte
Servidor de llicències
Caronte és el servidor de llicències que governa l’activació dels productes de l’ecosistema. Genera i valida claus, controla quants dispositius pot activar cada llicència i quines funcionalitats habilita, i resol el cas incòmode de tot sistema de llicències: validar sense connexió. Ho fa emetent tokens signats amb Ed25519 i una caducitat configurable, de manera que un client sense xarxa segueixi funcionant durant una finestra acotada sense que això obri la porta a fer-lo servir indefinidament.
Què fa
És la peça que decideix si un producte pot arrencar, i ha de donar aquesta resposta tant amb xarxa com sense.
- Genera claus de llicència amb un format propi i en controla el cicle de vida.
- Admet llicències perpètues, per subscripció i de prova.
- Limita per seients quants dispositius poden activar una mateixa llicència.
- Habilita o deshabilita funcionalitats concretes per llicència mitjançant entitlements.
- Valida en línia o fora de línia amb tokens signats en Ed25519 i caducitat configurable.
- Exposa la validació per REST i per gRPC, perquè cada producte faci servir el protocol que li convé.
- Registra en auditoria tota operació sobre llicències i avisa per correu de caducitats i activacions.
Arquitectura
Es descompon en serveis petits darrere d’un gateway, amb la criptografia triada perquè la validació offline no depengui de compartir cap secret.
- Gateway d’API en Rust sobre Axum com a únic punt d’entrada.
- Serveis separats de llicències, validació i notificacions, cadascun amb la seva responsabilitat acotada.
- Doble protocol al servei de validació: REST per a integracions senzilles i gRPC per a les que necessiten latència baixa.
- Signatura asimètrica Ed25519 per als tokens offline: el client verifica amb la clau pública i mai custodia un secret capaç d’emetre llicències.
- Contrasenyes amb Argon2id i claus d’API emmagatzemades com a SHA-256.
- PostgreSQL 16 com a magatzem, accedit amb SQLx i consultes verificades en compilació.
- Dashboard d’administració en Next.js i desplegament complet amb Docker Compose en una sola comanda.
Stack
Serveis en Rust sobre Axum per a la part REST i tonic per a gRPC, amb SQLx contra PostgreSQL 16. La criptografia combina Ed25519 per als tokens offline, Argon2id per a contrasenyes i SHA-256 per a claus d’API. El panell d’administració és Next.js 16 amb TypeScript i Tailwind, i tot el conjunt s’aixeca amb Docker Compose, amb integració contínua a GitHub Actions i Jenkins.