netgescon-day0/docs/distribuzione-update-netgescon.md

2.8 KiB

Distribuzione e Aggiornamenti NetGescon (senza dipendenza Git locale)

Questo documento definisce un flusso pratico per:

  • congelare una baseline stabile,
  • pubblicare aggiornamenti da una macchina di distribuzione,
  • applicare update automatici sui nodi (free e licensed).

1. Punto zero (baseline stabile)

Usare lo script baseline sulla macchina attuale funzionante:

bash scripts/ops/netgescon-baseline-freeze.sh \
  --app-dir /var/www/netgescon \
  --version 0.8.0-baseline

Risultato:

  • snapshot codice (code.tar.gz),
  • backup .env,
  • dump DB best-effort,
  • file metadati baseline.

2. Macchina di distribuzione update

La macchina update ospita:

  • API Laravel già presenti: /api/v1/distribution/updates/manifest, /api/v1/distribution/updates/package
  • storage pacchetti: storage/app/distribution/{free|licensed}/

Variabili principali

Aggiungere in .env (macchina update server):

NETGESCON_LICENSED_PAIRS="CLIENTA:tokenA,CLIENTB:tokenB"

Note:

  • canale free: accesso pubblico,
  • canale licensed: richiede code+auth validi.

3. Pubblicazione release

Preparare zip release e pubblicare manifest:

bash scripts/ops/netgescon-publish-manifest.sh \
  --channel free \
  --version 0.8.1 \
  --package /var/www/netgescon/storage/app/distribution/free/netgescon-0.8.1.zip \
  --base-url https://updates.netgescon.it

Per licensed:

bash scripts/ops/netgescon-publish-manifest.sh \
  --channel licensed \
  --version 0.8.1 \
  --package /var/www/netgescon/storage/app/distribution/licensed/netgescon-0.8.1.zip \
  --base-url https://updates.netgescon.it

Il manifest contiene: version, sha256, migrate_required, package_url.

4. Nodo client: check/apply update

Configurare sul nodo da aggiornare:

NETGESCON_UPDATE_URL=https://updates.netgescon.it
NETGESCON_UPDATE_CHANNEL=free
NETGESCON_NODE_CODE=staging-01
NETGESCON_LICENSED_CODE=
NETGESCON_LICENSED_AUTH=

Per nodi licensed valorizzare code/auth.

Verifica update

php artisan netgescon:update --channel=free

Applicazione update

php artisan netgescon:update --channel=free --apply

Apply con licensed

php artisan netgescon:update --channel=licensed --apply --code=CLIENTA --auth=tokenA

5. Sicurezza minima inclusa

  • verifica hash SHA256 del pacchetto,
  • backup .env prima dell'applicazione,
  • esclusione storage/ e .env dalla sovrascrittura,
  • php artisan optimize:clear post update,
  • migrate automatico se richiesto da manifest.

6. Roadmap consigliata (step successivi)

  1. Firma manifest con chiave privata (Ed25519) e verifica firma lato client.
  2. Endpoint audit update (chi ha scaricato/applicato e quando).
  3. UI admin Filament per vedere canale/versione e lanciare update.
  4. Rollback automatico completo (codice + DB) con policy di retention.