MCL Media / MCP 2026 · OPERAZIONI

OPERAZIONI

Procedure operative MCL suddivise per attività. Le operazioni sono suddivise in categorie lavorative. Tutte le guide sono chiuse inizialmente: clicca su una scheda per espanderla.

▦

Infrastruttura, domini e hosting

Provisioning, configurazioni DNS, server e pubblicazione di siti.

Classificazione file operativi, temporanei e superfluiDiagnosi prima di cancellare

Stato

Verificata in ricognizione su gpt; nessuna etichetta «superfluo» automatica.

Procedura riutilizzabile

Identificare la VPS; misurare df e du; elencare directory e file con ls e find limitati; individuare origine tramite script e systemd; classificare come live, backup, temporaneo, log o ignoto; controllare riferimenti e processi. Non cancellare sulla base del solo nome.

Comando di riferimento

du -x -h -d 1 /var/lib/mcl-dashboard | sort -h | tail -15

Caso reale / Limiti

Su gpt sono stati distinti database e asset di produzione dalle directory discover-production/backups e mcl-discover-cms/_backups.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Eliminazione controllata di file e directoryCancellazione irreversibile · Scope esatto · QA

Stato

Eseguita su gpt per due raccolte Discover con richiesta esplicita; non generalizzare a qualsiasi directory.

Procedura riutilizzabile

Richiedere istruzione esplicita; identificare host, percorsi e file da rimuovere; verificare assenza di processi in conflitto; controllare directory con ls/find; delimitare la cancellazione a pattern e percorsi precisi; eseguire soltanto con permessi autorizzati; ricontare i file e controllare df, servizi e siti. Se necessario effettuare una copia fuori server prima dell'eliminazione. Cancellazioni senza backup sono irreversibili.

Comando di riferimento

find /PERCORSO_BACKUP -maxdepth 1 -type f -name '*.sqlite' -delete

Caso reale / Limiti

Caso 16/10: rimossi 2.519 SQLite e 71 cartelle CMS dalle due directory note; disco da 100% a 60%, 15 GB disponibili. I rollback storici sono stati persi.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Inventario e classificazione dei backupSiti, date, dimensioni, contenuto, retention

Stato

Verificata in lettura su gpt.

Procedura riutilizzabile

Per ogni raccolta contare file/istantanee e dimensioni; esaminare un campione degli archivi senza esporre .env; leggere script generatori e registri; associare backup a dominio e server; non confondere database editoriali con copie CMS complete.

Comando di riferimento

du -x -h -d 2 /var/lib/mcl-discover-cms/_backups | sort -h | tail -25

Caso reale / Limiti

Identificati 2.519 SQLite editoriali (9,1 GB), 71 cartelle CMS (5 GB), con media.tar.gz, cms.sqlite e instance.env.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Individuare processi che generano backupTimer · Cron · Script · Frequenza

Stato

Verificata su gpt.

Procedura riutilizzabile

Esaminare systemctl list-timers --all e unit/service; leggere ExecStart, OnCalendar e sorgente; cercare funzioni di backup e retention; confrontare timestamp dei file con calendario; verificare ultimi esiti e log. Non disattivare alcuna automazione senza richiesta.

Comando di riferimento

systemctl cat mcl-discover-cms-backup.service mcl-discover-cms-backup.timer

Caso reale / Limiti

Il timer CMS girava alle 03:20 Europe/Rome e lanciava discover-cms/backup_instances.py; la funzione backup_database() in discover_production_schedule.py creava copia per operazione editoriale.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Attivare e disabilitare timer systemdsystemctl · enable/disable · Stato persistente

Stato

Disabilitazione verificata per mcl-discover-cms-backup.timer su gpt.

Procedura riutilizzabile

Identificare esattamente timer e servizio e dipendenze, leggere calendario e stato prima; eseguire soltanto la modifica richiesta; usare sudo systemctl disable --now TIMER per fermare e disabilitare; ricontrollare is-enabled e is-active; controllare che i timer non interessati restino attivi. Non confondere cron tradizionale con systemd timers.

Comando di riferimento

sudo systemctl disable --now mcl-discover-cms-backup.timer

Caso reale / Limiti

Risultato 16/10: timer disabled e inactive, scheduler Discover active. Il produttore separato di backup editoriali non è stato disabilitato.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Verificare servizi Linux e timersystemctl · Stato · Ultimi errori

Stato

Verificata su gpt.

Procedura riutilizzabile

Usare systemctl is-active/is-enabled e systemctl status sui nomi esatti; consultare list-units --failed e log bounded con journalctl; controllare health HTTP ove pertinente; registrare separatamente stato e ultimo risultato del servizio, che possono divergere.

Comando di riferimento

systemctl is-active mcl-mcp.service

Caso reale / Limiti

gpt: MCL MCP e timer scheduler Discover attivi; backup CMS risultava fallito nell'ultimo run prima della disabilitazione.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Identificare VPS e dati reali di un dominioNginx · Registry · CMS · DNS origin

Stato

Verificata per 8 siti Discover su gpt; non ancora generalizzata a ogni stack.

Procedura riutilizzabile

Controllare inventario MCL, vhost Nginx, proxy_pass o root, percorso effettivo di database e media, servizio applicativo; confrontare IP origin DNS, evitando di dedurre il server dagli IP proxy Cloudflare. Verificare che l'installazione sia attiva, non soltanto presente in backup.

Comando di riferimento

ls /etc/nginx/sites-enabled

Caso reale / Limiti

Otto siti collegati alle porte localhost 8801-8808 e relativi database CMS. I nomi tecnici d-... sono stati ricondotti ai domini via discover_domain_onboarding.json.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Verifica VPS dopo manutenzioneDisco · Nginx · Servizi · HTTP · Regressioni

Stato

Verificata parzialmente su gpt dopo la pulizia.

Procedura riutilizzabile

Confrontare df prima/dopo e contare file; eseguire nginx -t; verificare stato MCP e timer richiesti; controllare homepage HTTPS e funzioni critiche; annotare verifiche non eseguite. Lo stato active del timer non prova che il job applicativo funzioni.

Comando di riferimento

df -h /; sudo nginx -t; systemctl is-active mcl-mcp.service

Caso reale / Limiti

Dopo la pulizia: 15 GB liberi, occupazione 60%, Nginx valido, MCP e scheduler attivi, guida HTTPS 200. Non tutti i siti sono stati testati.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Gestione retention dei backupPolitica da implementare e verificare

Stato

Non certificata: identificati meccanismi, ma nessuna nuova retention attivata.

Procedura riutilizzabile

Per ciascun sito definire ultima copia integra e storage esterno, valutare dipendenze rollback, testare restore; configurare retention idempotente soltanto dopo salvataggio sicuro. Evitare di cancellare l'ultima copia funzionante.

Comando di riferimento

# Nessun comando di retention certificato

