116 lines
2.8 KiB
Markdown
116 lines
2.8 KiB
Markdown
# 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
|
|
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):
|
|
|
|
```env
|
|
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
|
|
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
|
|
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:
|
|
|
|
```env
|
|
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
|
|
|
|
```bash
|
|
php artisan netgescon:update --channel=free
|
|
```
|
|
|
|
### Applicazione update
|
|
|
|
```bash
|
|
php artisan netgescon:update --channel=free --apply
|
|
```
|
|
|
|
### Apply con licensed
|
|
|
|
```bash
|
|
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.
|