Tra l’amministratore, che fa tutto, e il lettore, che guarda soltanto, c’è un terzo ruolo: l’amministratore con riserva. Fa solo le operazioni delle categorie che un amministratore gli assegna, e ogni operazione che modifica qualcosa arriva subito come notifica, senza aspettare nessuno.
Crearlo e scegliere le sue operazioni
- In Amministrazione → Utenti crea l’utente con il ruolo Amministratore con riserva. La password si vede una volta sola.
- Sulla sua riga apri Permessi e spunta le categorie. Finché non ne spunti nessuna, vede la dashboard come un lettore.
- Le categorie si cambiano quando vuoi e valgono subito, anche se è collegato.

| Categoria | Cosa comprende |
|---|---|
| Siti nuovi e ripristini | Sito nuovo con WordPress, ripristino dai backup della migrazione. |
| Manutenzione | Blocco e sblocco del codice, aggiornamenti, certificato, cambio di dominio, amministrazione di WordPress. |
| PHP | Versione di PHP e valori di PHP di un sito. |
| Plugin e temi | Installare, caricare, aggiornare, attivare, disattivare ed eliminare plugin e temi. |
| Accessi | Sviluppatori SFTP, password di anteprima e degli amministratori di WordPress. |
| Backup | Copia di un sito, ripristino da una copia, backup notturno avviato a mano. |
| Codice e versioni | Visore del codice e versioni, ripristino di un file o di tutto il codice da una versione. |
| Rimedi | Quarantena, reinstallazioni da wordpress.org, ripristino di un file da una copia, ricostruzione del codice, cambio dei segreti. |
| Riferimenti dei controlli | Accettare lo stato di un sito o del server come nuovo riferimento. |
| Database | Il database di un sito in phpMyAdmin, sempre in sola lettura (come funziona). |
| Storage Box | Sblocco di restic, snapshot, impostazioni d’accesso. |
Restano solo agli amministratori gli utenti, il catalogo dei componenti e l’esportazione del registro in CSV. Senza la categoria giusta i pulsanti non compaiono; se l’operazione viene chiesta lo stesso, per esempio con l’API, la risposta è «non consentita» e al server non arriva nulla.
Cosa vede

Le notifiche
La notifica parte dal server appena l’operazione parte. Per i lavori lunghi ne arriva una seconda con l’esito e, se qualcosa va storto, con l’ultima riga d’errore. Le letture non mandano notifiche, per esempio aprire il visore del codice o rifare un controllo. Per esempio:
web1 · chiara (con riserva): aggiornamento del plugin contact-form-7 di studio-bianchi.it: avviato (lavoro 3f2a9c0d1e4b5a68)
web1 · chiara (con riserva): aggiornamento del plugin contact-form-7 di studio-bianchi.it: finito bene
I canali si scrivono sul server, come root, in /etc/site-tools.conf; valgono subito, senza riavviare nulla:
OPS_WEBHOOK="https://chat.esempio.it/hooks/operazioni"
OPS_EMAIL="admin@esempio.it"
- OPS_WEBHOOK: la chat del gruppo (Slack, Google Chat, Mattermost, Rocket.Chat). Riceve un messaggio JSON con il campo
text, come gli allarmi dei controlli inALERT_WEBHOOK. - OPS_EMAIL: uno o più indirizzi separati da virgole. Serve un programma di posta sul server (sendmail, per esempio msmtp verso un server SMTP): finché manca, la pagina Utenti lo segnala.
Se un canale non risponde, l’operazione va avanti lo stesso e l’errore resta nel registro dell’agente sul server. In Utenti, la sezione Notifiche dice quali canali sono configurati, e Manda una notifica di prova verifica che arrivino.

Da shell
docker exec panel python -m app.users crea <nome> riserva
docker exec panel python -m app.users permessi <nome> manutenzione plugin backup
docker exec panel python -m app.users elenco
Il nome breve delle categorie è siti, manutenzione, php, plugin, accessi, backup, codice, rimedi, sicurezza, database, storage. Le categorie scritte sostituiscono quelle di prima; permessi <nome> da solo le toglie tutte. Nel registro le sue operazioni compaiono con il suo nome, come quelle di tutti.