Salta al contenuto principale
Sistemi Attivi
WP Planet — WordPress Cloud & Managed Services
Torna al MagazineAgenzie

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

15 Ott 2026 — 14:00 8 min di lettura
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:

Terminale
# 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"
Nota: Questo script itera su tutti i siti, fa un backup del database, poi aggiorna core, plugin e temi. In produzione, aggiungi un test in staging prima del rilascio e un alert in caso di errore.

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:

wp-config.php
// 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 );
    }
});
Nota: Ogni sito espone un endpoint JSON con la versione, lo stato e il timestamp. Il sistema centrale lo interroga ogni 5 minuti e alert se il status non è 'ok'. Usa un token segreto per evitare accessi non autorizzati.

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:

Terminale
# 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"
Nota: Questo schema di rotazione conserva 7 backup giornalieri, 4 settimanali e 12 mensili per ogni sito. Il numero esatto dipende dalle esigenze del cliente e dalle normative di conservazione.

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:

wp-config.php
// 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 );
    }
});
Nota: Ogni sito espone i suoi dati mensili in formato JSON. Il sistema centrale raccoglie i dati di tutti i siti e genera un report PDF brandizzato per ogni cliente. Il report trasforma il lavoro tecnico in un deliverabile visibile.

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.

White label per agenzie

Delega la gestione tecnica dei siti dei tuoi clienti.

Manutenzione, sicurezza e hosting gestito in white label, con report brandizzati e margini per volume.

White label per agenzie
Condividi