Harness MaxxingDocumentazione
📚 Tutte le pagine

💬 Usare Harness Maxxing · 9 min di lettura

🌐Infra: siti, database, bucket, domini, server

La pagina Infra risponde alla domanda "dov'è cosa, e funziona?": ogni sito, database, bucket, dominio e server - su questo server, sui tuoi altri server, su Cloudflare e su Hostinger - con il suo stato, i suoi collegamenti (questo dominio -> questo server -> questo sito -> questa app -> questo repository) e il progetto Harness a cui appartiene.

È disattivata di default: attivala in Impostazioni -> Funzionalità -> Pagina Infra. Nella barra laterale compare una voce Infra (scorciatoia G poi I).

Come funziona

  1. Harness legge tutto: questo server direttamente, i tuoi altri server via SSH (in sola lettura), Cloudflare e Hostinger con le loro chiavi API. Collega ciò che trova: un dominio al suo sito, un sito alla sua app, al suo database e al suo repository git.
  2. Lo tiene d'occhio per te: ogni indirizzo viene controllato (risponde? il certificato è valido?), così come le date di scadenza dei domini e lo spazio su disco, ogni 15 minuti (infra_refresh_min) o quando clicchi Aggiorna. Un problema finisce in cima alla pagina e nelle tue notifiche, una sola volta per incidente.
  3. Crei chiedendo a Claude: "metti online questa cartella", "crea un database per la mia app"... Claude segue le ricette standard (qui sotto) e il risultato compare nella pagina.

La pagina in sé non modifica mai i tuoi siti o database; l'unica cosa che fa da sola è collegare un server (vedi Altri server). Per cambiare qualcosa, chiedi a Claude: ogni riga ha un campo Chiedi a Claude.

La pagina

  • Panoramica: un riquadro "Come funziona" (con un link a questa pagina) (chiudilo con ×, riportalo con Come funziona in alto a destra), il conteggio di ogni tipo con ciò che è giù o da controllare, l'elenco Da guardare, e Cosa legge Harness: ogni fonte con ciò che fornisce e, quando manca qualcosa, il passo successivo (Aggiungi la chiave ..., Aggiungi questi permessi per un token Cloudflare che non può leggere tutto, Collega per una VPS non ancora letta).
  • Siti, Database, Bucket, Domini: raggruppati per dove si trovano. Domini -> Aggiungi un dominio tiene d'occhio un dominio di qualsiasi registrar. Cerca, filtra per progetto, mostra le righe nascoste con il pulsante a forma di occhio.
  • Server: una scheda per server con il suo indirizzo, il suo sistema, memoria / disco / CPU in uso e quanti siti, database e bucket girano su di esso.
  • Clicca su una riga qualsiasi per vederne i dettagli, a cosa è collegata, il suo repository (apre la pagina Git), la sua dashboard Cloudflare / Hostinger, un progetto, una nota, per nasconderla, o per chiedere a Claude informazioni su di essa.

Cosa legge

Fonte Cosa vedi Richiede
Questo server Siti Caddy (o nginx) e ciò che c'è dietro ciascuno (cartella, porta dell'app, servizio systemd, container Docker, repository git), database PostgreSQL / MySQL (anche dentro Docker), file SQLite, bucket Garage, disco, memoria niente
I tuoi altri server le stesse cose, lette via SSH python3 sul server e accesso SSH: vedi Altri server
Qualsiasi dominio registrar e data di scadenza (servizio pubblico RDAP), chi serve il suo DNS (OVH, GoDaddy, Namecheap, IONOS, Gandi, o2switch...), chi ospita il suo indirizzo (uno dei tuoi server, Vercel, Netlify, GitHub Pages, Shopify, Cloudflare, Webflow, Wix, Squarespace...) niente (DNS pubblico); aggiungi i domini che nessun provider elenca in Domini -> Aggiungi un dominio
Cloudflare domini (zone) e il loro DNS, Workers e i loro indirizzi, Pages, bucket R2 e i loro indirizzi pubblici, database D1, domini Registrar la chiave CLOUDFLARE_API_TOKEN (+ CLOUDFLARE_ACCOUNT_ID)
Hostinger domini con la loro data di scadenza, VPS, zone DNS la chiave HOSTINGER_API_TOKEN
Vercel (beta) progetti con il loro deployment di produzione (stato, data, repository git, framework), i loro domini; domini acquistati su Vercel con la loro data di scadenza; ogni team visto dal token la chiave VERCEL_TOKEN
Netlify (beta) siti con il loro ultimo deployment e repository git, zone DNS Netlify la chiave NETLIFY_AUTH_TOKEN
Supabase (beta) ogni progetto: il suo database (stato, regione, versione di Postgres; un progetto gratuito in pausa mostra "in pausa"), i suoi bucket Storage, le sue Edge Functions, collegati tra loro la chiave SUPABASE_ACCESS_TOKEN
GitHub Pages (beta) i siti Pages dei tuoi repository, il loro indirizzo e lo stato della build i token GitHub già presenti tra le tue chiavi (pagina Git)

