Self-hosting di MeshCentral: guida completa
Installare MeshCentral su un VPS Linux: utente dedicato, servizio systemd, firewall, 2FA e il primo agent. Ogni comando spiegato, provato sul campo.
MeshCentral è un software open source di gestione e controllo remoto: desktop remoto, terminale, trasferimento file e gestione di più dispositivi, tutto da un’unica console web. È l’alternativa self-hosted e senza canone a TeamViewer o AnyDesk.
Qui lo installiamo da zero su un server Linux, lo configuriamo, lo mettiamo in sicurezza e ci colleghiamo il primo dispositivo. Al termine avrai un’infrastruttura di assistenza remota completamente sotto il tuo controllo.
A chi è rivolta: sistemisti e tecnici con una minima familiarità con la riga di comando. Ogni comando è spiegato.
1. Perché self-hostare
Self-hostare significa che il server è tuo: dati, connessioni e dispositivi gestiti passano dalla tua macchina, non da un servizio di terzi.
- Nessun canone per postazione.
- Controllo totale su dove stanno i dati e su chi accede.
- Lato tecnico nessun client: per assistere basta la console web da qualunque computer.
- Personalizzazione: l’agent può portare il tuo nome.
Il rovescio è che la manutenzione è tua: aggiornamenti, backup e sicurezza del server diventano una tua responsabilità. È il patto del self-hosting, e conviene saperlo prima di firmarlo.
2. Prerequisiti
| Elemento | Dettaglio |
|---|---|
| Un VPS | Linux, preferibilmente Ubuntu LTS. Bastano 1–2 vCPU e 2 GB di RAM per iniziare |
| Un dominio | Un sottodominio, per esempio assistenza.tuodominio.it, da puntare al server |
| Accesso SSH | Con un utente non-root abilitato a sudo |
MeshCentral è leggero: il fabbisogno cresce col numero di dispositivi collegati contemporaneamente, non con quelli registrati.
Il record DNS, prima di tutto
Crea un record A che punti il sottodominio all’indirizzo pubblico del server:
Tipo: A
Nome: assistenza
Valore: TUO_IP
Attendi la propagazione, poi verifica dal tuo PC:
nslookup assistenza.tuodominio.it
Deve rispondere con l’indirizzo del server. Il DNS corretto non è un dettaglio da sistemare dopo: MeshCentral genera il proprio certificato in base al nome host, quindi se il nome non risolve, il certificato nasce sbagliato.
3. Preparare il server
Collegati e aggiorna:
ssh utente@TUO_IP
sudo apt update && sudo apt upgrade -y
Un utente dedicato, non root
MeshCentral non deve girare come root. Creiamo un utente di sistema che eseguirà il servizio con privilegi minimi:
sudo useradd -r -m -d /opt/meshcentral -s /bin/bash meshcentral
-rcrea un utente di sistema, non pensato per l’accesso interattivo-m -d /opt/meshcentralgli assegna come cartella personale quella dove installeremo tutto-s /bin/bashgli dà una shell, che serve per i comandi di manutenzione
4. Installare Node.js
MeshCentral è scritto in Node.js. Il modo più pulito è il repository ufficiale NodeSource:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
Verifica:
node --version
npm --version
Due numeri di versione e Node è pronto.
5. Installare MeshCentral
Si installa come utente dedicato, dentro la sua cartella:
sudo -u meshcentral -i
cd /opt/meshcentral
npm install meshcentral
Poi un primo avvio manuale, che serve a generare configurazione e certificati:
node node_modules/meshcentral --cert assistenza.tuodominio.it
--cert dice a MeshCentral per quale nome host generare il certificato. Al primo avvio crea la cartella meshcentral-data — dove vivono configurazione, certificati e database — e si mette in ascolto. Quando vedi che è partito, fermalo con Ctrl+C: lo configuriamo per bene e poi lo rendiamo un servizio.
exit
6. config.json, campo per campo
Il cuore della configurazione è /opt/meshcentral/meshcentral-data/config.json.
sudo -u meshcentral tee /opt/meshcentral/meshcentral-data/config.json >/dev/null <<'EOF'
{
"settings": {
"cert": "assistenza.tuodominio.it",
"port": 443,
"redirPort": 80,
"WANonly": true
},
"domains": {
"": {
"title": "Assistenza Remota",
"title2": "Powered by MeshCentral",
"newAccounts": true
}
}
}
EOF
| Campo | Cosa fa |
|---|---|
cert | Il nome host del server. Deve corrispondere al record DNS |
port | La porta della console HTTPS |
redirPort | La porta HTTP che reindirizza a HTTPS |
WANonly | true se il server è raggiungibile solo da internet, tipico di un VPS |
title / title2 | Il testo mostrato nella console |
newAccounts | true temporaneamente, per creare il primo amministratore. Si chiude subito dopo |
Valida sempre il JSON prima di procedere — un errore di sintassi impedisce l’avvio, e il messaggio che ne esce parla d’altro:
sudo cat /opt/meshcentral/meshcentral-data/config.json | python3 -m json.tool >/dev/null && echo "JSON VALIDO" || echo "ERRORE nel JSON"
7. Il servizio systemd
Perché parta da solo al riavvio e si rialzi in caso di crash:
sudo tee /etc/systemd/system/meshcentral.service >/dev/null <<'EOF'
[Unit]
Description=MeshCentral Server
After=network.target
[Service]
Type=simple
User=meshcentral
WorkingDirectory=/opt/meshcentral
ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
Le tre righe che contano: User=meshcentral fa girare il servizio come utente dedicato e non come root, Restart=always lo rialza se si interrompe, WantedBy=multi-user.target lo avvia al boot.
sudo systemctl daemon-reload
sudo systemctl enable meshcentral
sudo systemctl start meshcentral
sudo systemctl status meshcentral
Deve risultare active (running). Per i log in tempo reale:
sudo journalctl -u meshcentral -f
Il permesso di usare le porte basse
Le porte sotto la 1024 richiedono privilegi, e il servizio gira come utente non privilegiato. Invece di dargli i diritti di root, si concede a Node solo quello che serve:
sudo setcap 'cap_net_bind_service=+ep' $(which node)
sudo systemctl restart meshcentral
8. Firewall
Si apre il minimo indispensabile:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP, reindirizza a HTTPS
sudo ufw allow 443/tcp # HTTPS: console e agent
sudo ufw enable
sudo ufw status
Adatta le porte a quelle scelte nel config.json. Ogni porta aperta è una superficie d’attacco in più: se non usi funzioni particolari, come Intel AMT sulla 4433, non aprirla.
9. Primo accesso e messa in sicurezza
Apri https://assistenza.tuodominio.it.
Il primo account creato diventa amministratore. Crealo subito, poi mettilo in sicurezza con tre passaggi che non sono opzionali.
- Password robusta e unica, in un gestore di password. È l’account che controlla l’accesso a tutte le macchine gestite.
- Autenticazione a due fattori con un’app TOTP, dalle impostazioni del tuo account. Conserva i codici di recupero in un posto sicuro: servono se perdi l’accesso all’app.
- Chiudi le registrazioni. Ora che l’amministratore esiste, nessun altro deve potersi registrare.
sudo -u meshcentral sed -i 's/"newAccounts": true/"newAccounts": false/' /opt/meshcentral/meshcentral-data/config.json
sudo systemctl restart meshcentral
10. Il primo dispositivo
La logica è: si crea un gruppo di dispositivi, poi ci si aggiungono le macchine installando l’agent.
- Crea un gruppo dalla console — per esempio
LaboClienti. Tipo: manage with software agent. - Scarica l’agent dal gruppo, scegliendo il sistema della macchina da gestire.
- Installalo sulla macchina. Si registra come servizio e si collega al tuo server.
- Controlla: dopo pochi secondi il dispositivo compare online nella console.
Da lì apri desktop remoto, terminale o trasferimento file, tutto dal browser. Sono le macchine da assistere a ricevere l’agent, non la tua.
Il consenso dell’utente
Per ogni gruppo si imposta un livello di consenso. Sulle macchine dei clienti la scelta corretta è il consenso esplicito — l’utente accetta prima che tu ti colleghi — più una barra di notifica visibile durante la sessione.
Non è solo cortesia: la persona deve sapere quando qualcuno accede al suo computer. La modalità senza consenso va riservata alle tue macchine e al laboratorio.
11. Service mode o Assistant: cosa decide quello che puoi fare
Questa parte non sta nella documentazione ufficiale, e spiega la maggior parte delle frustrazioni successive.
Su Windows MeshCentral ha due modi di stare su una macchina.
| Agent installato come servizio | Assistant portatile | |
|---|---|---|
| Gira come | LOCAL SYSTEM | l’utente che lo lancia |
| Terminale con privilegi elevati | sì | no |
| Prompt UAC / Secure Desktop | sì | no: non trasferisce i campi di input |
| Operazioni amministrative su utente normale | sì | no, nemmeno «come amministratore» |
| Installazione | permanente | nessuna |
Il test che chiarisce tutto in dieci secondi
Apri la scheda Terminal su un dispositivo e digita:
whoami
| Risposta | Significato |
|---|---|
nt authority\system | L’agent è un servizio: puoi installare, configurare ed elevare senza mai toccare un prompt UAC |
NOMEPC\utente | Modalità interattiva: sei limitato ai privilegi di quell’utente |
12. Dove sono finiti file e appunti
Domanda ricorrente: «MeshCentral non ha il trasferimento file né gli appunti». Li ha entrambi.
| Funzione | Dove si trova |
|---|---|
| Trasferimento file | Scheda Files, trascinamento bidirezionale nel browser |
| Appunti | Pulsanti nella barra del Desktop: pull legge dal remoto, push scrive sul remoto |
Se la scheda Files non compare, il permesso non è assegnato: nel gruppo, Edit user permissions, attiva il flag Files.
I permessi sono granulari per gruppo: a un tecnico junior puoi dare il solo desktop in sola lettura e negare del tutto il trasferimento file su certi clienti.
13. Personalizzazione e branding
L’agent può portare il tuo nome invece di quello generico. Si imposta nel config.json, dentro il dominio:
"agentCustomization": {
"displayName": "Assistenza TuoNome",
"description": "Servizio di assistenza remota",
"companyName": "TuoNome",
"serviceName": "TuoNomeAgent"
}
displayName— il nome mostrato in Windows e nell’installercompanyName— determina anche la cartella di installazione,C:\Program Files\TuoNome\serviceName— il nome tecnico del servizio
Un secondo blocco, agentFileInfo, personalizza i metadati del file che si leggono in Proprietà → Dettagli: productname, filedescription, companyname, legalcopyright.
14. Manutenzione e aggiornamenti
Backup prima di ogni intervento
Configurazione, certificati e database stanno tutti in meshcentral-data. È l’unica cartella davvero indispensabile: se la salvi, ricostruisci il server ovunque.
sudo cp -r /opt/meshcentral/meshcentral-data /opt/meshcentral/meshcentral-data.backup-$(date +%Y%m%d)
Aggiornare
sudo systemctl stop meshcentral
sudo -u meshcentral bash -c 'cd /opt/meshcentral && npm install meshcentral@latest'
sudo systemctl start meshcentral
sudo systemctl status meshcentral
15. Quando qualcosa non torna
| Sintomo | Dove guardare |
|---|---|
| Il servizio non parte | sudo journalctl -u meshcentral -n 50. La causa più frequente è un errore di sintassi nel config.json: rivalidalo con python3 -m json.tool |
| La console non è raggiungibile | In ordine: il servizio è active? La porta è aperta nel firewall? Il record DNS punta all’indirizzo giusto? Stai usando https:// e la porta corretta? |
| L’agent resta offline | La porta della console deve essere raggiungibile da internet: è la stessa che usano gli agent. Verifica anche l’ora del server, perché il TLS è sensibile all’orario |
Permission denied in meshcentral-data | I file devono appartenere all’utente dedicato: sudo chown -R meshcentral:meshcentral /opt/meshcentral/meshcentral-data |
| Conflitto di porta all’avvio | Un altro servizio occupa la 443. Cambia port nel config.json, aggiorna il firewall, usa la nuova porta nell’URL |
| Personalizzazione non applicata | Vale solo per gli agent scaricati dopo la modifica. Reinstalla l’agent |
Domande frequenti
MeshCentral è gratuito anche per uso commerciale? Sì. È rilasciato con licenza Apache 2.0: puoi usarlo commercialmente, modificarlo e gestirlo per clienti paganti, senza costi per dispositivo e senza approvazioni.
Quante risorse servono sul VPS? Per iniziare bastano 1–2 vCPU e 2 GB di RAM. Il fabbisogno cresce col numero di dispositivi collegati contemporaneamente, non con quelli registrati.
Serve un reverse proxy davanti a MeshCentral? No, e questa guida non ne usa uno: MeshCentral gestisce il TLS da sé e lega direttamente la 443. Un proxy serve se sul VPS girano altri servizi che devono condividere quella porta, e in quel caso la configurazione cambia parecchio.
Perché il browser dice che il certificato non è attendibile? Perché è auto-firmato. Non compromette la sicurezza degli agent, che usano il pinning del certificato, ma il browser continuerà ad avvisare. MeshCentral supporta anche Let’s Encrypt in modo nativo: è la strada da percorrere se l’avviso dà fastidio.
Posso vedere e cliccare il prompt UAC da remoto?
Solo se l’agent è installato come servizio, quindi in esecuzione come LOCAL SYSTEM. Con l’Assistant portatile no: è un limite di Windows, non di MeshCentral. Verifica con whoami nel Terminal.
MeshCentral ha il trasferimento file e gli appunti? Sì, entrambi. I file nella scheda Files, gli appunti nei pulsanti della barra del Desktop. Se la scheda Files non compare, manca il permesso sul gruppo.
Posso personalizzare l’agent con il mio nome?
Sì, con agentCustomization e agentFileInfo in config.json. La personalizzazione va fatta prima di distribuire gli agent: quelli già installati non si aggiornano da soli.
Guida a scopo informativo. Usa MeshCentral nel rispetto delle normative applicabili e, quando assisti dispositivi di terzi, sempre con il loro consenso informato.