Guida Introduttiva: Community Edition
La Community Edition (CE) di SagraFacile ti permette di eseguire l’intera piattaforma sulla tua infrastruttura locale. Questa versione è gratuita.
Panoramica
Con la Community Edition:
- Controllo completo: i dati rimangono sulla tua infrastruttura
- Funzionamento offline: continua a lavorare anche senza internet
- Gratuito: disponibile per il download su sagrafacile.it/releases
La Community Edition richiede conoscenze tecniche per l’installazione e la manutenzione. Se preferisci una soluzione gestita, considera la versione Cloud.
Modalità di Installazione
SagraFacile supporta due modalità di accesso, che scegli durante la configurazione iniziale:
| Modalità | Requisiti | Limitazioni |
|---|---|---|
| Dominio pubblico con HTTPS | Un dominio gestito su Cloudflare | Nessuna — configurazione completa e pienamente supportata |
| Rete locale / HTTP | Solo una rete Wi-Fi o LAN comune | Funzionalità camera e QR scanner non disponibili; configurazione best-effort |
La modalità rete locale (HTTP) non è la configurazione raccomandata. È tecnicamente più semplice da avviare, ma le restrizioni di sicurezza del browser su pagine non-HTTPS bloccano tutte le funzionalità che dipendono dalla fotocamera (scanner QR, lettura barcode, ecc.). Aggiornamenti futuri del browser potrebbero limitare ulteriori funzionalità senza preavviso.
Per un’installazione completa e pienamente supportata, usa la modalità dominio con HTTPS.
Prerequisiti
Software Richiesto
Windows
- Docker Desktop: necessario per eseguire l’applicazione — scarica qui
- PowerShell: già incluso in Windows 10 e versioni successive. Necessario per gli script di configurazione
- Un editor di testo: VS Code, Notepad++ o anche Blocco Note
Requisiti Hardware (Consigliati)
- CPU: 2+ core
- RAM: 4+ GB
- Storage: 20+ GB disponibili
- Rete: connessione Ethernet stabile (consigliata rispetto al Wi-Fi)
Requisiti di Rete (solo modalità dominio pubblico)
- Dominio su Cloudflare: il tuo dominio deve essere gestito tramite Cloudflare per ottenere certificati SSL validi
- Accesso al router: per configurare il DNS locale
Installazione
Windows
Scarica SagraFacile
Scarica l’ultima versione del pacchetto dalla pagina Releases ed estrailo in una cartella (es. C:\sagrafacile).
Esegui lo Script di Configurazione
Apri il Prompt dei comandi (o PowerShell) nella cartella di SagraFacile ed esegui:
start.batLo script rileva automaticamente se è il primo avvio o un avvio successivo:
- Primo avvio: guida interattiva completa, crea il file
sagrafacile_config.json - Avvii successivi: usa la configurazione salvata. Puoi scegliere se usarla così com’è o riconfigurare
Scegli la Modalità di Installazione
La prima scelta che lo script ti propone è la modalità di accesso:
--- Installation Mode ---
How will you access SagraFacile?
1. Public domain with HTTPS (requires a domain managed on Cloudflare)
2. Local network only / HTTP (no domain or Cloudflare needed)Rete locale / HTTP
Scegli 2. Lo script rileva automaticamente l’indirizzo IP locale del server e te lo propone:
--- Local Network Configuration ---
Enter this server's local IP address [192.168.1.10]:Premi Invio per confermare l’IP rilevato, oppure inseriscine uno diverso. SagraFacile sarà accessibile via HTTP sulla porta 80 da tutti i dispositivi della rete.
Modalità best-effort — funzionalità limitate. Le restrizioni di sicurezza del browser su pagine HTTP bloccano tutte le funzioni che dipendono dalla fotocamera: scanner QR, lettura barcode e funzionalità simili non saranno disponibili. Aggiornamenti futuri del browser potrebbero limitare ulteriori funzionalità senza preavviso. Per un’installazione completa, usa la modalità dominio con HTTPS.
Completa la Configurazione
Indipendentemente dalla modalità scelta, lo script chiede:
| Campo | Descrizione |
|---|---|
| Utente PostgreSQL | Credenziale database (default: sagrafacile) |
| Password PostgreSQL | Credenziale database |
| Nome database | (default: sagrafaciledb) |
| JWT Secret | Chiave di sicurezza — può essere generata automaticamente |
| Nome organizzazione | Nome del tuo evento o associazione |
| Email admin | Email dell’amministratore principale |
| Password admin | Password per l’account admin |
Alla fine è disponibile una sezione Configurazione Avanzata (opzionale):
| Campo | Descrizione | Default |
|---|---|---|
| JWT Issuer | Identificatore dell’emittente del token | SagraFacile |
| JWT Audience | Identificatore del destinatario del token | SagraFacileApp |
| PreOrder Polling Service | Abilita il servizio di polling per i preordini | true |
| Queue Display Customer QR | Mostra il QR cliente nelle pagine Display Coda pubbliche | false |
| Telemetria anonima | Invia statistiche anonime per migliorare il prodotto | true (abilitata) |
| Cloudflare Email | Email Cloudflare (solo modalità dominio, opzionale) | — |
Attendi l’Avvio dei Servizi
Lo script avvierà Docker Compose e tutti i servizi necessari. Al primo avvio verranno scaricate le immagini Docker (può richiedere alcuni minuti).
In modalità dominio pubblico, Caddy otterrà automaticamente un certificato SSL da Let’s Encrypt via Cloudflare DNS.
Struttura dei File
Dopo l’installazione, la cartella avrà questa struttura:
- docker-compose.yml
- Caddyfile
- .env
- sagrafacile_config.json
- start.bat
- start.sh
- stop.bat
- stop.sh
- update.bat
- update.sh
| File | Descrizione |
|---|---|
docker-compose.yml | Configurazione dei servizi Docker |
Caddyfile | Configurazione del reverse proxy — rigenerato automaticamente da start.* in base alla modalità scelta |
.env | Variabili d’ambiente — generato automaticamente da start.* |
sagrafacile_config.json | Configurazione salvata — riletta ad ogni avvio successivo |
start.* | Avvia i servizi (e gestisce la configurazione al primo avvio) |
stop.* | Ferma i servizi |
update.* | Aggiorna le immagini Docker all’ultima versione |
Non modificare .env o Caddyfile manualmente: vengono rigenerati dallo script start.* ad ogni avvio. Tutte le modifiche alla configurazione vanno fatte rieseguendo start.* e scegliendo l’opzione di riconfigurazione.
Accesso a SagraFacile
Una volta che i servizi sono attivi, apri il browser su qualsiasi dispositivo connesso alla rete e naviga a:
Rete locale / HTTP
http://192.168.1.10Sostituisci 192.168.1.10 con l’IP del server che hai configurato durante l’installazione.
Tutti i dispositivi (casse, monitor cucina, tablet camerieri) devono essere connessi alla stessa rete locale del server.
Usa le credenziali configurate durante l’installazione per effettuare il login.

