Gestione multi-sito per agenzie: come scalare la manutenzione di 50 siti WordPress senza impazzire

Quando gestisci decine di siti clienti, il lavoro si moltiplica: aggiornamenti, backup, sicurezza, report. Come centralizzare, automatizzare e applicare margini white label con un sistema operativo scalabile.
Gestire uno, due, cinque siti WordPress è un lavoro artigianale. Gestirne cinquanta è un'operazione industriale. Ogni sito ha il suo hosting, il suo pannello, i suoi plugin, le sue credenziali, le sue scadenze. Senza un sistema, il tempo di gestione cresce linearmente con il numero di siti e presto diventa insostenibile.
La differenza tra un'agenzia che scala e una che annega non è il numero di clienti, ma il sistema operativo con cui gestisce il portafoglio. Un sistema centralizzato trasforma la manutenzione da lavoro ripetitivo in processo ripetibile.
Centralizzare gli aggiornamenti
Il primo nodo da sciogliere è l'aggiornamento. Aggiornare 50 siti uno ad uno — accedere al pannello di ognuno, cliccare su Aggiorna, verificare — è un lavoro di ore che si ripete ogni settimana. La soluzione è un sistema che gestisce gli aggiornamenti da un'unica console, con staging automatico e rollback:
# WP-CLI: aggiornamento batch di tutti i siti da una lista
#!/bin/bash
# Lista dei siti gestiti (URL,percorso,file di configurazione)
SITI="site1.com:/var/www/site1:/var/www/site1/wp-config.php
site2.com:/var/www/site2:/var/www/site2/wp-config.php
site3.com:/var/www/site3:/var/www/site3/wp-config.php"
while IFS=':' read -r url path config; do
echo "=== Aggiornamento $url ==="
cd "$path"
wp core update --path="$path"
wp plugin update --all --path="$path"
wp theme update --all --path="$path"
# Backup prima dell'aggiornamento
wp db export "backup_$(date +%Y%m%d).sql" --path="$path"
done <<< "$SITI"Centralizzare il monitoraggio uptime
Il secondo nodo è il monitoraggio. Non puoi controllare 50 siti manualmente ogni mattina. Un sistema di monitoraggio centralizzato controlla l'uptime di tutti i siti da un'unica dashboard e ti alert al primo segno di problema. Puoi costruirne uno leggero con un endpoint di health check su ogni sito:
// Endpoint di health check da inserire in ogni sito (MU-Plugin)
add_action( 'init', function() {
if ( isset( $_GET['health_check'] ) && $_GET['health_check'] === 'secret_token' ) {
$status = [
'site' => get_site_url(),
'wp' => get_bloginfo( 'version' ),
'php' => PHP_VERSION,
'uptime' => 'ok',
'time' => current_time( 'mysql' ),
];
wp_send_json( $status );
}
});Automatizzare i backup con conservazione
Il terzo nodo è il backup. Ogni sito ha bisogno di backup periodici con conservazione: non basta la copia di ieri, servono i backup degli ultimi 7 giorni, delle ultime 4 settimane e degli ultimi 12 mesi. Un sistema centrale gestisce la conservazione per tutti i siti:
# Cron di backup con rotazione (7 giornalieri, 4 settimanali, 12 mensili)
#!/bin/bash
BACKUP_DIR="/backups"
SITI="site1.com:/var/www/site1 site2.com:/var/www/site2 site3.com:/var/www/site3"
while IFS=':' read -r url path; do
# Backup giornaliero (7 giorni)
wp db export "$BACKUP_DIR/$url/daily_$(date +%u).sql" --path="$path"
# Backup settimanale (domenica) — 4 settimane
if [ "$(date +%u)" = "7" ]; then
cp "$BACKUP_DIR/$url/daily_$(date +%u).sql" \\
"$BACKUP_DIR/$url/weekly_$(date +%U).sql"
fi
# Backup mensile (1 del mese) — 12 mesi
if [ "$(date +%d)" = "01" ]; then
cp "$BACKUP_DIR/$url/daily_$(date +%u).sql" \\
"$BACKUP_DIR/$url/monthly_$(date +%m).sql"
fi
done <<< "$SITI"Standardizzare la sicurezza su tutti i siti
Il quarto nodo è la sicurezza. Applica lo stesso livello di hardening a tutti i siti: WAF, limit login, XML-RPC disabilitato, scanner malware periodico. Un sistema centrale può applicare le stesse regole a tutti i siti e alert sui siti che driftano dalla configurazione standard.
Generare report white label per i clienti
Il quinto nodo — e quello che spesso differenzia un'agenzia professionale da una amatoriale — è il report. I clienti pagano per un servizio e vogliono vedere cosa ricevono. Un report mensile generato automaticamente, brandizzato con il logo dell'agenzia, trasforma il lavoro invisibile in valore visibile:
// Endpoint di report per cliente (MU-Plugin su ogni sito)
add_action( 'init', function() {
if ( isset( $_GET['monthly_report'] ) && $_GET['monthly_report'] === 'token_cliente' ) {
$report = [
'sito' => get_site_url(),
'periodo' => date( 'Y-m' ),
'uptime' => get_transient( 'uptime_percentage' ),
'aggiornamenti' => get_option( 'updates_count_this_month', 0 ),
'backup' => get_option( 'last_backup_date', 'n/d' ),
'malware' => get_option( 'malware_scans_this_month', 0 ),
'incidenti' => get_option( 'incidents_this_month', [] ),
];
wp_send_json( $report );
}
});I margini white label
Quando gestisci 50 siti, il margine è ciò che separa un'attività redditizia da una che lavora a perdita. Il margine nasce dalla differenza tra il costo reale della gestione (tempo, infrastruttura, strumenti) e il prezzo fatturato al cliente. Un sistema centralizzato riduce il costo per sito del 60-80% rispetto alla gestione manuale, perché il lavoro si fa una volta per tutti invece di una volta per ognuno.
WP Planet offre un programma partner per agenzie: hosting gestito, manutenzione e sicurezza in white label, con sconti volumetrici crescenti in base al numero di siti gestiti. Più siti porti, più il margine cresce. La gestione non è un costo: è un servizio che si fattura, e il sistema è ciò che lo rende redditizio.
Delega la gestione tecnica dei siti dei tuoi clienti.
Manutenzione, sicurezza e hosting gestito in white label, con report brandizzati e margini per volume.
Articoli correlati

Brute force su wp-login: come fermare gli attacchi senza bloccare gli utenti legittimi
Leggi
Migrazione WordPress senza downtime: checklist tecnica per spostare un sito a hosting senza farlo cadere
Leggi
