| @@ -8,19 +8,20 @@ CMS per portali captive: gestione di card informative, gallerie, flip-book e con | |||
| 1. [Prerequisiti di sistema](#prerequisiti-di-sistema) | |||
| 2. [Avvio](#avvio) | |||
| 3. [Configurazione (`lib/config.ts`)](#configurazione-libconfigts) | |||
| 4. [Tipi di card](#tipi-di-card) | |||
| 5. [File consentiti negli upload](#file-consentiti-negli-upload) | |||
| 6. [Limiti di testo](#limiti-di-testo) | |||
| 7. [Sicurezza degli input](#sicurezza-degli-input) | |||
| 8. [Struttura dei dati (`data/`)](#struttura-dei-dati-data) | |||
| 9. [Stato zero, rilasci e aggiornamenti del codice](#stato-zero-rilasci-e-aggiornamenti-del-codice) | |||
| 10. [Backup e ripristino](#backup-e-ripristino) | |||
| 11. [Factory Preset (developer)](#factory-preset-developer) | |||
| 12. [Font](#font) | |||
| 13. [Deploy sotto sotto-percorso (basePath) dietro Apache](#deploy-sotto-sotto-percorso-basepath-dietro-apache) | |||
| 14. [Protezione dell'amministrazione (Keycloak) e routing](#protezione-dellamministrazione-keycloak-e-routing) | |||
| 15. [Risoluzione problemi](#risoluzione-problemi) | |||
| 3. [Aggiornamento](#aggiornamento) | |||
| 4. [Configurazione (`lib/config.ts`)](#configurazione-libconfigts) | |||
| 5. [Tipi di card](#tipi-di-card) | |||
| 6. [File consentiti negli upload](#file-consentiti-negli-upload) | |||
| 7. [Limiti di testo](#limiti-di-testo) | |||
| 8. [Sicurezza degli input](#sicurezza-degli-input) | |||
| 9. [Struttura dei dati (`data/`)](#struttura-dei-dati-data) | |||
| 10. [Stato zero, rilasci e aggiornamenti del codice](#stato-zero-rilasci-e-aggiornamenti-del-codice) | |||
| 11. [Backup e ripristino](#backup-e-ripristino) | |||
| 12. [Factory Preset (developer)](#factory-preset-developer) | |||
| 13. [Font](#font) | |||
| 14. [Deploy sotto sotto-percorso (basePath) dietro Apache](#deploy-sotto-sotto-percorso-basepath-dietro-apache) | |||
| 15. [Protezione dell'amministrazione (Keycloak) e routing](#protezione-dellamministrazione-keycloak-e-routing) | |||
| 16. [Risoluzione problemi](#risoluzione-problemi) | |||
| --- | |||
| @@ -104,6 +105,29 @@ Per un deploy reale del CPC, oltre a far girare il processo Next servono altri t | |||
| --- | |||
| ## Aggiornamento | |||
| La procedura standard per applicare un nuovo rilascio del CPC in produzione è: | |||
| 1. **Backup dei contenuti** — dall'admin: Settings → Backup & Restore → **Save backup (ZIP)**. Conserva lo zip per un eventuale rollback. (Stessa cosa via curl: `curl -O http://localhost:3000/cards/api/admin/backup`.) | |||
| 2. **Aggiorna il codice sul server** — entra nella cartella del progetto e tira la nuova versione: | |||
| ```bash | |||
| cd /data/service/captive-portal-cms/captive-portal-cms | |||
| git pull | |||
| ``` | |||
| 3. **Stop → rebuild → start** del demone Next: | |||
| ```bash | |||
| /conf/etc/rc.d/rc.custom stop && npm run build && /conf/etc/rc.d/rc.custom start | |||
| ``` | |||
| Note operative: | |||
| - I contenuti in `data/` (card, configurazione del portale, media e font caricati) **non vengono toccati** dal rebuild. Il rebuild compila solo il codice; i dati restano dove sono. | |||
| - Il bootstrap automatico controlla `data/cards.txt` all'avvio: se è vuoto (es. macchina nuova) e c'è un `factory/preset.zip` nel repo, lo srotola — vedi [Factory Preset → Bootstrap automatico all'avvio](#factory-preset-developer). | |||
| - Il sito è momentaneamente offline tra lo stop e lo start (`npm run build` può richiedere fino a un minuto). | |||
| - **Se ci sono dipendenze npm nuove** tra una versione e l'altra: `npm install` deve girare **su una macchina con internet** (la produzione è offline). Su quella macchina lancia `npm install`, poi copi la cartella `node_modules` aggiornata sul server, e solo dopo fai il rebuild. | |||
| --- | |||
| ## Configurazione (`lib/config.ts`) | |||
| Tutte le impostazioni globali sono **flag build-time** nel file [`lib/config.ts`](lib/config.ts). Dopo ogni modifica serve ricostruire: `npm run build`. | |||