Gestione dei Servizi
Avviare i Servizi
Esegui start.* dalla cartella di SagraFacile:
Windows
start.batSe esiste già un file sagrafacile_config.json, lo script chiederà se usare la configurazione esistente o riconfigurare. Premi Invio (o digita 1) per avviare con la configurazione salvata.
Fermare i Servizi
Windows
stop.batAggiornare i Servizi
Per aggiornare SagraFacile a una nuova versione:
Scarica il nuovo pacchetto
Scarica il nuovo ZIP dalla pagina Releases ed estrailo in una cartella temporanea.
Sostituisci docker-compose.yml
Copia il file docker-compose.yml dalla cartella temporanea nella cartella di SagraFacile, sovrascrivendo quello esistente. Questo è necessario perché ogni release fissa la versione delle immagini Docker.
Esegui lo script di aggiornamento
Windows
update.batLo script scarica le nuove immagini Docker e riavvia i servizi. La configurazione e i dati esistenti vengono preservati automaticamente.
Sostituisci sempre anche gli script (start.*, stop.*, update.*) dal nuovo ZIP. Le versioni minori e le patch possono includere correzioni agli script stessi — non solo alle immagini Docker.
Riconfigurare
Per modificare qualsiasi impostazione (modalità, dominio, credenziali, JWT secret, ecc.), riesegui start.* e scegli l’opzione 2 - Re-configure SagraFacile. La configurazione salvata verrà mostrata come default per ogni campo.
Visualizzare i Log
docker compose logs -fPer visualizzare i log di un servizio specifico:
docker compose logs -f api # Log del backend
docker compose logs -f frontend # Log del frontend
docker compose logs -f caddy # Log del reverse proxy
docker compose logs -f db # Log del databaseRisoluzione Problemi
I dispositivi non riescono a connettersi
Rete locale / HTTP
Verifica che:
- Tutti i dispositivi siano sulla stessa rete locale del server
- Il firewall del server non blocchi la porta 80
- L’IP del server non sia cambiato — assegna un IP statico al server sul router
Il certificato SSL non viene ottenuto (solo modalità dominio)
Se Caddy non riesce a ottenere il certificato SSL, verifica che:
- Il record DNS su Cloudflare punti correttamente al tuo IP pubblico
- L’API Token di Cloudflare sia valido e abbia i permessi corretti (
Zone:DNS:Edit)
Controlla i log di Caddy per maggiori dettagli:
docker compose logs -f caddyIl database non si avvia
Se il database non si avvia correttamente:
docker compose logs -f dbIn caso di problemi persistenti, puoi ricreare il volume del database (perderai tutti i dati):
docker compose down -v
docker compose up -dIl comando docker compose down -v elimina tutti i dati del database. Usalo solo se sei sicuro di voler ricominciare da zero.
Impossibile accedere — credenziali non valide o account admin non creato
Se dopo l’installazione il login non funziona, le cause più comuni sono:
- Le credenziali inserite durante il setup sono quelle di accesso. L’email e la password che hai configurato in
start.*sono il tuo account amministratore. Se non ricordi quali hai usato, aprila cartella di installazione e controlla il filesagrafacile_config.json— i campiINITIAL_ADMIN_EMAILeINITIAL_ADMIN_PASSWORDcontengono le credenziali configurate. - La password è troppo semplice. L’applicazione richiede una password con almeno una lettera maiuscola, un numero e un simbolo (es.
MiaPass1!). Se hai inserito una password semplice, l’account potrebbe non essere stato creato. - Il setup è stato interrotto prima dei prompt delle credenziali. In questo caso il database è stato inizializzato senza un account admin.
Soluzione: reset completo e nuovo setup
I comandi seguenti eliminano tutti i dati del database. Usali solo se stai ricominciando da zero.
Windows
Apri PowerShell nella cartella di SagraFacile ed esegui:
docker compose down
docker volume rm sagrafacile_sagrafacile_db_data
.\start.batLo script start.* rileverà la configurazione esistente e chiederà se usarla o riconfigurarla. Scegli 2 - Re-configure per impostare nuove credenziali, oppure premi Invio per usare la configurazione salvata. Al successivo avvio, le credenziali verranno ricreate nel database pulito.
Python 3 non trovato (macOS / Linux)
Se lo script start.sh restituisce Missing required command: python3, installa Python 3:
macOS
brew install python3Errore di migrazione database all’aggiornamento a v2.6.0
Se dopo aver aggiornato all’ultima versione l’API non si avvia e nei log compare un errore simile a:
23503: insert or update on table "AdAreaAssignments" violates foreign key constraint
"FK_AdAreaAssignments_OrganizationMediaAssets_MediaAssetId"si tratta di un problema di dati: esistono assegnazioni pubblicitarie (AdAreaAssignments) che puntano a file multimediali eliminati in precedenza. La migrazione non riesce ad aggiungere il vincolo di integrità referenziale finché questi record orfani sono presenti.
Soluzione: accedi al database e rimuovi i record orfani, poi riavvia i servizi.
# Connettiti al database
docker compose exec db psql -U <db_user> <db_name>
# Rimuovi i record orfani (nessuna perdita di dati operativi)
DELETE FROM "AdAreaAssignments"
WHERE "AdMediaItemId" IS NOT NULL
AND "AdMediaItemId" NOT IN (SELECT "Id" FROM "AdMediaItems");
# Esci da psql
\q# Riavvia i servizi — la migrazione ora andrà a buon fine
docker compose restart apiQuesto problema si verifica solo se in passato sono stati eliminati file dalla libreria multimediale senza rimuovere le relative assegnazioni alle aree. Non comporta nessuna perdita di dati operativi (ordini, menu, eventi).
Backup e Manutenzione
Backup del Database
I dati del database sono salvati in un volume Docker. Per fare un backup:
docker compose exec db pg_dump -U postgres sagrafacile > backup.sqlRipristino del Database
Per ripristinare da un backup:
docker compose exec -T db psql -U postgres sagrafacile < backup.sqlBackup della Configurazione
Il file sagrafacile_config.json contiene tutta la configurazione dell’installazione. Conservane una copia in un posto sicuro, specialmente il JWT Secret: perderlo richiede la riconfigurazione completa e il logout forzato di tutti gli utenti.
Prossimi Passi
Dopo aver completato l’installazione:
- Consulta la guida Organizzazioni e Aree per configurare la struttura del tuo evento
- Leggi la guida Utenti e Ruoli per capire come gestire il team
- Segui la Guida Amministratore per la configurazione completa