Caso reale / Limiti

Backup CMS disabilitato; produzione editoriale può ancora produrre backup SQLite.

Registro intervento: VPS, data, comando eseguito, situazione iniziale, risultato e verifiche successive. Non classificare un'operazione come riuscita senza prova.

Leggere cartelle e file di una VPSInventario · ls · find · du · df · lettura sicura · Risultato verificato su gpt

Quando utilizzare la procedura

Richieste come «fammi vedere cosa contiene la VPS», «quali cartelle occupano più spazio?», «trova i backup», «che file ci sono nella cartella?» oppure «leggi la configurazione di questo servizio». L'operazione è di sola lettura: non cancellare, spostare o modificare nulla se l'utente chiede soltanto un'ispezione.

1 — Identificare il server e lo strumento corretto

  1. Consultare server_inventory_registry.json e la matrice delle capacità per risolvere l'ID canonico della VPS.
  2. Se il percorso è nel workspace /srv/mcl-workspace, preferire MCL_MCP_2026.list_files(path) e read_file(path), evitando shell superflua. read_file è limitato a 200 KB di testo UTF-8.
  3. Per filesystem fuori dal workspace o su VPS remote, utilizzare il percorso diagnostico/amministrativo MCL già autorizzato per quella VPS, verificando prima identità e permessi. Non inventare accessi, non disabilitare SSH host-key checking.

2 — Comandi di ispezione utilizzati realmente

pwd
ls -lah /PERCORSO
find /PERCORSO -maxdepth 2 -type f
du -x -h -d 1 /PERCORSO
du -x -h -d 2 /PERCORSO | sort -h | tail -25
df -h /
df -i /
find /PERCORSO -maxdepth 1 -type f -name '*.sqlite' | wc -l

ls mostra file e permessi; find scopre percorsi e conta file; du stima l'occupazione delle directory; df misura la capacità del filesystem e degli inode. -x evita di attraversare altri filesystem. Per file testuali noti, leggere una sezione limitata con sed -n '1,100p' FILE oppure lo strumento MCP read_file, ove applicabile.

3 — Limiti e sicurezza

  • Non stampare file .env, password, token, chiavi SSH, credenziali o dump di database contenenti dati personali.
  • Non utilizzare scansioni ricorsive illimitate su directory enormi; limitare profondità, durata e righe di output.
  • Non dedurre che una directory chiamata backups sia eliminabile: verificare funzione, processi che la scrivono, data e integrità delle copie.
  • Se un comando fallisce per permessi o per controlli della piattaforma, classificarne l'errore e preferire operazioni MCP dedicate disponibili.
  • Una lettura riuscita non certifica permessi di modifica o capacità di deployment.

4 — Caso reale: audit disco VPS gpt del 16/10/2026

Con gli stessi comandi abbiamo identificato un filesystem principale da 38 GB al 100%, circa 352 MB disponibili, e individuato le directory con maggiore occupazione:

DirectoryDimensione rilevataSignificato
/var/lib/mcl-dashboard/discover-production/backups9,1 GB2.519 file SQLite di backup
/var/lib/mcl-dashboard/discover-production/produce/assets2,8 GBAsset operativi di produzione
/var/lib/mcl-discover-cms/_backups5,0 GB71 cartelle di backup CMS
/var/log/journal3,3 GBJournal systemd

Nel backup CMS di nwvicenza del 16/10 sono stati identificati cms.sqlite, media.tar.gz e instance.env tramite il solo elenco dei nomi; non è stato necessario leggere il contenuto riservato del file di configurazione.

5 — Risultato da consegnare

VPS identificata:
Directory analizzata:
Comandi o tool usati:
Dimensione e numero file:
File/cartelle principali:
Dati operativi / backup / temporanei:
Problemi o anomalie:
Limiti di accesso:
Modifiche eseguite: nessuna (sola lettura)
Prossimo intervento suggerito:
Stato: lettura e analisi dimensionale verificate su VPS gpt. La procedura è riutilizzabile su altre VPS raggiungibili, dopo verifica dell'accesso; non implica che tutti i filesystem siano già stati certificati.
Verifica risorse VPSDiagnostica CPU RAM disco uptime · verificata

Stato e campo di applicazione

Verificata in lettura su gpt e mcl-clients, 16/10/2026.

Procedura operativa

Individuare server nel registro; usare fleet_server_diagnostics(server_id, health) se esposto oppure mcl_fleet_diagnostics.py con server_id canonico; leggere uptime, load, df -h / e free -m. Non interpretare RAM free senza available. Controllare soglie e registrare valori e data.

Comando o strumento realmente disponibile

python3 -B mcl_fleet_diagnostics.py gpt health

Evidenza / limitazioni

Sul server gpt il disco / è al 100% (circa 352 MB disponibili), mentre mcl-clients è al 26%. Aprire incidente capacità; non cancellare log o backup senza analisi e autorizzazione.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Collegamento VPS a MCL MCP 2026Registro canonico · SSH rigoroso · test identità

Stato e campo di applicazione

Verificato il collegamento preesistente a verticali-vps-1; non testato provisioning ex novo.

Procedura operativa

Identificare VPS e IP nell'inventario e identificare chiave client autorizzata; configurare alias SSH con utente corretto e known_hosts verificato; controllare StrictHostKeyChecking=yes; eseguire diagnostica identity e health; aggiornare matrice capacità solo dopo il test; differenziare connettività e permessi amministrativi.

Comando o strumento realmente disponibile

python3 -B mcl_fleet_diagnostics.py verticali-vps-1 identity

Evidenza / limitazioni

Il 16/10 verticali-vps-1 ha restituito root UID 0 con controllo host key rigoroso dopo correzione del file SSH. Origine della fingerprint preesistente da confermare tramite fonte affidabile prima di certificare integralmente l'identità.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Gestione accessi SSH e autorizzazioniUtente chiavi known_hosts sudo e rollback

Stato e campo di applicazione

Correzione di configurazione testata su verticali-vps-1.

Procedura operativa

Leggere la configurazione SSH esistente e il registro, salvare backup prima della modifica; non disabilitare il controllo host key; correggere solo l'alias interessato; verificare utente e UID in sessione separata; verificare sudo solo dove necessario, senza esporre segreti. Non sostituire chiavi private.

Comando o strumento realmente disponibile

ssh -F /var/lib/mcl-mcp/.ssh/config -o StrictHostKeyChecking=yes -o UserKnownHostsFile=/var/lib/mcl-mcp/.ssh/known_hosts root@91.99.0.230 'hostname; id -u'

Evidenza / limitazioni

Il vecchio alias verticali usava UserKnownHostsFile /dev/null; la diagnostica rigorosa non trovava la chiave. Corretto il percorso e testata identità root. Backup config.bak-20261016-verticali-hostkey.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Configurazione virtual host NginxConfig sito · nginx -t · reload · HTTP

