Salta ai contenuti
Inizia

Licenze

La gestione delle licenze Mildport è offline. Il motore verifica ogni chiave in locale rispetto a una chiave pubblica che distribuisci con esso, così gli import continuano che tu possa raggiungerci o no — in un air-gap, durante la nostra manutenzione, una domenica sera.

La stessa licenza vale ovunque. Non c’è una «chiave cloud» e una «chiave self-hosted» separate: una chiave, verificata allo stesso modo nel nostro cloud e nella tua VPC.

  1. Ottieni una chiave di licenza dalla pagina Licenze del tuo account Mildport.
  2. Il motore detiene la chiave pubblica rispetto a cui verifica — IMPORT_LICENSE_PUBLIC_KEY, nella pagina Self-hosting dello stesso account.
  3. Ogni richiesta si verifica in locale. Nessuna chiamata di rete, mai.

Una chiave porta tenant, piano, limiti e scadenza, così un deployment può servire molti tenant con diritti diversi — il motore legge tutto dalla chiave stessa.

Le chiavi usate contro il nostro cloud gestito sono volutamente di breve vita (settimane, non anni) e si rinnovano senza supervisione: insieme alla chiave di licenza ricevi un segreto di refresh (mostrato anch’esso una sola volta). Il tuo server chiama con esso l’endpoint di refresh in cron — stesso piano, stesse origini, chiave e scadenza nuove — e sostituisce la chiave dove la incorpori. Una chiave cloud trapelata muore da sola in pochi giorni, senza infrastruttura di revoca e senza che la verifica chiami a casa.

I deployment self-hosted e air-gap sono esenti per progettazione: le loro chiavi mantengono la lunga durata del piano e non devono mai raggiungerci — niente nel motore conosce l’endpoint di refresh. Rigenerare una chiave a mano ruota anche il segreto di refresh.

Accedi, apri Licenze e crea un tenant. La chiave appare una volta, subito dopo l’emissione.

La chiave va nell’host che incorpora, come attributo license-key del widget (vedi Configurazione). È una credenziale bearer: trattala come una chiave API e tienila fuori dai repository pubblici.

Le chiavi sono a tempo, e la scadenza è l’unica cosa che ne termina la vita — non c’è un interruttore remoto, perché non c’è niente di remoto.

  • Ti scriviamo 30 giorni prima della scadenza, all’indirizzo che l’ha creata.
  • Rinnovare è un clic: rigenera sulla pagina Licenze. Ottieni una chiave nuova, quella attuale resta fino alla sua data — puoi rinnovare presto e sostituire senza downtime.
  • Dopo la scadenza, gli import con quella chiave si fermano. La soluzione è lo stesso clic.

Il pannello mostra un conto alla rovescia su ogni licenza nei suoi ultimi 30 giorni, così lo stato è visibile senza aspettare la mail.

Una chiave usata da un embed nel browser può essere fissata ai siti consentiti. Lascia la lista vuota e la chiave vale da ovunque; aggiungi origini e le richieste browser da altrove vengono rifiutate. Le chiamate lato server non sono toccate — questo protegge le chiavi incorporate, visibili a chiunque guardi il sorgente della pagina.

Imposta la lista alla creazione o alla rigenerazione. I sottodomini wildcard vanno come https://*.example.com, e le porte contano.

Poiché la verifica è offline, una chiave compromessa non può essere richiamata da remoto. Due leve:

  • Lista di revoca — aggiungi l’id di licenza a IMPORT_LICENSE_REVOKED_IDS sul motore (separati da virgola). Ha effetto al prossimo deploy e non serve una nuova chiave pubblica.
  • Rigenerare — emetti una chiave nuova dal pannello e smetti di distribuire la vecchia. Resta valida fino alla scadenza — per questo esiste la lista per il caso urgente.

Il preflight ti dice se il motore può validare le chiavi, prima che arrivi il traffico:

Terminal window
pnpm import:self-host-check

Da un’immagine invece che da un checkout sorgente? Lo stesso controllo è incluso:

Terminal window
docker run --rm --env-file .env ghcr.io/capitality-io/mildport-aio \
bun dist/cli/self-host-check.js

Su Kubernetes, helm test mildport lo esegue nel cluster.

Avanti: Riferimento di configurazione · Accesso alle immagini