Files
Focolari-Voting-System/NETWORK_ACCESS.md

166 lines
4.4 KiB
Markdown

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