Stato e campo di applicazione

Creazione e configurazione di guida-mcp.mclmedia.eu verificate.

Procedura operativa

Identificare VPS e vhost effettivo; backup config; preparare file dedicato con server_name, root/proxy e listener IPv4/IPv6 appropriati; collegare a sites-enabled; validare nginx -t; ricaricare soltanto se valido; testare Host, redirect e risposta HTTPS. Evitare conflitti sui server_name.

Comando o strumento realmente disponibile

sudo -n nginx -t

Evidenza / limitazioni

Su gpt il test Nginx è riuscito; guida-mcp.mclmedia.eu restituisce HTTPS 200. Il test HTTP da solo non dimostra corretto rendering dell'interfaccia.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Installazione e rinnovo SSLLet's Encrypt · Certbot · TLS · scadenza

Stato e campo di applicazione

Emissione certificato e timer di rinnovo verificati; rinnovo futuro non ancora testato.

Procedura operativa

Prima verifica DNS e HTTP challenge, poi certbot certonly --webroot secondo il vhost; configura 443 con fullchain e privkey corretti; nginx -t, reload; curl HTTPS con verifica TLS attiva e test IPv4/IPv6; controlla certbot certificates e timer. Non considerare un timer attivo prova del rinnovo.

Comando o strumento realmente disponibile

sudo -n certbot certificates

Evidenza / limitazioni

Certificato guida-mcp valido fino al 14/01/2027 e certbot.timer attivo. Nel caso guida, record AAAA rimosso per errore TLS IPv6; non reintrodurlo senza nuovo QA.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Verifica completa sito dopo interventoHTTP TLS struttura HTML contenuti responsive

Stato e campo di applicazione

Test tecnici verificati sulla guida MCP; collaudo visivo completo non attestato.

Procedura operativa

Controllare URL e host, HTTP->HTTPS, certificato, risposta 200, contenuto corretto, funzionalità richieste, HTML bilanciato, mobile/desktop con browser se disponibile, JS ed errori console, log, regressioni. Registrare verifiche mancanti. Un 200 non certifica grafica o business logic.

Comando o strumento realmente disponibile

curl -4 -I https://guida-mcp.mclmedia.eu/operazioni/

Evidenza / limitazioni

Correzione categorie guida: parser HTML senza errori di annidamento, schede chiuse, HTTPS 200. QA tramite screenshot/browser non eseguito.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Risoluzione errori HTTP e server500 502 404 · triage stack applicativo

Stato e campo di applicazione

Ripristino HTTP FarmacieOra confermato il 16/10/2026; la causa e la modifica specifica del precedente errore 500 non sono state ricostruite con evidenze sufficienti.

Procedura operativa

Riprodurre errore e annotare URL/status; verificare DNS origin, Nginx error/access log, upstream service, PHP/Python, database e permessi in sola lettura; effettuare backup e correggere una causa dimostrata; testare endpoint e log; rollback in caso di regressione. Non riavviare servizi o cambiare permessi alla cieca.

Comando o strumento realmente disponibile

curl -I https://DOMINIO/

Evidenza / limitazioni

FarmacieOra aveva restituito HTTP 500 nello storico. Nuova prova dal server gpt il 16/10/2026: https://farmacieora.it/ HTTP 200, https://www.farmacieora.it/ HTTP 301. Il servizio pubblico è dunque ripristinato e l’errore 500 non è attualmente riproducibile dalla homepage. La root cause e il fix specifico non sono ancora dimostrati: certificazione del recupero HTTP, non della procedura correttiva completa.

Chiusura obbligatoria: registrare server, data, file o servizio interessato, risultato, prova della verifica e rollback previsto. Non attribuire certificazione completa a test soltanto parziali.

Creazione e modifica record DNS CloudflareA · AAAA · CNAME · GET/POST/PUT/DELETE · Casi reali verificati il 16/10/2026

Quando utilizzare questa operazione

Per aggiungere, modificare, verificare o rimuovere record DNS in una zona Cloudflare già gestita da MCL. Non confondere questa procedura con il cambio dei nameserver presso OVH: quello è un runbook separato.

Certificazione pratica: il 16/10/2026 sono stati verificati mediante API Cloudflare i record di guida-mcp.mclmedia.eu, farmacieora.it e www.farmacieora.it. Le operazioni storiche comprendono creazione di A, AAAA e CNAME e rimozione dell'AAAA del sottodominio guida. Non è stata eseguita alcuna modifica DNS durante questa ricertificazione.

1. Controllo preliminare: identificare la zona esatta

  1. Controllare il dominio richiesto e l'IP o destinazione effettiva tramite l'inventario MCL.
  2. Richiamare integrations.cloudflare_find_zone(ZONA) e selezionare esclusivamente la zona il cui campo name corrisponde al nome atteso.
  3. Leggere i record attuali con integrations.cloudflare_request("GET", "/zones/{zone_id}/dns_records?name=HOST&per_page=100").
  4. Prima di qualsiasi scrittura salvare tipo, nome, valore, TTL, proxy e ID del record esistente, per consentire l'eventuale ripristino.

2. Comportamento standard delle modifiche

OperazioneAPI CloudflareControllo obbligatorio
LeggereGET /zones/{id}/dns_recordsZone e host esatti
CrearePOST /zones/{id}/dns_recordsIl record non esiste già
AggiornarePUT /zones/{id}/dns_records/{record_id}Backup del valore precedente; ID esatto
EliminareDELETE /zones/{id}/dns_records/{record_id}Richiesta esplicita e record esatto

I record A puntano a indirizzi IPv4, AAAA a IPv6, CNAME a hostname. Per proxied=true Cloudflare mostra ai resolver i suoi IP anziché necessariamente l'IP origin. Impostare il proxy secondo i requisiti del servizio; non applicarlo indiscriminatamente ai record usati per posta o verifiche.

3. File realmente utilizzati

/srv/mcl-workspace/guida_mcp_dns_setup.py
/srv/mcl-workspace/guida_mcp_dns_disable_ipv6.py
/srv/mcl-workspace/tmp/setup_farmacieora_cloudflare.py
/srv/mcl-workspace/mcl_dns_records_readonly.py

I primi tre sono script storici che contengono nomi host o valori fissi. Non riutilizzarli per altri domini così come sono. L'ultimo è uno script di sola lettura creato e testato il 16/10/2026 e controlla esattamente i tre hostname usati nei casi di esempio.

python3 -B mcl_dns_records_readonly.py

4. Risultati verificati

NomeTipoValore origin/targetProxy
guida-mcp.mclmedia.euA2.28.59.75No
farmacieora.itA91.99.0.230Sì
www.farmacieora.itCNAMEfarmacieora.itSì