Le chiavi vanno in Impostazioni -> Chiavi (la pagina Infra rimanda a esse). Harness con queste chiavi legge soltanto. Dai permessi di sola lettura dove il provider lo consente (Cloudflare, GitHub); i token di Vercel, Netlify e Supabase non possono essere limitati alla lettura: lasciali non esposti alle sessioni (è l'impostazione predefinita in Chiavi) così li usa solo la pagina Infra. Un token privo di uno dei permessi nasconde solo quella parte: la pagina ti dice quale.

Le ricerche DNS pubbliche passano da un resolver pubblico via HTTPS (di default 1.1.1.1 di Cloudflare): vede i nomi di dominio richiesti, nient'altro. Ogni nome viene cercato al massimo ogni 6 ore.

Creare le chiavi

  • Cloudflare: dash.cloudflare.com/profile/api-tokens -> Create token -> Custom, permessi (Read): Zone, DNS, Workers Scripts, Workers Routes, Cloudflare Pages, Workers R2 Storage, D1, Registrar; aggiungi DNS Edit se vuoi che Claude crei record DNS per i nuovi siti.
  • Hostinger: hPanel -> Profile -> API -> nuovo token.
  • Vercel: vercel.com/account/settings/tokens -> Create token, ambito "Full account" per vedere ogni team (Vercel non ha token di sola lettura: Harness legge soltanto).
  • Netlify: User settings -> Applications -> Personal access tokens -> New access token.
  • Supabase: supabase.com/dashboard/account/tokens -> Generate new token.
  • GitHub Pages: nient'altro se la pagina Git mostra già i tuoi repository.

Beta significa scritto a partire dalla documentazione ufficiale dell'API del provider e testato sulle risposte documentate, ma non ancora visto su un account reale: se una riga mostra un errore, chiedi a Claude da quella riga (vede l'errore) e faccelo sapere.

Il mio provider non è nell'elenco

  • Domini: non serve nulla. Aggiungi il dominio in Domini -> Aggiungi un dominio (oppure chiedi a Claude "tieni d'occhio il dominio example.com"): il suo registrar, la data di scadenza, il provider DNS e l'host vengono letti da informazioni pubbliche, e viene collegato al tuo server quando punta a esso. Gli avvisi prima della scadenza funzionano allo stesso modo.
  • Un server (OVH, DigitalOcean, Hetzner, Scaleway...): Aggiungi un server, viene letto via SSH come qualsiasi altro.
  • Una piattaforma (Render, Railway, Fly.io, Firebase, AWS...): i suoi siti compaiono comunque tramite i loro domini (la pagina indica chi ospita ogni indirizzo). Il supporto completo è previsto provider per provider.

