Vai al contenuto

Soluzioni · Agenti di programmazione

Un VPS per OpenHands

OpenHands è un agente di programmazione autonomo: gli si dà un repository e un compito e lui modifica, esegue, testa e apre pull request da solo, con il modello di Sua scelta tramite una chiave API. Il suo stesso README dice che il modo più potente per eseguirlo è su un server nel cloud, e il suo stesso avviso dice che l'agente ha pieno accesso alla macchina su cui gira. Entrambi portano alla stessa risposta: una macchina che non sia il portatile di nessuno. La guida per server del progetto considera 2 vCPU e 4 GB più che sufficienti per un utente; BD-8 a $12.90 al mese offre il doppio per meno delle macchine da 4 GB presenti altrove.

Cosa richiede

Software dalla documentazione, dimensioni con la fonte indicata

Il software e le impostazioni di sicurezza provengono dalla documentazione del progetto stesso. Dove il progetto non pubblica requisiti hardware, le dimensioni indicano di chi sono.

Dal README di OpenHands, da SELF_HOSTING.md e dalla documentazione

  • “2 vCPU / 4 GB RAM is plenty for a single user” (la guida del progetto sulle VM: 2 vCPU e 4 GB di RAM bastano ampiamente per un singolo utente). La documentazione richiede “un processore moderno e un minimo di 4GB di RAM”.
  • Installazione: Node.js 24 o successivo e uv, poi npx @openhands/agent-canvas --public. Un solo comando avvia l'agent server, il backend di automazione e la web app dietro un ingress su 127.0.0.1:8000.
  • Imposti LOCAL_BACKEND_API_KEY prima del primo avvio: in modalità pubblica ogni chiamata API deve includerla e la web app la chiede prima di ogni altra cosa. Prima blocchi con il firewall tutto tranne SSH; la guida dice di farlo prima ancora che l'agente venga eseguito.
  • Una chiave API di un provider di modelli: la documentazione dice che OpenHands ne ha bisogno per la maggior parte dei modelli. Docker è facoltativo e serve solo se vuole che ogni conversazione sia isolata nel proprio container. Nessuna GPU, a meno che non ospiti il modello in proprio.

Dimensioni (il valore del progetto, poi il nostro)

Dimensionamento per carico di lavoro
Carico di lavorovCPURAM
Un utente, modelli in hosting, agente sull'host (ufficiale)Il valore indicato dalla guida. L'agent server gira direttamente sulla macchina, quindi la macchina è il sandbox.24 GB
Uno o due utenti, un sandbox Docker per conversazioneIl nostro. Ogni conversazione ha un container; installazioni delle dipendenze, build e suite di test girano al suo interno.48 GB
Server degli agenti condiviso da un team, più agenti in contemporaneaIl nostro. Agenti in parallelo su repository in parallelo, ognuno dei quali compila qualcosa.824 GB

I piani adatti

5 macchine, con prezzi in tempo reale

Prima la macchina adatta più economica. Prezzi odierni, al mese, letti dal catalogo.

  • BD-8$12.90/mese

    4 vCPU · 8 GB · 100 GB di disco · 32 TB

    Il più economico con spazio per compilare e testare. 4 vCPU, 8 GB, 100 GB e 32 TB di traffico, per meno delle macchine da 4 GB presenti altrove. Il doppio del valore della guida; le suite di test sentono la differenza dei core.

  • U2-4-40$14.90/mese

    2 vCPU · 4 GB · 40 GB di disco · Unmetered

    Esattamente il valore della guida, traffico non misurato, Istanbul. 2 vCPU / 4 GB / 40 GB. Un utente, modelli in hosting, l'agente sull'host. Traffico non misurato per clonazioni e installazioni di pacchetti.

  • BD-24$31.90/mese

    8 vCPU · 24 GB · 300 GB di disco · 32 TB

    8 vCPU / 24 GB per il server degli agenti di un team. Più agenti in contemporanea, sandbox Docker, il backend di automazione programmato.

  • C2-4-80$37.90/mese

    2 vCPU · 4 GB · 80 GB di disco · 3 TB

    Il valore della guida, in decine di città. 2 vCPU / 4 GB / 80 GB. Lo scelga per la città; una conversazione alla volta.

  • C4-8-160$75.90/mese

    4 vCPU · 8 GB · 160 GB di disco · 3 TB

    4 vCPU / 8 GB / 160 GB, in decine di città. La dimensione comoda, con disco per molti checkout e immagini Docker.

Non esiste ancora un preset di avvio per OpenHands: l'installazione consiste nei cinque passaggi qui sotto, digitati da Lei, nell'ordine indicato dalla guida del progetto. Prima il firewall, poi la chiave, poi l'agente.

L'installazione

Cinque passaggi, nell'ordine indicato dalla guida di OpenHands