Su guida-mcp.mclmedia.eu era stato creato anche AAAA verso 2a01:4f8:1c1c:1148::1, poi rimosso dopo un errore TLS su IPv6. La lettura API attuale conferma che tale AAAA è assente. L'eliminazione è tracciata nel file guida_mcp_dns_disable_ipv6.py.

5. Verifica e rollback

  1. Controllare che l'API restituisca success=true e che la rilettura del record restituisca i parametri voluti.
  2. Eseguire dig verso resolver indipendenti. Per i record proxati confrontare le risposte tenendo conto del proxy Cloudflare.
  3. Testare il servizio finale via HTTP/HTTPS, IPv4 e se applicabile IPv6, senza disattivare le verifiche TLS.
  4. Se l'intervento provoca regressioni, ripristinare il record precedente utilizzando i valori salvati, quindi ricontrollare API e comportamento del sito.

Precauzioni

  • Non eliminare o sostituire record TXT/MX/SPF/DKIM/DMARC senza analizzare i servizi email interessati.
  • Non aggiungere record AAAA senza confermare il virtual host e il certificato sul percorso IPv6.
  • Non sovrascrivere record esistenti solo perché uno script storico contiene valori diversi.
  • Non dichiarare «sito operativo» dalla sola riuscita di una modifica DNS: eseguire sempre QA applicativo.

Stato: lettura A/CNAME e ciclo storico creazione/rimozione A/AAAA/CNAME verificati sui casi indicati. I record TXT di verifica Google sono stati letti e verificati in un caso reale, weloveveneto.it, senza modificarli. La procedura di creazione TXT è già implementata nell’onboarding Search Console MCL, ma non è stata eseguita in questa sessione. La configurazione MX resta da certificare su un caso dedicato.

Configurazione nameserver Cloudflare su dominio OVHOVH API → Cloudflare → delega NS → verifica indipendente · CERTIFICATA 16/10/2026

Procedura operativa verificata

Stato: verificata su farmacieora.it e farmacieora.com. Entrambe le attività OVH DomainDnsUpdate risultano done. La zona Cloudflare risulta active; registrar e due resolver indipendenti restituiscono gli stessi nameserver.

Quando utilizzarla

Quando un dominio è già registrato presso OVH e deve utilizzare i nameserver di una zona Cloudflare dell'account MCL. Per un sottodominio della zona mclmedia.eu non serve modificare la delega OVH: si devono creare soltanto i record DNS della zona già esistente.

1 — Leggere la zona, senza modificare nulla

  1. Usare integrations.cloudflare_find_zone(DOMINIO): verificare se la zona esiste; se manca, utilizzare cloudflare_create_zone soltanto dopo aver confermato l'account e la richiesta.
  2. Leggere result.name_servers dalla zona effettiva. Non riutilizzare automaticamente i nameserver di FarmacieOra: le assegnazioni possono variare per zona.
  3. Usare integrations.ovh_request("GET", "/domain/DOMINIO") per verificare proprietà e nameserver attuali, senza esporre dati riservati.

2 — Impostare la delega OVH

La funzione operativa utilizzata nel caso reale è integrations.ovh_set_cloudflare_nameservers(domain, nameservers). Passare il dominio esatto e l'elenco di nameserver restituito da Cloudflare per quella zona. Salvare l'ID dell'eventuale task OVH. Eseguire la modifica una sola volta; se la risposta è incerta, leggere lo stato prima di riprovare.

import integrations as i
domain = "DOMINIO_DA_CONFIGURARE"
status, zone_response = i.cloudflare_find_zone(domain)
# Validare HTTP 200 e selezionare la zona che ha name == domain.
# Leggere zone["name_servers"]; non hardcodare valori storici.
# Solo per dominio approvato e delega non già coerente:
# status, result = i.ovh_set_cloudflare_nameservers(domain, nameservers)

3 — Verificare il task e la delega

Controllare GET /domain/DOMINIO/task/TASK_ID via ovh_request fino a stato done, senza ripetere la mutazione. Verificare poi che la zona Cloudflare sia active e che i nameserver corrispondano.

Script riutilizzabile appena creato e testato: /srv/mcl-workspace/mcl_nameserver_verify.py.

python3 -B mcl_nameserver_verify.py farmacieora.it
python3 -B mcl_nameserver_verify.py farmacieora.com

Lo script confronta nameserver OVH, Cloudflare e risposte dei resolver 1.1.1.1 / 8.8.8.8. Restituisce "consistent": true solo quando sono tutti allineati e Cloudflare è attivo. È di sola lettura: non acquista domini, non modifica la delega e non cambia record DNS.

4 — Prova reale del 16 ottobre 2026

DominioTask OVHCloudflareDNS e risultato
farmacieora.it603168418 · doneactivejaxson / ulla · consistent=true
farmacieora.com603168419 · doneactivejaxson / ulla · consistent=true

I nomi completi rilevati sono jaxson.ns.cloudflare.com e ulla.ns.cloudflare.com. I file storici di modifica sono tmp/set_farmacieora_ovh_ns.py e tmp/check_farmacieora_progress.py: non eseguirli per altri domini, perché contengono valori fissi.

Prevenzione degli errori

  • Non confondere nameserver (delega della zona) con record A, AAAA, CNAME e TXT.
  • Non fare modifiche se la delega OVH è già corretta.
  • Non utilizzare nameserver copiati da altri domini senza leggere la zona di destinazione.
  • Non dichiarare conclusa la configurazione soltanto per una risposta HTTP 200 alla richiesta di modifica: controllare task, Cloudflare e DNS.
  • Se la propagazione è incompleta, distinguere cache DNS e fallimento effettivo del task OVH.

Criterio di certificazione: task completato, delega coerente presso registrar, zona Cloudflare attiva e verifiche DNS riuscite. La disponibilità del sito web e il TLS si verificano con una procedura separata.

Leggere l'elenco delle VPS MCLSala Server · Registro canonico · Capacità realmente disponibili

Scopo

Recuperare l'inventario delle VPS e identificare senza supposizioni server, ruolo, stato del collegamento e limiti amministrativi.

Sequenza collaudata

  1. Consultare Organizzazione → Server come vista umana, controllando la data dello snapshot.
  2. Leggere con il tool MCL_MCP_2026.read_file il registro server_inventory_registry.json per gli identificativi canonici; in alternativa leggere organizzazione_capability_matrix.json per le capacità già certificate.
  3. Distinguere inventario provider, accesso SSH, lettura, sudo, modifiche di produzione e rollback. Una VPS censita non è necessariamente amministrabile.
  4. Per un controllo aggiornato utilizzare la diagnostica dedicata fleet_server_capabilities e fleet_server_diagnostics se esposte nel catalogo ChatGPT. Se non sono disponibili, usare il canary già presente, senza inventare strumenti.
  5. Indicare all'utente il server individuato e il livello reale di accesso prima di qualsiasi modifica.
