2.8 KiB
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 (
freeelicensed).
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: richiedecode+authvalidi.
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
.envprima dell'applicazione, - esclusione
storage/e.envdalla sovrascrittura, php artisan optimize:clearpost update,- migrate automatico se richiesto da manifest.
6. Roadmap consigliata (step successivi)
- Firma manifest con chiave privata (Ed25519) e verifica firma lato client.
- Endpoint audit update (chi ha scaricato/applicato e quando).
- UI admin Filament per vedere canale/versione e lanciare update.
- Rollback automatico completo (codice + DB) con policy di retention.