La guida è esplicita: il firewall viene prima del primo avvio, perché l'agent server ha libero accesso alla macchina e solo il firewall e la chiave lo separano da un estraneo.

  1. Prima il firewall. ufw allow OpenSSH && ufw --force enable Nulla in entrata tranne SSH. L'ingress (8000), l'agent server (18000), il backend di automazione (18001) e il server statico (3001) non devono essere raggiungibili dall'esterno; la guida lo dice testualmente.
  2. Node.js 24 e uv. apt-get install -y curl git curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs curl -LsSf https://astral.sh/uv/install.sh | sh uv esegue l'agent server; la guida lo installa con l'installer di una riga da astral.sh.
  3. Generi la chiave e avvii in modalità pubblica. export LOCAL_BACKEND_API_KEY=$(openssl rand -base64 32); echo $LOCAL_BACKEND_API_KEY npx @openhands/agent-canvas --public Copi la chiave in un posto sicuro prima di proseguire; modalità pubblica significa che la web app gliela chiederà. Per un'esecuzione a lungo termine, la unit systemd della guida in /etc/systemd/system/agent-canvas.service con Environment=LOCAL_BACKEND_API_KEY=… al suo interno, poi systemctl enable --now agent-canvas.
  4. Lo raggiunga via SSH e aggiunga il modello. ssh -N -L 8000:127.0.0.1:8000 root@your-server poi http://127.0.0.1:8000, incolli la chiave, poi Settings: scelga il provider LLM e il modello e incolli la chiave API di quel provider. Avvii una conversazione su un repository.
  5. Facoltativamente, un dominio. Punti un record A al server, apra le porte 80 e 443, apt-get install -y nginx certbot python3-certbot-nginx, e usi il blocco nginx della guida che fa da proxy verso 127.0.0.1:8000 con gli header WebSocket; certbot --nginx -d canvas.example.com --redirect ottiene il certificato. Se la porta 443 deve essere aperta a tutti, la guida dice che la chiave è la Sua difesa principale, quindi la mantenga lunga e segreta.

Onestamente

Cosa acquisteremmo davvero

La guida dice che 2 vCPU e 4 GB sono più che sufficienti per un utente. Compri la macchina da 8 GB che costa meno di quelle da 4 GB e lasci che l'agente compili.

Per l'agente di programmazione di una persona

BD-8 · $12.90/mese

4 vCPU, 8 GB e 100 GB a $12.90: il server dell'agente, alcuni repository clonati, i relativi alberi di dipendenze e una suite di test in esecuzione mentre guardi, con memoria residua se attivi i sandbox Docker. Il modello è altrove, dietro una chiave API, quindi questa macchina non ha mai bisogno di una GPU e la spesa che conta è quella del provider. C2-4-80 a $37.90 corrisponde esattamente alla cifra della guida in decine di città, se la città conta più dei core.

Domande

Le domande che si pongono prima dell'acquisto.

Quanta RAM richiede OpenHands?
La guida per VM del progetto dice che 2 vCPU e 4 GB di RAM sono più che sufficienti per un singolo utente, e la documentazione consiglia un processore moderno e un minimo di 4 GB. Questo copre l'agent server, il backend di automazione e la web app con modelli in hosting. Ciò che l'agente fa poi, clonare repository, installare dipendenze, eseguire build e test, è normale lavoro da sviluppatore e richiede normali risorse da sviluppatore, ed è per questo che la macchina più economica di questa pagina ha 4 core e 8 GB anziché il minimo esatto.
Perché eseguirlo su un server invece che sul mio portatile?
Due motivi, dal README stesso. Dice che il modo più potente per eseguire OpenHands è su un server nel cloud, così gli agenti continuano a lavorare quando il portatile è chiuso e possono essere avviati da Slack, GitHub o un webhook. E avverte che l'agent server gira direttamente sulla macchina con pieno accesso a filesystem, shell e rete. Una macchina che contiene solo l'agente e i repository su cui lavora è il modo onesto di concedergli questo accesso.
Serve una chiave API o può usare un modello locale?
La documentazione dice che OpenHands richiede una chiave API per accedere alla maggior parte dei modelli linguistici ed elenca i provider in hosting che consiglia. Un modello locale tramite Ollama o un server simile è supportato, ma la documentazione aggiunge che un lavoro efficace dell'agente con modelli locali richiede hardware adeguato e modelli ottimizzati per seguire le istruzioni. In pratica: un modello in hosting e una chiave API su questa macchina e, se vuole un modello locale, un server di modelli separato, dimensionato secondo la pagina Ollama o la linea GPU.
Cosa fanno --public e LOCAL_BACKEND_API_KEY?
Senza --public, l'app inserisce la propria chiave di sessione nella pagina web per comodità, cosa che il README definisce non sicura per un'installazione raggiungibile pubblicamente. Con --public, la chiave non è nella pagina: chiunque apra l'app web deve prima incollare LOCAL_BACKEND_API_KEY, e ogni chiamata all'API deve includerla. L'ordine della guida è firewall, poi chiave, poi avvio, e la chiave viene generata con openssl rand -base64 32.
Mi serve Docker?
Non per l'installazione predefinita, che esegue l'agent server sull'host con Node 24 e uv. Docker serve per le modalità isolate: eseguire l'intero stack dall'immagine del progetto, oppure dare a ogni conversazione il proprio container, così più agenti possono lavorare in contemporanea senza condividere un filesystem. Il README precisa che il sandbox isola l'esecuzione delle conversazioni, non l'intera app. Se lo desidera, installi Docker e preveda la riga da 8 GB o superiore.
Quali porte sono coinvolte?
Tutto è in ascolto sul loopback: il proxy di ingress su 127.0.0.1:8000 instrada verso il server statico sulla 3001, l'agent server sulla 18000 e il backend di automazione sulla 18001. La 8000 la raggiunge tramite un tunnel SSH, oppure tramite nginx sulla 443 se aggiunge un dominio. Nessuna di queste quattro porte deve essere aperta sul firewall; la guida le elenca per numero come quelle che non devono essere raggiungibili dall'esterno.