Registro: /srv/mcl-workspace/server_inventory_registry.json
Capacità: /srv/mcl-workspace/organizzazione_capability_matrix.json
Canary: python3 -B mcl_mcp_live_canary.py
Output canary: mcl_mcp_live_canary_latest.json

Verifica effettuata il 16/10/2026: 24 server nello snapshot capacità del 11/10; test di identità riuscito per 7 server su 8 selezionati. Non confondere questi numeri con disponibilità live dell'intera flotta.

Verifica accesso e operatività VPSIdentità SSH · Host key · Stato servizi · Permessi · Preflight deploy

Perché è una procedura distinta

Un IP noto o un record DNS non dimostrano che MCL possa intervenire nella VPS. Questo controllo è obbligatorio prima di installare, migrare o correggere un sito.

Diagnostica

  1. Confermare l'ID server nel registro canonico e consultare la matrice delle capacità.
  2. Verificare l'identità remota tramite fleet_server_diagnostics(server_id, "identity") se lo strumento è disponibile; altrimenti l'implementazione già esistente mcl_fleet_diagnostics.py SERVER_ID identity tramite percorso MCP autorizzato.
  3. Eseguire i controlli health, services e cron secondo le necessità e registrare data ed esito.
  4. Verificare separatamente permessi di scrittura, sudo e capacità di effettuare rollback; senza tali test non dichiarare possibile un deploy produttivo.
  5. Quando SSH segnala host key ignota, verificare la fingerprint con una fonte indipendente attendibile; mai disabilitare StrictHostKeyChecking.
python3 -B mcl_fleet_diagnostics.py mcl-clients identity
python3 -B mcl_fleet_diagnostics.py mcl-clients health
python3 -B mcl_fleet_diagnostics.py mcl-clients services
Caso risolto · verticali-vps-1 · 16/10/2026: il collegamento SSH usava StrictHostKeyChecking no e UserKnownHostsFile /dev/null. La diagnostica forzava la verifica rigorosa della chiave, ma ereditava il registro nullo e falliva con Host key verification failed. È stato configurato StrictHostKeyChecking yes con UserKnownHostsFile /var/lib/mcl-mcp/.ssh/known_hosts, già contenente la chiave del server. Dopo la modifica, i controlli identity e health sono riusciti; identità remota root, UID 0. Backup configurazione: /var/lib/mcl-mcp/.ssh/config.bak-20261016-verticali-hostkey. L’origine fiduciaria della chiave preesistente non è stata ricertificata indipendentemente in questa sessione; verificare la fingerprint tramite console/provider per una certificazione completa dell’identità host.

Stato: diagnostica di lettura verificata su sette server prioritari; provisioning produttivo su tutti gli host non ancora certificato.

Inserire e attivare un sito su una VPSVPS di destinazione · File applicativi · Web server · DNS · SSL · QA

Obiettivo e prerequisiti

Portare un dominio già registrato su una VPS MCL esistente, evitando di confondere acquisto, DNS, caricamento file e pubblicazione. Questa procedura è un runbook di riferimento: i singoli comandi di deployment cambiano con lo stack (Nginx/PHP/WordPress/MCL Engine) e devono essere verificati sulla VPS scelta.

Sequenza corretta

  1. Identificazione: ricavare la VPS dal progetto e da Organizzazione, non dalla risoluzione DNS proxata Cloudflare.
  2. Preflight: verificare identità SSH, host key, spazio disco, servizi web, vhost già esistenti, permessi e possibilità di rollback.
  3. Backup: salvare configurazioni/file che verranno modificati; evitare sovrascritture non necessarie.
  4. Installazione: creare cartella e applicazione, configurare un virtual host specifico, collegare eventuale runtime e database usando le procedure già certificate per quella VPS.
  5. DNS: utilizzare l'integrazione integrations.cloudflare_request per zona e record; eventuale delega dei nameserver presso OVH è un passaggio distinto. Usare IP origin verificato e non aggiungere AAAA senza verifica IPv6.
  6. SSL: attivare certificato valido per l'hostname tramite metodo supportato dal web server.
  7. QA: test configurazione web server, HTTP → HTTPS, risposta 200, certificato, contenuto, permessi, log e verifica esterna. Se non funziona, rollback circoscritto.
  8. Registro: annotare quali strumenti sono stati effettivamente usati e quali passaggi restano da certificare.

Caso FarmacieOra

farmacieora.it è stato configurato con origin 91.99.0.230 (verticali-vps-1) e DNS Cloudflare. File rilevanti nel workspace: tmp/setup_farmacieora_cloudflare.py, tmp/set_farmacieora_ovh_ns.py, tmp/farmacieora_health.py. Questi file non costituiscono un installer universale e non vanno lanciati per altri domini senza adeguamento e revisione.

Distinzione essenziale: un record DNS attivo non certifica che il sito sia stato correttamente installato. Sul server verticali, il 16/10 è stato corretto il conflitto di configurazione SSH e l’accesso amministrativo root è stato verificato; prima di certificare un deployment completo servono comunque QA applicativo, backup e rollback.

Criterio di successo

Registrazione e DNS verificati, virtual host valido, certificato TLS corretto, pagina/applicazione richiesta funzionante, controlli registrati e rollback disponibile. Fino ad allora stato PARZIALE, mai «100%».

Acquisto e registrazione dominioOVH · Verifica disponibilità · Carrello · Checkout · Conferma proprietà

Obiettivo e caso verificato

Registrare un nuovo dominio per MCL usando l'integrazione OVH già presente nel workspace, senza confondere acquisto, delega DNS e installazione del sito. Caso verificato il 16 ottobre 2026: registrazione di farmacieora.it e farmacieora.com, ordine OVH 261268555, stato delivered. Per entrambi, API OVH GET /domain/{domain} ha restituito HTTP 200 con scadenza 16/10/2027. Il totale ordine riportato da OVH è € 13,40 IVA inclusa; non equivale a un prezzo garantito per acquisti futuri.

Classificazione: acquisto dominio fattibile e verificato tramite OVH. Sono verificati ordine consegnato e domini attivi. Le modalità di acquisto restano soggette a preventivo aggiornato, autorizzazione esplicita e disponibilità effettiva del dominio.

Passo 1 — Preflight e autorizzazione

  1. Controllare la forma esatta del dominio e l'eventuale necessità di acquistare più estensioni.
  2. Interrogare OVH per disponibilità, offerte, prezzi, durata e requisiti registrativi specifici del TLD.
  3. Identificare l'account OVH autorizzato e verificare il profilo intestatario prima del checkout.
  4. Comunicare costo totale, rinnovo e condizioni applicabili e ottenere autorizzazione per l'acquisto a pagamento. Non eseguire checkout per semplice richiesta di verifica.

Passo 2 — Creazione carrello OVH

File effettivamente utilizzato per preparare l'ordine: /srv/mcl-workspace/tmp/prepare_farmacieora_domains.py. Esso usa integrations.ovh_request e le API:

POST /order/cart                    # ovhSubsidiary: IT
GET  /order/cart/{cart_id}/domain?domain=DOMINIO
POST /order/cart/{cart_id}/domain  # offerId, duration, quantity
POST /order/cart/{cart_id}/item/{item_id}/configuration
POST /order/cart/{cart_id}/assign
GET  /order/cart/{cart_id}/checkout

Per domini .it, verificare e compilare le dichiarazioni richieste dal registrar secondo il profilo dell'intestatario. Nel caso reale sono state inviate configurazioni con etichette IT_SECT3_OTHER, IT_SECT4_OTHER e IT_SECT5_OTHER. Non copiare ciecamente le dichiarazioni legali per un altro intestatario.

Passo 3 — Checkout e pagamento

Il carrello preparato non significa acquisto completato. Richiedere il checkout aggiornato e procedere tramite il percorso di pagamento OVH esplicitamente autorizzato per quell'ordine. Registrare soltanto ID ordine, totale, data e stato, mai token di pagamento, password ordine o URL con segreti. Non ritentare il pagamento se lo stato è incerto: interrogare prima l'ordine esistente per evitare acquisti duplicati.

Passo 4 — Certificare la registrazione

File effettivamente utilizzati: tmp/check_farmacieora_order_status.py e tmp/verify_farmacieora_domains_active.py. Endpoint di verifica:

GET /me/order/{order_id}/status
GET /me/order/{order_id}/details
GET /domain/{domain}

La registrazione è VERIFICATA soltanto quando l'ordine risulta consegnato e ogni dominio richiesto è presente nel registrar con una scadenza reale. Salvare prova del riscontro con data e ora, senza dati personali o credenziali.

Passo 5 — DNS e hosting: procedura separata

Solo dopo la registrazione: creare/verificare la zona Cloudflare e delegare i nameserver da OVH con la procedura autorizzata. Nel caso FarmacieOra i riferimenti sono tmp/setup_farmacieora_cloudflare.py e tmp/set_farmacieora_ovh_ns.py. I nameserver previsti erano jaxson.ns.cloudflare.com e ulla.ns.cloudflare.com; per un nuovo dominio leggere sempre quelli della zona effettiva. Configurare poi record DNS e hosting con runbook distinti.

Errori da prevenire

  • Non scambiare carrello creato per dominio acquistato.
  • Non acquistare automaticamente altre estensioni non autorizzate.
  • Non fidarsi di un solo check WHOIS durante la propagazione: usare API OVH e ordine.
  • Non ripetere il checkout in caso di timeout senza ricontrollare l'ordine.
  • Non esporre ID di pagamento segreti, URL con password o token nei log della guida.
  • Non considerare il dominio online fino alla verifica indipendente di DNS, TLS e sito.

Registro caso FarmacieOra · 16/10/2026

ElementoEvidenza
RegistrarOVH · integrazione MCL ovh_request
Ordine261268555 · delivered (verificato via API)
Totale ordine€ 13,40 IVA inclusa
farmacieora.itAPI 200 · scadenza 16/10/2027
farmacieora.comAPI 200 · scadenza 16/10/2027
Fase successivaCloudflare, nameserver e provisioning VPS: procedure distinte
Creazione sottodominio su MclmediaCloudflare · VPS gpt · Nginx · Certbot · verifica HTTPS

Guida operativa passo per passo

Runbook verificato per creare un nuovo sottodominio *.mclmedia.eu sulla VPS gpt, riutilizzando la procedura realmente adottata per guida-mcp.mclmedia.eu il 16 ottobre 2026.

Procedura verificata su un caso reale. Il sito guida-mcp.mclmedia.eu è stato creato, ha ottenuto un record DNS A e un certificato Let's Encrypt; HTTPS via IPv4 ha risposto 200.
Ambito: questa procedura vale per siti statici ospitati su gpt e richiede un record Cloudflare autorizzato. Per applicazioni dinamiche, VPS diverse, autenticazione o database servono passaggi aggiuntivi. Non eseguire automaticamente tutti i passaggi su server diversi.

1. Sequenza operativa da ripetere

  1. Confermare il sottodominio richiesto e il server dal registro MCL.
  2. Preflight: server_info, identità VPS, verifica DNS esistente, Nginx e collisioni dei virtual host.
  3. Preparare contenuti web in workspace con write_file.
  4. Creare directory e configurazione Nginx, validare con nginx -t, poi ricaricare.
  5. Creare i record Cloudflare con la procedura Python già disponibile basata su integrations.cloudflare_request.
  6. Richiedere SSL con Certbot; aggiornare il virtual host per la porta 443.
  7. Verificare HTTP, HTTPS, contenuto, certificato, DNS e IPv4/IPv6.
  8. Registrare risultati, errori e rimedi verificati.

Usare prima strumenti MCP dedicati. Dove non esistono, ricorrere unicamente a procedure esistenti e autorizzate con parametri controllati. Non dichiarare il completamento prima del QA.

2. Configurare Cloudflare

Per il caso reale, è stata riutilizzata la procedura travel_run_dns_setup.py modificando solo il nome del sottodominio nel file guida_mcp_dns_setup.py. La funzione di integrazione è integrations.cloudflare_find_zone e integrations.cloudflare_request.

ZONE = "mclmedia.eu"
NAME = "guida-mcp.mclmedia.eu"
IPV4 = "2.28.59.75"
# Preferire inizialmente solo A, se IPv6 non è già verificato.
# 1. cloudflare_find_zone(ZONE)
# 2. GET /zones/{zone_id}/dns_records?name=NAME
# 3. POST record A se assente oppure PUT se già presente
# 4. Verificare success=True e risposta del resolver

Nel caso reale il DNS è stato creato con record A e AAAA, ma il record AAAA è stato successivamente rimosso perché la connessione IPv6 presentava un certificato non corrispondente. Non copiare automaticamente l'AAAA da un altro dominio: abilitare IPv6 soltanto dopo test TLS valido sul percorso IPv6.

File di riferimento in /srv/mcl-workspace/: guida_mcp_dns_setup.py e guida_mcp_dns_disable_ipv6.py. Prima di eseguirli per altri domini, parametrizzarli: non applicare file hardcoded a nomi differenti.

3. Creare il sito su gpt

Per la guida, il file HTML è stato creato nel workspace e copiato in /var/www/guida-mcp.mclmedia.eu/index.html. Nginx usa un virtual host isolato in /etc/nginx/sites-available/guida-mcp.mclmedia.eu, collegato a sites-enabled.

