Eseguire Claude Code su un VPS: installazione, sicurezza e sessioni persistenti
Configura Claude Code su un server Linux remoto con autenticazione headless, persistenza delle sessioni tramite tmux e hardening della sicurezza. Ogni comando verificato.
Eseguire Claude Code su un VPS
Claude Code è un agente di codifica basato su terminale. Legge il tuo codice sorgente, modifica file, esegue comandi e costruisce funzionalità a partire da descrizioni in linguaggio naturale. Eseguirlo su un VPS ti offre un agente di codifica persistente attivo 24/7, accessibile da qualsiasi dispositivo tramite SSH.
Questa guida ti porta da un VPS Ubuntu nuovo a un'installazione funzionante di Claude Code con persistenza delle sessioni. Ogni passaggio include un comando di verifica per confermare il successo dell'operazione.
Di cosa ha bisogno Claude Code da un VPS?
Claude Code invia i tuoi prompt ai server di Anthropic per l'inferenza. Il tuo VPS conserva solo i file del progetto, gli strumenti di sviluppo e il processo Claude Code stesso. Non servono GPU o hardware di fascia alta.
| Requisito | Minimo | Consigliato |
|---|---|---|
| OS | Ubuntu 20.04 LTS | Ubuntu 24.04 LTS |
| RAM | 4 GB | 8 GB |
| Disco | 20 GB SSD | 40 GB NVMe |
| CPU | 2 vCPU | 4 vCPU |
| Rete | Internet stabile | Connessione a bassa latenza |
| Dipendenze | Nessuna (installer nativo) | git, ripgrep (inclusi) |
L'installer nativo include ripgrep e non richiede dipendenze runtime come Node.js. Un VPS da 4 GB gestisce Claude Code e un progetto di medie dimensioni. Se lavori con monorepo di grandi dimensioni o esegui servizi aggiuntivi, scegli 8 GB.
Requisito account: Claude Code richiede un account Claude Pro, Max, Teams, Enterprise o Console. Il piano gratuito Claude.ai non include l'accesso a Claude Code.
Come proteggere un VPS prima di installare Claude Code?
Blinda il tuo server prima di installare qualsiasi cosa. Un VPS viene colpito da attacchi brute-force automatizzati entro pochi minuti dalla messa online. Questi passaggi creano un utente non root, impongono l'autenticazione con chiave SSH, configurano un firewall e attivano gli aggiornamenti di sicurezza automatici.
Se hai già un server protetto, passa direttamente a Come installare Claude Code su un server Linux?. Per una guida più dettagliata su ogni passaggio di sicurezza, consulta .
Creare un utente non root
Collegati via SSH al server come root, poi crea un utente con privilegi sudo:
ssh root@YOUR_SERVER_IP
adduser claude
usermod -aG sudo claude
Copia la tua chiave SSH al nuovo utente per accedere senza password:
mkdir -p /home/claude/.ssh
cp /root/.ssh/authorized_keys /home/claude/.ssh/authorized_keys
chown -R claude:claude /home/claude/.ssh
chmod 700 /home/claude/.ssh
chmod 600 /home/claude/.ssh/authorized_keys
Verifica di poter accedere come nuovo utente da un secondo terminale prima di proseguire. Non chiudere la sessione root:
ssh claude@YOUR_SERVER_IP
Dovresti ottenere un prompt shell come claude@yourserver. Se funziona, prosegui.
Disattivare l'autenticazione con password
Modifica la configurazione SSH per bloccare gli accessi con password:
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
Riavvia SSH e verifica che le impostazioni siano state applicate:
sudo systemctl restart ssh
sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'
Output previsto (l'ordine può variare):
permitrootlogin no
passwordauthentication no
Configurare il firewall
UFW (Uncomplicated Firewall) blocca tutto il traffico in entrata tranne quello autorizzato. Su alcune immagini VPS minimali, potrebbe essere necessario installarlo prima con sudo apt install -y ufw.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
Verifica le regole:
sudo ufw status
Output previsto:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Installare fail2ban
fail2ban blocca gli indirizzi IP dopo ripetuti tentativi di accesso SSH falliti:
sudo apt update && sudo apt install -y fail2ban
Crea una configurazione locale per preservare le impostazioni dopo gli aggiornamenti del pacchetto:
sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 5
bantime = 3600
findtime = 600
EOF
Attiva e verifica:
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban
Occhio all'output: deve mostrare active (running). Il flag enable --now avvia fail2ban subito e lo fa sopravvivere ai riavvii.
sudo fail2ban-client status sshd
Questo mostra che la jail è attiva con 0 IP attualmente bloccati (previsto su un'installazione nuova).
Attivare gli aggiornamenti di sicurezza automatici
Unattended-upgrades corregge le vulnerabilità di sicurezza senza intervento manuale:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Seleziona "Yes" quando richiesto. Verifica che sia attivo:
sudo systemctl status unattended-upgrades
L'output deve mostrare active (running).
Come installare Claude Code su un server Linux?
L'installer nativo è il metodo consigliato. Non richiede dipendenze, si aggiorna automaticamente in background e funziona su qualsiasi distribuzione Linux supportata. Il metodo di installazione tramite npm è deprecato.
Esegui l'installer come utente non root (non root):
curl -fsSL https://claude.ai/install.sh | bash
Questo è l'installer ufficiale di Anthropic. Se preferisci verificare prima dell'esecuzione, consulta la documentazione di installazione per i checksum SHA256 e i dettagli sulla firma del codice.
L'installer posiziona il binario in ~/.local/bin/claude e lo aggiunge al PATH. Apri una nuova shell o ricarica il profilo:
source ~/.bashrc
Verifica l'installazione:
claude --version
Dovresti vedere un numero di versione come 2.x.x. Esegui la diagnostica integrata per verificare la configurazione:
claude doctor
Questo controlla la configurazione di sistema, la connettività di rete e lo stato dell'autenticazione. A questo punto, l'autenticazione risulterà incompleta. È normale.
Come autenticare Claude Code su un VPS headless?
Claude Code normalmente apre una finestra del browser per il login OAuth. Su un server headless senza interfaccia grafica, serve un approccio diverso. Hai due opzioni in base al tipo di account.
Opzione A: chiave API da Claude Console
Se hai un account Claude Console (fatturazione basata su API), imposta la variabile d'ambiente ANTHROPIC_API_KEY. È il metodo più semplice per server headless.
Genera una chiave API su console.anthropic.com. Poi conservala in modo sicuro sul VPS:
sudo mkdir -p /etc/claude-code
sudo tee /etc/claude-code/env > /dev/null << 'EOF'
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
EOF
sudo chmod 600 /etc/claude-code/env
sudo chown claude:claude /etc/claude-code/env
Cosa fa: crea un file dedicato con permessi ristretti (solo il tuo utente può leggerlo) invece di inserire segreti nel .bashrc dove compaiono nella cronologia della shell e sono leggibili da altri processi.
Caricalo nel profilo shell. Aggiungi questa riga a ~/.bashrc:
echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc
Verifica che la chiave sia caricata:
echo $ANTHROPIC_API_KEY | head -c 15
Dovresti vedere sk-ant-api03-xx (i primi 15 caratteri della chiave).
Opzione B: token OAuth da un abbonamento Claude
Se usi un abbonamento Claude Pro o Max (non Console), genera un token OAuth su una macchina con browser, poi trasferiscilo sul VPS.
Sulla tua macchina locale (quella con il browser):
claude setup-token
Si apre un browser per l'autenticazione OAuth e viene generato un token a lunga durata che inizia con sk-ant-oat01-. Il token è valido per un anno.
Copia il token. Poi sul tuo VPS, conservalo allo stesso modo:
sudo tee /etc/claude-code/env > /dev/null << 'EOF'
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-your-token-here
EOF
sudo chmod 600 /etc/claude-code/env
sudo chown claude:claude /etc/claude-code/env
Devi anche creare ~/.claude.json per saltare la procedura guidata:
cat > ~/.claude.json << 'EOF'
{
"hasCompletedOnboarding": true
}
EOF
chmod 600 ~/.claude.json
Caricalo nel profilo shell:
echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc
Verificare l'autenticazione
Testa che Claude Code possa raggiungere i server di Anthropic:
claude -p "Say hello in exactly 5 words"
Il flag -p esegue un singolo prompt senza entrare in modalità interattiva. Se vedi un saluto di cinque parole, l'autenticazione funziona. Se ricevi un errore di autenticazione, verifica che la variabile d'ambiente sia impostata correttamente con env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'.
Come mantenere Claude Code attivo dopo la disconnessione SSH?
Usa tmux. Crea sessioni terminale che persistono sul server indipendentemente dalla connessione SSH. Chiudi il laptop, prendi un aereo per un altro paese, riconnettiti via SSH dal telefono. La sessione è ancora lì, esattamente dove l'hai lasciata.
Installare tmux
sudo apt install -y tmux
Verifica:
tmux -V
Configurare tmux per Claude Code
Crea un .tmux.conf con impostazioni ottimizzate per sessioni di codifica prolungate:
cat > ~/.tmux.conf << 'EOF'
# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000
# Enable mouse support for scrolling and pane selection
set -g mouse on
# Start window numbering at 1
set -g base-index 1
# Reduce escape time for faster key response
set -sg escape-time 10
# Status bar with session name and time
set -g status-right '%H:%M %d-%b'
# Keep sessions alive if the shell exits unexpectedly
set -g remain-on-exit on
EOF
Avviare una sessione Claude Code
Crea una sessione tmux con nome e avvia Claude Code al suo interno:
tmux new -s claude
Ora sei dentro una sessione tmux chiamata "claude". Avvia Claude Code:
cd ~/your-project
claude
Claude Code è in esecuzione. Per staccarti dalla sessione (lasciarla in esecuzione in background), premi:
Ctrl+B, poi D
Sei tornato al prompt SSH normale. Claude Code continua a girare dentro tmux.
Riferimento rapido tmux
| Azione | Comando |
|---|---|
| Creare sessione con nome | tmux new -s claude |
| Staccarsi dalla sessione | Ctrl+B, poi D |
| Elencare le sessioni | tmux ls |
| Ricollegarsi a una sessione | tmux attach -t claude |
| Eliminare una sessione | tmux kill-session -t claude |
| Scorrere verso l'alto | Ctrl+B, poi [, poi frecce |
| Uscire dalla modalità scorrimento | q |
Come ricollegarsi a una sessione Claude Code da un altro dispositivo?
Collegati via SSH al VPS da qualsiasi dispositivo e ricollegati:
ssh claude@YOUR_SERVER_IP
tmux attach -t claude
La sessione Claude Code è esattamente dove l'hai lasciata. La cronologia della conversazione, il contesto dei file e le attività in corso sono preservati. Funziona da un laptop, telefono (con un'app SSH come Termius) o un altro server.
Se la sessione è andata in crash o è stata terminata, tmux attach fallirà. Avviane una nuova:
tmux ls
Se non ci sono sessioni elencate, creane una nuova con tmux new -s claude.
Come limitare cosa può fare Claude Code sul server?
Claude Code ha un sistema di permessi che controlla quali strumenti può utilizzare. Di default, chiede conferma prima di eseguire comandi bash o modificare file. Puoi pre-approvare comandi sicuri e bloccare quelli pericolosi tramite .claude/settings.json nella directory del progetto.
Non usare mai --dangerously-skip-permissions su un server reale. Bypassa tutte le protezioni e permette a Claude Code di eseguire qualsiasi comando senza chiedere.
Configurare una whitelist dei permessi
Crea un file di configurazione a livello di progetto:
cd ~/your-project
mkdir -p .claude
cat > .claude/settings.json << 'EOF'
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npm test *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(ls *)",
"Bash(cat *)",
"Read",
"Bash(grep *)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Bash(chmod 777 *)",
"Bash(curl * | bash)",
"Read(./.env)",
"Read(./.env.*)"
]
}
}
EOF
Cosa fa: l'array allow permette a Claude Code di eseguire quei comandi senza chiedere ogni volta. L'array deny blocca completamente i comandi pericolosi. Le regole seguono una precedenza deny-first: se un comando corrisponde sia ad allow che a deny, il deny prevale.
Verifica che il file sia stato creato con i permessi corretti:
ls -la .claude/settings.json
Il file deve essere leggibile dal tuo utente. Dato che questo file viene committato in git, si applica a chiunque cloni il progetto. Per override personali, usa .claude/settings.local.json (automaticamente ignorato da git).
Come monitorare le risorse del VPS?
Claude Code su un VPS da 4 GB usa tra 200 e 400 MB di RAM durante il funzionamento normale. Progetti grandi o attività concorrenti multiple aumentano il consumo. Configurare lo spazio di swap previene i kill per esaurimento memoria.
Aggiungere spazio di swap
Verifica se lo swap esiste già:
sudo swapon --show
Se l'output è vuoto, crea un file swap da 2 GB:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Rendilo persistente al riavvio aggiungendolo a /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Verifica:
free -h
Dovresti vedere lo spazio di swap elencato. Occhio: cerca la riga Swap: che mostra 2.0Gi totali.
Controllare l'utilizzo delle risorse
Monitora memoria e CPU mentre Claude Code è in esecuzione:
htop
Se htop non è installato: sudo apt install -y htop. Osserva la barra della memoria. Claude Code dovrebbe mantenersi intorno ai 200-400 MB. Se raggiunge costantemente l'80%+ della RAM totale, considera un upgrade del VPS o la chiusura di altri servizi.
Controlla l'utilizzo del disco:
df -h /
Claude Code di per sé usa poco disco. I file del progetto e la cronologia git sono i principali consumatori.
Quanto costa eseguire Claude Code su un VPS?
Claude Code funziona con il tuo abbonamento Claude esistente senza costi aggiuntivi. Il costo mensile totale è il VPS più il piano Claude.
| Tier VPS | Costo mensile | Piano Claude | Costo piano | Totale |
|---|---|---|---|---|
| 2 vCPU, 4 GB RAM | ~$5-10 | Pro | $20/mese | $25-30/mese |
| 4 vCPU, 8 GB RAM | ~$10-20 | Max | $100/mese | $110-120/mese |
| 4 vCPU, 8 GB RAM | ~$10-20 | Console (API) | A consumo per token | $10-20 + utilizzo |
Il piano Pro include un uso limitato di Claude Code. Il piano Max ha limiti di frequenza più alti per un uso intensivo. La fatturazione Console (API) è per token e si adatta ai team che necessitano di un controllo granulare dei costi.
Per un agente di codifica persistente che gira 24 ore su 24, il VPS da 4 GB + piano Pro a circa $25/mese è il punto di partenza.
Qualcosa è andato storto?
Claude Code non si autentica
Verifica che la variabile d'ambiente sia impostata:
env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'
Se è vuota, ricarica il profilo: source ~/.bashrc. Se la variabile è impostata ma l'autenticazione fallisce, verifica che la chiave sia valida. I token OAuth scadono dopo un anno. Le chiavi API possono essere revocate dalla Console.
La sessione tmux è scomparsa
Le sessioni tmux si perdono quando il server si riavvia. Dopo un riavvio, avvia una nuova sessione:
tmux new -s claude
Per verificare se il server si è riavviato di recente:
uptime
Claude Code è lento o non risponde
Controlla la memoria disponibile:
free -h
Se la RAM è quasi piena e lo swap è molto utilizzato, Claude Code rallenterà. Termina i processi non utilizzati o aggiorna il VPS. Controlla anche la latenza di rete verso i server Anthropic:
curl -o /dev/null -s -w '%{time_total}\n' https://api.anthropic.com
Valori sotto 1 secondo sono normali. Valori più alti indicano problemi di rete tra il tuo VPS e Anthropic.
Errori di permesso negato
Se Claude Code non riesce a leggere o scrivere file, controlla la proprietà:
ls -la ~/your-project
I file devono appartenere al tuo utente (claude:claude se hai seguito questa guida). Correggi la proprietà:
sudo chown -R claude:claude ~/your-project
Controlla i log per maggiori dettagli:
journalctl -u ssh -f
Questo mostra i log SSH in tempo reale. Utile per il debug dei problemi di connessione.
Copyright 2026 Virtua.Cloud. Tutti i diritti riservati. Questo contenuto è un'opera originale del team Virtua.Cloud. La riproduzione, ripubblicazione o redistribuzione senza autorizzazione scritta è vietata.
Pronto a provare?
Distribuisci il tuo server in pochi secondi. Linux, Windows o FreeBSD.
Vedi piani VPS