Altri server

  • Una VPS Hostinger compare da sola quando la chiave Hostinger è nel vault, con il nome VPS Hostinger. Se accetta già una chiave SSH di questo server, Harness la collega da solo (l'API di Hostinger dice quale chiave, quindi non si prova nulla alla cieca). Altrimenti aprila e clicca Collega: Harness aggiunge la propria chiave (harness-maxxing@<this server>) all'account root della VPS tramite la tua chiave Hostinger, poi la legge. È l'unica modifica che la pagina Infra fa su un provider; puoi rimuovere la chiave in hPanel -> VPS -> SSH keys.
  • Qualsiasi altro server: Aggiungi un server (in cima alla pagina) con il suo indirizzo, utente SSH e porta. Se nessuna delle chiavi di questo server viene accettata lì, la finestra ti dà una riga da eseguire su quel server, poi Riprova.
  • Nel pannello di un server collegato: cambia il nome mostrato (il nome interno, usato nei link, non cambia mai) oppure Scollegalo (sul server non cambia nulla).
  • Dal terminale: maxxing infra server connect <IP or Hostinger VPS id>, server rename NAME "Label".

Harness legge soltanto gli altri server (siti, porte e servizi, Docker, database, bucket, disco, memoria). Il server richiede python3 (ce l'ha qualsiasi Linux di uso comune).

Stati

  • OK (verde), Da controllare (arancione): una pagina che risponde 404, un certificato o un dominio in scadenza a breve, un record DNS che punta a un server diverso da quello che serve il sito, un disco quasi pieno, un backup fallito...
  • Giù (rosso): nessuna risposta, un errore del server (5xx), un dominio scaduto, una risorsa creata da una ricetta che non si trova più.

Gli avvisi vanno nel feed delle notifiche (e su Telegram quando il suo thread del feed è attivo): un sito o un server che va giù e poi torna su, un certificato in scadenza entro 14 giorni, un dominio in scadenza entro 30 poi 7 giorni (se non è rinnovato automaticamente).

Creare cose su questo server

Chiedi a Claude con parole semplici; segue una ricetta fissa (skill maxxing-infra, comando maxxing infra) così tutto viene fatto sempre allo stesso modo, verificato prima di essere applicato, e compare nella pagina:

  • "Metti online questa cartella" -> https://<your Harness address>/<name>/, subito, senza DNS. Queste pagine girano isolate (in sandbox): non possono mai toccare Harness o la tua sessione (un'app dietro un percorso simile non riceve mai il tuo cookie di Harness e non può impostarne uno; i file nascosti come .env o .git non vengono mai serviti; la radice del workspace, il codice, la cartella di stato e .ssh non possono essere pubblicati). Perfetto per pagine, demo, report, siti statici. Un'app con login, carrello o cookie ha bisogno di un proprio indirizzo (shop.example.com): Claude te lo consiglia, e crea il record DNS su Cloudflare quando la chiave lo permette.
  • "Crea un database per la mia app" -> PostgreSQL (installato la prima volta, raggiungibile solo da questo server), un database e un utente per app, il suo indirizzo salvato in Chiavi (DB_<NAME>_URL), con backup ogni notte (job "Infra: database backups", 7 copie conservate in /var/backups/maxxing-db).
  • "Crea un bucket" -> storage S3 su questo server (Garage), le sue chiavi in Chiavi (S3_<NAME>_...), eventualmente pubblico su https://<your Harness address>/<name>/. I file restano su questo disco: per file pubblici di grandi dimensioni Cloudflare R2 è spesso meglio, e Claude te lo dice.
  • "Aggiungi il mio altro server 203.0.113.7" -> Claude lo collega (maxxing infra server connect); se non accetta ancora una chiave di questo server, Claude ti dice la riga da eseguire lì.

Nelle conversazioni

Quando Claude parla di risorse, aggiunge un piccolo blocco infra che l'app mostra in tempo reale (stato, link alla pagina):

```infra
site: shop.example.com
database: shop
```

Righe: site, database, bucket, domain, server, worker, pages, id (una risorsa ciascuna), oppure filtri project: acme, kind: database, location: <server>. Viene mostrato quando la pagina Infra è attiva (altrimenti resta il testo).

Terminale

maxxing infra status, maxxing infra list [--kind site] [--json], maxxing infra refresh, e le ricette: site add|remove|list, db install|create|sqlite|backup, bucket install|create, server connect|add|rename|remove|list, domain add|remove|list, annotate. Vedi maxxing infra --help e il riferimento CLI.

Sicurezza di infra.json

I server di <workspace>/infra.json sono raggiunti tramite ssh dal server stesso, quindi Claude non può modificare quel file (è nelle regole di divieto di ogni turno, come le impostazioni delle cartelle); usa maxxing infra server add o la pagina. Una voce scritta a mano che la CLI rifiuterebbe (utente, host o percorso della chiave strani) viene ignorata. Un provider che non risponde (Cloudflare, Hostinger, un server) lascia vuota soltanto la propria sezione: i controlli e gli avvisi del resto proseguono.

💡 Bloccato? Apri una sessione nel topic system › help e chiedi con parole tue: Claude legge questa documentazione sul tuo server e ti risponde.✏️ Migliora questa pagina