server {
    listen 80;
    listen [::]:80;
    server_name guida-mcp.mclmedia.eu;
    location /.well-known/acme-challenge/ { root /var/www/html; }
    location / { return 301 https://$host$request_uri; }
}

Creare la directory del sito, posizionare i contenuti e creare il virtual host. Prima del reload effettuare sempre sudo -n nginx -t. Se fallisce, non ricaricare e ripristinare la precedente configurazione.

4. Richiedere e configurare il certificato

Procedura effettivamente utilizzata per il sito, con challenge webroot:

sudo -n certbot certonly --webroot \
  -w /var/www/html \
  -d guida-mcp.mclmedia.eu \
  --non-interactive --agree-tos \
  --register-unsafely-without-email

Per un nuovo dominio sostituire il nome host e verificare prima DNS e accessibilità HTTP della challenge. Il certificato della guida scade il 14 gennaio 2027; Certbot ha configurato un rinnovo automatico. Non riutilizzare tale certificato per hostname differenti.

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name guida-mcp.mclmedia.eu;
    root /var/www/guida-mcp.mclmedia.eu;
    index index.html;
    ssl_certificate /etc/letsencrypt/live/guida-mcp.mclmedia.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/guida-mcp.mclmedia.eu/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    add_header X-Robots-Tag "noindex, nofollow" always;
    location / { try_files $uri $uri/ =404; }
}

Questo esempio è specifico per la documentazione non indicizzabile; per siti pubblici non copiare automaticamente noindex. Conservare i permessi corretti delle chiavi private.

5. Checklist di accettazione

VerificaComando / controlloAtteso
Configurazionesudo -n nginx -tSuccess
DNS Adig +short A HOST @1.1.1.1IP previsto
HTTPcurl -4 -I http://HOST/301 verso HTTPS
HTTPS IPv4curl -4 -I https://HOST/200 senza errori TLS
Contenutocurl -4 https://HOST/Titolo e pagina corretti
AAAA / IPv6dig AAAA e curl -6 -I https://HOST/Se presente, certificato valido e 200
RinnovoControllare Certbot e scadenzaRinnovo gestito
Quando il sito deve essere accessibile a personale autorizzato soltanto, noindex non è una protezione di accesso. Richiedere esplicitamente autenticazione Basic, SSO o restrizioni di rete prima di inserire dati riservati.

6. Problemi reali e soluzioni

HTTPS IPv6 con certificato errato

Il 16 ottobre il test curl -4 restituiva 200, mentre curl -6 segnalava un nome host non corrispondente al certificato. È stato aggiunto il listener [::]:443, ma il problema TLS è rimasto. La soluzione di contenimento realmente eseguita è stata la rimozione del record Cloudflare AAAA del solo sottodominio, mantenendo il record A. Successivamente due resolver hanno restituito assenza di AAAA. La correzione definitiva del percorso IPv6 non è ancora certificata.

Comando Bash bloccato prima del server

Quando una chiamata run_command viene rifiutata prima dell'esecuzione, usare, quando esiste, lo strumento MCP dedicato autorizzato come read_file oppure write_file. Non interpretare il blocco come un guasto DNS o SSH e non aggirare i controlli di sicurezza.

7. Registro della procedura

DataEventoRisultato
16/10/2026Creazione guida-mcp.mclmedia.eu su gptDNS A, Nginx, Certbot, HTTPS IPv4 200
16/10/2026Contenimento problema TLS IPv6AAAA rimosso da Cloudflare
16/10/2026Pubblicazione pagina OPERAZIONIDa verificare con test HTTP

Ogni successivo sottodominio dovrà riportare host, server, strumenti realmente utilizzati, test e differenze rispetto alla procedura.

⌕

SEO, Analytics e Search Console

Proprietà Google, verifica DNS e collegamento agli account di servizio MCL.

Inserimento sito in Search ConsolePreflight anti-duplicati · TXT Cloudflare · Verifica Google · Account canonico MCL

Obiettivo

Controllare se un dominio è già presente in Google Search Console, oppure attivare le proprietà Dominio e URL canonica tramite il service account assegnato, configurando il TXT DNS su Cloudflare solo quando necessario. Evitare proprietà o token duplicati.

Caso reale verificato, 16 ottobre 2026: weloveveneto.it risulta già collegato a Search Console con account MCL Main. Sia sc-domain:weloveveneto.it sia https://weloveveneto.it/ restituiscono HTTP 200 e siteOwner. La zona Cloudflare è active e contiene 3 TXT con prefisso google-site-verification=. Nessuna nuova proprietà o modifica DNS è stata necessaria in questa verifica.

Passo 1 — Individuare l'account di servizio canonico

  1. Leggere il registro /srv/mcl-workspace/gsc_site_account_registry.json e l'inventario degli account, senza esporre chiavi private.
  2. Se il dominio ha già un account canonico, non assegnarne uno diverso arbitrariamente.
  3. Per i nuovi siti Discover, consultare il runner discover_gsc_onboard.py, che usa l'account MCL Main quando previsto e preserva eventuali assegnazioni preesistenti.

Passo 2 — Verificare prima di scrivere

Utilizzare GSCReader di p4_gsc_reader.py e le API GET https://www.googleapis.com/webmasters/v3/sites/{property} per entrambe le proprietà. Un HTTP 200 con siteOwner oppure siteFullUser conferma l'accesso di lettura/gestione appropriato; il livello di permessi effettivo va considerato per ogni azione.

Controllo effettivamente eseguito: python3 -B weloveveneto_gsc_verify_20261016.py. Non effettuare onboarding se entrambe le proprietà risultano già verificate e correttamente assegnate.

Passo 3 — Solo se assente: TXT di verifica Cloudflare

  1. Richiedere tramite gsc_integration.dns_token(domain) il token di verifica per la proprietà Dominio.
  2. Controllare la zona Cloudflare corrispondente e cercare l'esatto TXT già presente.
  3. Se manca, creare il record TXT con integrations.cloudflare_request("POST", ...) senza cancellare gli altri TXT esistenti.
  4. Richiamare gsc_integration.verify_domain(domain) e verificare la risposta di Google.
  5. Registrare le proprietà con gsc_integration.add_site(site_url) solo se necessario; verificare nuovamente i permessi tramite API.

La funzione già presente gsc_integration.verify_domain_via_cloudflare(domain) implementa questo flusso e viene usata da discover_gsc_onboard.py. Prima di riutilizzarla verificare proprietà, account previsto e compatibilità con lo stato del dominio.

Passo 4 — Registrazione canonica e verifica finale

  1. Confermare via Google le proprietà sc-domain:DOMINIO e https://DOMINIO/ o la URL canonica effettiva, con permessi previsti.
  2. Aggiornare gsc_site_account_registry.json tramite la procedura protetta da lock dell'onboarding, mai sovrascrivendo una selezione canonica già verificata.
  3. Controllare lo stato nel sistema Discover e distinguere collegamento verificato da disponibilità effettiva di dati SEO, che può richiedere tempo.

Risultati verificati su weloveveneto.it

