Procedura Operativa: Nuova Installazione Impianto¶
Questo documento rappresenta la guida operativa per il sistemista incaricato di preparare, configurare e mettere in esercizio un nuovo Mini PC industriale ("box impianto") destinato alla sede di un cliente.
La procedura copre gli aspetti di sistema operativo, rete, VPN WireGuard, servizi locali, proxy verso le telecamere/NVR e la configurazione del centralino VoIP per le trombe acustiche.
1. Schema del Flusso di Provisioning¶
flowchart TD
A["1. Preparazione Hardware Mini PC<br/>Installazione Ubuntu LTS, Docker, Utenti"] --> B["2. Configurazione VPN WireGuard<br/>Creazione Peer pfSense & MyVPN.conf"]
B --> C["3. Servizi di Base sul Box<br/>Listener TCP :2000 & Watchdog VPN"]
C --> D["4. Nginx Proxy Manager Locale<br/>Stream TCP :10101-10105 verso NVR locale"]
D --> E["5. Provisioning Software MDM<br/>Esecuzione installer & container Docker"]
E --> F["6. Configurazione Tromba VoIP (se presente)<br/>Creazione interno SIP PJSIP su FreePBX"]
F --> G["7. Collaudo e Censimento Rete<br/>Verifica handshake, stream video e censimento IP"]
2. Passo 1: Installazione e Preparazione del Sistema Operativo¶
- Installazione SO: Installare Ubuntu Linux LTS a 64 bit sul Mini PC industriale.
- Configurazione Utente Amministrativo:
- Impostare la password dell'utente
root: - Creare o configurare l'utente standard di gestione
bsqsecurityabilitando i privilegi disudosenza richiesta di password: - Abilitare l'accesso SSH per manutenzioni remote in
/etc/ssh/sshd_config(PermitRootLogin yes) e riavviare il demone SSH: - Installazione Runtime Docker:
- Installare Docker Engine e Docker Compose dal repository ufficiale Docker:
sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo usermod -aG docker bsqsecurity
3. Passo 2: Configurazione della VPN WireGuard¶
Ciascun box deve stabilire un tunnel sicuro cifrato verso il firewall centrale pfSense (WG_VPN, tun_wg0).
A. Creazione del Peer sul Firewall pfSense¶
- Accedere al pannello pfSense via VPN all'indirizzo
http://172.16.16.1/. - Navigare su VPN → WireGuard → Peers → Add Peer.
- Compilare i seguenti campi:
- Tunnel: Selezionare
tun_wg0 (WG_VPN). - Description: Inserire la denominazione del cliente e della sede.
- Keep Alive:
25. - Pre-shared Key: Cliccare sul pulsante Generate e salvare la chiave generata (servirà nel file di configurazione del box).
- Allowed IPs: Assegnare il primo indirizzo IP libero progressivo nella subnet
172.16.16.0/24con maschera/32(es.172.16.16.67/32). - Public Key: Incollare la chiave pubblica generata per il box (vedi punto successivo).
- Cliccare su Save Peer e poi su Apply Changes in alto a destra.
B. Generazione Chiavi e File di Configurazione sul Box¶
Sul Mini PC Ubuntu:
- Installare il pacchetto WireGuard:
- Generare la coppia di chiavi privata e pubblica:
(La chiave contenuta in
/etc/wireguard/public.keyva inserita su pfSense nel campo Public Key del peer). - Creare il file di configurazione
/etc/wireguard/MyVPN.conf:[Interface] PrivateKey = <CONTENUTO_DI_private.key> Address = 172.16.16.<IP_ASSEGNATO>/24 DNS = 8.8.8.8 MTU = 1412 [Peer] PublicKey = <CHIAVE_PUBBLICA_TUN_WG0_PFSENSE> PresharedKey = <PRESHARED_KEY_GENERATA_SU_PFSENSE> AllowedIPs = 172.16.16.1/32, 172.16.16.253/32, 172.16.16.254/32 Endpoint = receiver1.protexia24.com:51420 PersistentKeepalive = 25 - Abilitare e avviare il servizio del tunnel:
- Risoluzione Problema DNS Ubuntu (systemd-resolved): Su Ubuntu LTS l'avvio di wg-quick può provocare la perdita della risoluzione dei nomi. Eseguire:
- Watchdog della Connessione VPN (Cronjob): Creare uno script di verifica in crontab per garantire che il tunnel venga riavviato in caso di blocco della connessione: Aggiungere la riga:
4. Passo 3: Servizio di Raggiungibilità (Listener TCP Porta 2000)¶
La centrale operativa e gli script di monitoraggio verificano lo stato online del box interrogando la porta TCP 2000.
- Installare il pacchetto
socat: - Creare l'utente di sistema dedicato:
- Creare l'unità systemd
/etc/systemd/system/port-2000-listener.service:[Unit] Description=Listener TCP porta 2000 per check raggiungibilita Wants=network-online.target After=network-online.target [Service] User=portlistener ExecStart=/usr/bin/socat TCP-LISTEN:2000,reuseaddr,fork,keepalive,nodelay - Restart=always RestartSec=1 NoNewPrivileges=yes ProtectSystem=full ProtectHome=true PrivateTmp=yes [Install] WantedBy=multi-user.target - Attivare il servizio:
5. Passo 4: NGINX Proxy Manager per Stream NVR / Telecamere¶
Presso molti clienti le telecamere o l'NVR si trovano su una rete interna isolata e priva di indirizzo IP pubblico o cloud. Per consentire alla centrale operativa di estrarre i flussi video, sul box viene avviato un Nginx Proxy Manager in Docker con funzionalità di inoltro stream TCP:
- Creare la cartella di lavoro
/home/bsqsecurity/nginx_proxy/con un filedocker-compose.yml: - Avviare il container:
- Accedere al pannello su
http://<IP_VPN_DEL_BOX>:81e configurare le regole di Stream: - Creare un nuovo stream per ciascuna porta da
10101a10105. - Porte per modello NVR:
- Hikvision / Safire: Inoltro verso la porta dati proprietaria 8000 dell'IP locale dell'NVR.
- Uniview: Inoltro verso la porta Web 80 e la porta RTSP 554 dell'IP locale dell'NVR.
6. Passo 5: Provisioning del Software Applicativo MDM¶
- Eseguire lo script automatico servito dal midserver di produzione:
- Lo script autentica la macchina, scarica da AWS ECR le immagini corrette (
installation,frigate_wrapper,dsniff), avvia i container Docker e genera le configurazioni base. - Il nuovo box compare immediatamente nella sezione Nuove Installazioni del pannello web di produzione (
https://panel.bsqdev.uk). - Dal pannello web, selezionare il tipo di detector (Frigate con TPU o modulo GANZ) e inserire il MAC address per completare l'associazione.
7. Passo 6: Configurazione Tromba Acustica / Speaker IP (FreePBX)¶
Se l'impianto include un altoparlante IP per le comunicazioni a viva voce della centrale:
Regola Fondamentale: Creare sempre prima l'interno telefonico sul centralino FreePBX e solo successivamente configurare l'apparato fisico. Se la tromba tenta di registrarsi su un interno inesistente, il suo IP verrà bannato dal firewall Fail2ban di FreePBX.
- Accedere all'interfaccia di FreePBX:
http://170.10.0.101/admin/(via VPN). - Andare su Applications → Extensions → Add Extension → Add New SIP [chan_pjsip] Extension.
- Impostazioni Generali:
- User Extension: Inserire il primo numero progressivo libero (es.
107). - Display Name: Denominazione cliente e ubicazione tromba (es. Rossi Srl - Ingresso Principale).
- Secret: Generare/annotare la password sicura (da impostare sull'altoparlante).
- Scheda Advanced:
- Max Contacts: Impostare su
3. - Direct Media: Selezionare
No(tutto il flusso RTP deve transitare dal server). - Scheda Recording Options:
- Impostare tutti i valori su Force (obbligo legale/aziendale di registrare ogni interazione vocale).
- Cliccare su Submit in basso e poi sul pulsante rosso Apply Config in alto a destra.
- Configurare l'altoparlante fisico con:
- Server SIP:
185.31.66.186(oppuresip.protexia24.com) su porta5060. - Numero interno e Secret impostati al passo 3.
8. Particolarità: Impianti con Più Box (Architettura Master / Slave)¶
In siti di grandi dimensioni in cui un singolo Mini PC non è sufficiente a processare tutti i flussi video, vengono installati 2 o più box:
- Box Master:
- Possiede l'indirizzo MAC principale registrato a contratto.
- Mantiene il tunnel WireGuard attivo verso pfSense e funge da gateway per il sito.
- In Nginx Proxy Manager del Master vengono creati due stream TCP per inoltrare il traffico verso ServerIT: porta 5000 (API) e porta 1883 (MQTT).
- Box Slave:
- Vengono registrati sul pannello con il MAC virtuale
<MAC_MASTER>-01,<MAC_MASTER>-02. - Non comunicano direttamente con pfSense via VPN, ma indirizzano il proprio traffico verso l'IP locale del Master, che fa da ponte verso il midserver.
9. Checklist di Collaudo Finale¶
- [ ] Handshake WireGuard stabilito (
sudo wg showmostra trasferimenti recenti in entrata e uscita). - [ ] Ping positivo verso pfSense (
ping 172.16.16.1) e ServerIT (ping 172.16.16.253). - [ ] Listener porta 2000 attivo e rispondente da remoto.
- [ ] Nginx Proxy Manager avviato e porte stream TCP configurate verso gli NVR locali.
- [ ] Box visibile e registrato su
https://panel.bsqdev.uk. - [ ] Tromba SIP registrata su FreePBX e prova audio completata con la centrale operativa.
- [ ] Censimento documentale: registrazione di Indirizzo IP VPN, MAC Address e numero di interno SIP nel foglio di inventario impianti.