Vai al contenuto

Preparazione del PC Ubuntu di un impianto (procedura di Michele)

Tipo: modifica, su un PC nuovo prima della consegna al cliente.

Fonte: guide scritte di Michele in raw/michele/UBUNTU - MDM/ (ricevute il 30/10/2026). Le guide originali contengono password e chiavi: non vanno copiate né diffuse (vedi M32). Questa pagina riporta i passi senza i segreti.

È la procedura con cui oggi si prepara il mini PC del cliente (chiamato "receiver" nelle guide): sistema operativo, VPN, progetto televigilanza-mdm con Apache e MySQL, proxy verso gli NVR, software MDM in Docker e accesso remoto. L'installazione del software MDM con lo script del midserver è descritta in nuova-installazione.md.

Ordine dei passi

  1. Installare Ubuntu LTS sul mini PC. Prima di passare a una nuova LTS, verificare che i componenti sotto la supportino.
  2. Installare il progetto IT MDM (pacchetto distribuito da Michele; il link è nella guida originale).
  3. Al riavvio, nell'ordine: utente root e bsqsecurity, WireGuard, Apache, MySQL, NGINX Proxy, peer su pfSense.
  4. Caricare il progetto su CodeCommit e ripristinare il database su MySQL.
  5. Aprire la pagina http://<IP del PC>/settings/ (con la chiave indicata nella guida originale) e configurare l'impianto.

Utenti e accesso amministrativo

  • Impostare e sbloccare la password di root (sudo passwd root, sudo passwd -u root).
  • Dare a bsqsecurity sudo senza password: con sudo visudo aggiungere bsqsecurity ALL=(ALL) NOPASSWD: ALL, poi riavviare.
  • Login SSH di root: in /etc/ssh/sshd_config PermitRootLogin yes, poi sudo service ssh restart.

VPN

Peer su pfSense, configurazione del client, fix del DNS e controllo automatico ogni 5 minuti: nuovo-peer-wireguard.md.

Apache, PHP e MySQL (progetto televigilanza-mdm)

sudo apt-get install apache2 php php-curl -y
sudo apt-get install mysql-server php-mysql -y

Poi, secondo la guida: - password di root di MySQL impostata avviando MySQL temporaneamente con --skip-grant-tables --skip-networking; - creazione di un utente MySQL con host % e tutti i privilegi su tutte le basi dati; - bind-address commentato in /etc/mysql/mysql.conf.d/mysqld.cnf, per l'accesso remoto al database.

Gli ultimi due punti rendono il database del PC raggiungibile dalla rete con un utente onnipotente (M32).

Componenti del progetto da installare dopo il codice:

Cosa Comando Effetto
Pulizia dei log sudo install -o root -g root -m 0644 /var/www/html/controls/televigilanza-log-cleanup.cron /etc/cron.d/televigilanza-log-cleanup cron di pulizia; prova prima con sudo -u www-data /usr/bin/php /var/www/html/controls/cleanup_logs.php --dry-run
Riavvio dalla pagina comandi sudo install -o root -g root -m 0440 /var/www/html/deployment/sudoers-televigilanza-reboot /etc/sudoers.d/televigilanza-reboot permette a www-data solo shutdown -r +1; verifica con sudo visudo -cf /etc/sudoers.d/televigilanza-reboot e sudo -u www-data /usr/bin/sudo -n -l /usr/sbin/shutdown -r +1

NGINX Proxy verso gli NVR del cliente

Nginx Proxy Manager in Docker (cartella nginx_proxy, docker compose up -d), immagine jc21/nginx-proxy-manager:latest, porte:

Porta sul PC Uso
81 pannello di amministrazione di Nginx Proxy Manager
8081 → 80, 4443 → 443 proxy HTTP/HTTPS
10101–10105 stream TCP verso NVR e telecamere del cliente

Al primo accesso (localhost:81) si cambiano le credenziali predefinite. Poi si crea uno Stream per ogni porta verso l'IP desiderato nella rete del cliente. Dalla centrale (Cava) si raggiunge così la porta dati dell'NVR quando il cloud del produttore non si può usare; è il traffico VPN più alto (pfsense-rete-vpn.md).

Cosa inoltrare per marca:

NVR Porte da inoltrare
Uniview 80 (va bene anche dietro NAT) e 554 (1:1)
Hikvision (serie Safire) solo 8000 (va bene anche dietro NAT)

Porta 2000: controllo di raggiungibilità (MDM e GANZ)

Un servizio systemd ascolta sulla porta TCP 2000 solo per dire "sono raggiungibile"; il controllo degli impianti lo usa (pfsense-rete-vpn.md).

sudo apt update && sudo apt install -y socat
sudo useradd --system --no-create-home --shell /usr/sbin/nologin portlistener
sudo nano /etc/systemd/system/port-2000-listener.service
sudo systemctl enable --now port-2000-listener.service
systemctl status port-2000-listener.service

Contenuto del servizio:

[Unit]
Description=Listener TCP su porta 2000 per check di raggiungibilità
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
LockPersonality=yes
CapabilityBoundingSet=
AmbientCapabilities=
MemoryDenyWriteExecute=yes

[Install]
WantedBy=multi-user.target

L'utente portlistener va creato prima di avviare il servizio (nella guida originale il passo viene dopo).

Software MDM in Docker (procedura manuale)

  1. Copiare la cartella NEW nella home di bsqsecurity.
  2. Installare Docker dal repository ufficiale (docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin).
  3. sudo groupadd docker e sudo usermod -aG docker $USER.
  4. cd NEW && docker compose up -d.

Per le installazioni nuove si usa lo script installer.sh del midserver (nuova-installazione.md).

Accesso remoto al desktop (facoltativo)

Tre alternative, a seconda del PC:

  • GNOME Remote Login (RDP, porta 3389): disattivare il servizio utente gnome-remote-desktop-headless, installare gnome-remote-desktop e gdm3, generare un certificato TLS per l'utente gnome-remote-desktop, configurare con grdctl --system rdp (chiave, certificato, credenziali iniziali, enable), avviare gdm3 e gnome-remote-desktop, verificare con ss -lntp | grep 3389. Dopo il collegamento si accede con bsqsecurity.
  • XRDP con Xvnc e XFCE, tramite lo script xrdp-installer di c-nergy.be.
  • NoMachine: pacchetto .deb dal sito ufficiale, poi riavvio di nxserver.

Problemi noti di questa procedura

Riassunti in M32:

  • password fisse scritte nelle guide (root di MySQL, pannello di Nginx Proxy Manager), quindi uguali su tutti i PC preparati così;
  • MySQL con utente % con tutti i privilegi e aperto alla rete;
  • root con password e login SSH di root abilitato; bsqsecurity con sudo senza password;
  • pagina settings protetta solo da una chiave fissa nell'URL, scritta nella guida;
  • Nginx Proxy Manager con immagine latest e pannello sulla porta 81 raggiungibile dalla VPN.