Files
Focolari-Voting-System/NETWORK_ACCESS.md

4.4 KiB

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:

./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:

# 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
    • 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)

4. Verifica della connettività

Test ping dal tablet

Se il tablet non si connette, verifica prima che possa "vedere" il server:

# 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:

sudo ufw allow 8000/tcp
sudo ufw reload

firewalld:

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:

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:

./dev.sh server -p 9000

Poi accedi da: http://192.168.1.230:9000

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

# 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