ControlloEsito
Account canonicoMCL Main · gpt-openai-508011
Proprietà DominioHTTP 200 · siteOwner
Proprietà URLHTTP 200 · siteOwner
CloudflareZona active
Record TXT Google3 record rilevati, valori non esposti
Discover onboardingVERIFIED_AND_MAPPED · nessuna azione aggiuntiva
Tre record TXT non significano automaticamente un errore. Non cancellarli o deduplicarli senza prima verificare quali proprietà/account dipendono da ciascun token. La lettura odierna non ha effettuato alcuna pulizia.

Riferimenti esistenti: gsc_integration.py, discover_gsc_onboard.py, p4_gsc_reader.py, gsc_site_account_registry.json. File del test reale: weloveveneto_gsc_verify_20261016.py e weloveveneto_txt_audit_20261016.py.

Classificazione: verifica di proprietà già esistenti certificata su weloveveneto.it; il provisioning TXT e l'aggiunta di nuove proprietà risultano implementati nelle procedure MCL esistenti, ma non sono stati rieseguiti su questo dominio già verificato.

▤

Layout, grafica e interfaccia

Modifiche visive, navigazione, responsive, coerenza grafica e verifiche prima della consegna.

Modifica e perfezionamento di una paginaIdentifica il file · Backup · Layout · HTML/CSS · Mobile · Test · Rollback

Quando applicare questa procedura

Richieste come «modifica questa pagina», «sistema il menu», «migliora la grafica», «rendi perfetta la pagina», «sistema desktop e mobile». Prima di intervenire definire il risultato richiesto e individuare il progetto corretto: non modificare altri siti o componenti.

1 — Identificare la pagina reale

  1. Individuare dominio, server, documento o template effettivamente distribuito consultando Organizzazione e il progetto MCL.
  2. Leggere l'implementazione corrente con read_file se nel workspace oppure con una procedura amministrativa autorizzata della VPS corretta.
  3. Verificare eventuali template condivisi, componenti, CSS, JS, dipendenze e differenze per lingua; distinguere sorgente, build e file pubblicato.
  4. Se l'utente ha indicato un problema specifico, riprodurlo prima della correzione, con evidenza dello stato iniziale.

2 — Proteggere lo stato esistente

Salvare una copia datata del file o della release prima di sovrascrivere. Per applicazioni con build eseguire backup della versione pubblicata e predisporre un rollback. Evitare modifiche globali a CSS o navigazione senza controllare le altre pagine interessate.

3 — Applicare modifiche circoscritte

  1. Correggere il problema funzionale o strutturale prima dei ritocchi estetici.
  2. Usare gerarchie chiare, spaziatura coerente, contrasto leggibile, layout responsive e componenti uniformi.
  3. Controllare che menu, schede espandibili, pulsanti, link e selettori di lingua funzionino davvero.
  4. Non aggiungere elementi non richiesti, ad esempio selettori di lingua duplicati; non alterare contenuto editoriale o SEO senza necessità.
  5. Non introdurre chiavi, password o dati riservati nell'HTML, JavaScript o nei log.

4 — Validazione obbligatoria

  1. Controllare la struttura HTML: tag bilanciati, categorie annidate correttamente, ID univoci; verificare CSS e assenza di overflow.
  2. Verificare desktop e mobile con browser o screenshot quando lo strumento è disponibile. Se la verifica visuale non è possibile, dichiararlo: HTTP 200 non dimostra un layout corretto.
  3. Verificare gli stati interattivi: apertura/chiusura, focus da tastiera, link e menu.
  4. Controllare il sito online, risposta HTTP/HTTPS, testi, redirect e regressioni su pagine collegate.
  5. Se un controllo fallisce, correggere oppure eseguire rollback; non dichiarare «perfetto» senza QA visivo e funzionale.

5 — Caso realmente risolto: pagina OPERAZIONI

Il 16/10/2026 la sezione «SEO, Analytics e Search Console» appariva fuori dal contenitore principale. Causa: tag HTML chiusi nel punto sbagliato e una sezione introduttiva non chiusa correttamente. È stata corretta la struttura del file /srv/mcl-workspace/guida_mcp_operazioni.html, pubblicata in /var/www/guida-mcp.mclmedia.eu/operazioni/index.html e controllata con un parser HTML Python, verificando categorie all'interno di main, tag bilanciati e schede details chiuse inizialmente. L'endpoint HTTPS ha restituito 200.

Livello di certificazione del caso: struttura HTML e distribuzione HTTP verificate; non è documentato un collaudo grafico completo tramite screenshot/browser su più viewport. Il test del parser non sostituisce la verifica visiva.

6 — Scheda di chiusura intervento

Dominio / URL:
Server e file sorgente:
Problema osservato:
Backup / rollback:
Modifica effettuata:
Test struttura / JS / CSS:
Test desktop e mobile:
Test navigazione e contenuto:
HTTP/HTTPS e risultato:
Eventuali verifiche non svolte:
Esito: VERIFICATO / PARZIALE / BLOCCATO

Regola per l'assistente: usare la procedura ogni volta che viene chiesta una modifica di layout. Non limitarsi a cambiare CSS: identificare, correggere, pubblicare e verificare il risultato effettivo.

☷

Catalogo delle prossime operazioni

Elenco concordato delle procedure da completare e certificare. Non sono guide operative finché non vengono collaudate.

Infrastruttura, domini e hosting

Già documentate in questa pagina: Configurazione nameserver Cloudflare e Creazione/modifica record DNS. Le altre procedure approvate da sviluppare o completare sono:

  1. Collegamento VPS a MCL MCP 2026
  2. Gestione accessi SSH e autorizzazioni
  3. Verifica risorse VPS (CPU, RAM, disco)
  4. Configurazione virtual host Nginx
  5. Installazione e rinnovo SSL
  6. Deployment e aggiornamento sito esistente
  7. Migrazione sito tra VPS
  8. Installazione runtime e database
  9. Risoluzione errori HTTP e server
  10. Backup e ripristino sito
  11. Verifica completa sito dopo intervento
  12. Monitoraggio disponibilità dei siti

Escluse su tua indicazione: trasferimento dominio tra registrar, diagnostica propagazione DNS come guida autonoma, creazione nuova VPS e riavvio sicuro VPS/servizi come guida autonoma.

Layout, grafica e interfaccia

Già documentata: Modifica e perfezionamento di una pagina. Nuove evoluzioni approvate da sviluppare tramite interventi reali:

  1. Menu e navigazione — struttura, sottomenu, link, accessibilità e stati attivi
  2. Layout responsive — desktop, tablet, mobile e prevenzione overflow
  3. Tabelle e dashboard — leggibilità, filtri, ordinamento, densità e UX
  4. Uniformità grafica tra pagine — componenti condivisi, CSS, spaziature e design system

Ogni voce sarà trasformata in una scheda operativa chiusa soltanto quando avrà strumenti esatti, sequenza realmente eseguita, risultato verificato e indicazione dei limiti.