# Accesso alla Rete Locale ## Come accedere al server da altri dispositivi (tablet, smartphone, ecc.) Il sistema Focolari Voting è progettato per funzionare su tablet Android collegati alla stessa rete locale del server. ### 1. Avvio del Server Il server è già configurato per accettare connessioni da tutta la rete locale: ```bash ./dev.sh server ``` Il server si avvia su `0.0.0.0:8000`, il che significa che è in ascolto su **tutte le interfacce di rete**. ### 2. Trova l'indirizzo IP del server Sul computer che esegue il server, trova il suo indirizzo IP locale: ```bash # Linux ip addr show | grep "inet " | grep -v 127.0.0.1 # Oppure hostname -I ``` L'output sarà qualcosa come: `192.168.1.230` (o simile, dipende dalla tua rete). ### 3. Accedi dal tablet/dispositivo Sul tablet o altro dispositivo connesso alla **stessa rete WiFi**: 1. Apri il browser (Chrome, Firefox, ecc.) 2. Vai all'indirizzo: `http://192.168.1.230:8000/badge` - Sostituisci `192.168.1.230` con l'IP che hai trovato nel passo 2 - Mantieni la porta `:8000` (o quella che hai specificato con `-p`) - Il frontend è servito su `/badge` ### 4. Verifica della connettività #### Test ping dal tablet Se il tablet non si connette, verifica prima che possa "vedere" il server: ```bash # Dal computer server ping 192.168.1.xxx # IP del tablet ``` Se il ping funziona in entrambe le direzioni, il problema è probabilmente il firewall. #### Firewall Linux Se usi un firewall (ufw, firewalld, iptables), devi aprire la porta: **ufw:** ```bash sudo ufw allow 8000/tcp sudo ufw reload ``` **firewalld:** ```bash sudo firewall-cmd --permanent --add-port=8000/tcp sudo firewall-cmd --reload ``` #### Verifica porte in ascolto Per verificare che il server sia effettivamente in ascolto: ```bash sudo ss -tlnp | grep :8000 # o sudo netstat -tlnp | grep :8000 ``` Dovresti vedere qualcosa come: ``` tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 12345/python ``` **Nota importante:** Se vedi `127.0.0.1:8000` invece di `0.0.0.0:8000`, significa che il server è in ascolto solo su localhost. In questo caso, riavvia senza il parametro `--host 127.0.0.1`. ### 5. Porta personalizzata Se la porta 8000 è già in uso o vuoi usarne un'altra: ```bash ./dev.sh server -p 9000 ``` Poi accedi da: `http://192.168.1.230:9000/badge` ### 6. Ambiente di produzione Per un deployment permanente su un tablet/kiosk: 1. Il tablet deve avere un IP fisso (configurato nel router o nelle impostazioni WiFi) 2. Il server deve avviarsi automaticamente (systemd service o simili) 3. Il browser del tablet può essere configurato in modalità kiosk per avviare automaticamente l'URL ## Risoluzione problemi comuni ### Problema: "Impossibile raggiungere il sito" **Cause possibili:** 1. ❌ Il server non è in esecuzione → verifica con `ps aux | grep python` 2. ❌ Firewall attivo → segui le istruzioni sopra per aprire la porta 3. ❌ IP sbagliato → ricontrolla l'IP del server con `hostname -I` 4. ❌ Tablet non sulla stessa rete → connetti alla stessa WiFi del server 5. ❌ Server in ascolto solo su localhost → NON usare `--host 127.0.0.1` ### Problema: "Server non raggiungibile" (pagina di errore del frontend) Il frontend ha una pagina di errore che effettua un ping automatico. Se vedi questa pagina: 1. Il frontend è caricato correttamente 2. Ma l'API backend non risponde 3. Verifica che il backend sia effettivamente in esecuzione 4. Controlla la console JavaScript per errori CORS ### Problema: CORS errors nella console Non dovrebbero verificarsi, il backend ha CORS abilitato per `*`. Se li vedi: 1. Verifica che il backend sia avviato correttamente 2. Controlla che non ci siano proxy/firewall intermedi che modificano le richieste ## Note per deployment reale - Il sistema è stato testato su **rete locale privata** - Non esporre direttamente il server su Internet senza autenticazione aggiuntiva - In produzione, considera di usare HTTPS con un reverse proxy (nginx/caddy) - Il default `0.0.0.0` è sicuro in una rete locale controllata, ma valuta restrizioni aggiuntive per deployment più grandi ## Comandi rapidi ```bash # Trova IP del server hostname -I # Avvia server (accessibile da rete) ./dev.sh server # Avvia server su porta custom ./dev.sh server -p 9000 # Avvia server SOLO su localhost (NON accessibile da rete) ./dev.sh server --host 127.0.0.1 # Verifica porte in ascolto sudo ss -tlnp | grep python # Apri porta nel firewall (ufw) sudo ufw allow 8000/tcp ```