Claude Code op een VPS draaien: installeren, beveiligen en sessies bewaren

10 min leestijd·Matthieu|

Stel Claude Code in op een remote Linux-server met headless-authenticatie, tmux-sessiepersistentie en beveiligingshardening. Elk commando geverifieerd.

Claude Code op een VPS draaien

Claude Code is een terminalgebaseerde AI-codeeragent. Het leest je codebase, bewerkt bestanden, voert commando's uit en bouwt features op basis van beschrijvingen in natuurlijke taal. Op een VPS draaien geeft je een persistente codeeragent die 24/7 draait, bereikbaar vanaf elk apparaat via SSH.

Deze handleiding brengt je van een nieuwe Ubuntu VPS naar een werkende Claude Code-installatie met sessiepersistentie. Elke stap bevat een verificatiecommando zodat je weet dat het gelukt is.

Wat heeft Claude Code nodig van een VPS?

Claude Code stuurt je prompts naar de servers van Anthropic voor inferentie. Je VPS bewaart alleen projectbestanden, ontwikkeltools en het Claude Code-proces zelf. Je hebt dus geen GPU of high-end hardware nodig.

Vereiste Minimum Aanbevolen
OS Ubuntu 20.04 LTS Ubuntu 24.04 LTS
RAM 4 GB 8 GB
Schijf 20 GB SSD 40 GB NVMe
CPU 2 vCPU's 4 vCPU's
Netwerk Stabiel internet Verbinding met lage latentie
Afhankelijkheden Geen (native installer) git, ripgrep (meegeleverd)

De native installer bevat ripgrep en vereist geen runtime-afhankelijkheden zoals Node.js. Een 4 GB VPS verwerkt Claude Code en een middelgroot project. Als je met grote monorepo's werkt of extra services draait, kies dan 8 GB.

Accountvereiste: Claude Code vereist een Claude Pro-, Max-, Teams-, Enterprise- of Console-account. Het gratis Claude.ai-plan bevat geen toegang tot Claude Code.

Hoe beveilig je een VPS voordat je Claude Code installeert?

Vergrendel je server voordat je iets installeert. Een VPS wordt binnen minuten na activering geraakt door geautomatiseerde brute-force-aanvallen. Deze stappen maken een non-root-gebruiker aan, dwingen SSH-sleutelauthenticatie af, stellen een firewall in en activeren automatische beveiligingsupdates.

Als je al een geharde server hebt, ga dan naar Hoe installeer je Claude Code op een Linux-server?. Voor een uitgebreidere uitleg van elke beveiligingsstap, zie .

Een non-root-gebruiker aanmaken

Maak via SSH verbinding met je server als root en maak vervolgens een gebruiker aan met sudo-rechten:

ssh root@YOUR_SERVER_IP
adduser claude
usermod -aG sudo claude

Kopieer je SSH-sleutel naar de nieuwe gebruiker zodat je zonder wachtwoord kunt inloggen:

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

Controleer of je als de nieuwe gebruiker kunt inloggen vanuit een tweede terminal voordat je verdergaat. Sluit je root-sessie nog niet:

ssh claude@YOUR_SERVER_IP

Je zou een shellprompt moeten krijgen als claude@yourserver. Als dit werkt, ga verder.

Wachtwoordauthenticatie uitschakelen

Bewerk de SSH-configuratie om wachtwoordgebaseerde aanmeldingen te blokkeren:

sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

Herstart SSH en controleer of de instellingen van kracht zijn:

sudo systemctl restart ssh
sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'

Verwachte output (volgorde kan variëren):

permitrootlogin no
passwordauthentication no

De firewall instellen

UFW (Uncomplicated Firewall) blokkeert al het inkomende verkeer behalve wat je toestaat. Op sommige minimale VPS-images moet je het eerst installeren met sudo apt install -y ufw.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable

Controleer de regels:

sudo ufw status

Verwachte output:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

fail2ban installeren

fail2ban blokkeert IP-adressen na herhaalde mislukte SSH-aanmeldpogingen:

sudo apt update && sudo apt install -y fail2ban

Maak een lokale configuratie zodat je instellingen pakketupdates overleven:

sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 5
bantime = 3600
findtime = 600
EOF

Activeer en controleer:

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Let goed op: de output moet active (running) tonen. De enable --now-vlag start fail2ban direct en zorgt dat het herstarts overleeft.

sudo fail2ban-client status sshd

Dit toont dat de jail actief is met 0 momenteel geblokkeerde IP's (verwacht bij een nieuwe installatie).

Automatische beveiligingsupdates activeren

Unattended-upgrades patcht beveiligingsproblemen zonder handmatige interventie:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Selecteer "Yes" wanneer gevraagd. Controleer of het actief is:

sudo systemctl status unattended-upgrades

De output moet active (running) tonen.

Hoe installeer je Claude Code op een Linux-server?

De native installer is de aanbevolen methode. Het vereist geen afhankelijkheden, werkt automatisch bij op de achtergrond en draait op elke ondersteunde Linux-distributie. De npm-installatiemethode is verouderd.

Voer de installer uit als je non-root-gebruiker (niet als root):

curl -fsSL https://claude.ai/install.sh | bash

Dit is de officiële Anthropic-installer. Als je liever eerst verifieert, bekijk dan de installatiedocumentatie voor SHA256-checksums en code signing-details.

De installer plaatst het binaire bestand in ~/.local/bin/claude en voegt het toe aan je PATH. Open een nieuwe shell of herlaad je profiel:

source ~/.bashrc

Controleer de installatie:

claude --version

Je zou een versienummer moeten zien zoals 2.x.x. Voer de ingebouwde diagnostiek uit om je setup te controleren:

claude doctor

Dit controleert je systeemconfiguratie, netwerkverbinding en authenticatiestatus. Op dit punt wordt authenticatie als incompleet weergegeven. Dat is normaal.

Hoe authenticeer je Claude Code op een headless VPS?

Claude Code opent normaal een browservenster voor OAuth-aanmelding. Op een headless server zonder GUI heb je een andere aanpak nodig. Je hebt twee opties afhankelijk van je accounttype.

Optie A: API-sleutel vanuit Claude Console

Als je een Claude Console-account hebt (API-gebaseerde facturering), stel dan de ANTHROPIC_API_KEY-omgevingsvariabele in. Dit is de eenvoudigste methode voor headless servers.

Genereer een API-sleutel op console.anthropic.com. Sla deze vervolgens veilig op op je 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

Wat dit doet: maakt een apart bestand aan met beperkte rechten (alleen jouw gebruiker kan het lezen) in plaats van geheimen in .bashrc te zetten waar ze in de shellgeschiedenis verschijnen en door andere processen gelezen kunnen worden.

Laad het in je shellprofiel. Voeg deze regel toe aan ~/.bashrc:

echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc

Controleer of de sleutel geladen is:

echo $ANTHROPIC_API_KEY | head -c 15

Je zou sk-ant-api03-xx moeten zien (de eerste 15 tekens van je sleutel).

Optie B: OAuth-token vanuit een Claude-abonnement

Als je een Claude Pro- of Max-abonnement gebruikt (niet Console), genereer dan een OAuth-token op een machine met een browser en breng het over naar de VPS.

Op je lokale machine (die met een browser):

claude setup-token

Dit opent een browser voor OAuth-authenticatie en geeft een langlevend token uit dat begint met sk-ant-oat01-. Het token is een jaar geldig.

Kopieer het token. Sla het vervolgens op je VPS op dezelfde manier op:

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

Je moet ook ~/.claude.json aanmaken om de installatiewizard over te slaan:

cat > ~/.claude.json << 'EOF'
{
  "hasCompletedOnboarding": true
}
EOF
chmod 600 ~/.claude.json

Laad het in je shellprofiel:

echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc

Authenticatie verifiëren

Test of Claude Code de Anthropic-servers kan bereiken:

claude -p "Say hello in exactly 5 words"

De -p-vlag voert een enkel prompt uit zonder de interactieve modus te starten. Als je een begroeting van vijf woorden ziet, werkt de authenticatie. Als je een authenticatiefout krijgt, controleer dan of je omgevingsvariabele correct is ingesteld met env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'.

Hoe houd je Claude Code draaiende na SSH-disconnectie?

Gebruik tmux. Het maakt terminalsessies die op de server blijven bestaan onafhankelijk van je SSH-verbinding. Klap je laptop dicht, vlieg naar een ander land, SSH terug vanaf je telefoon. De sessie is er nog, precies waar je hem achterliet.

tmux installeren

sudo apt install -y tmux

Verificatie:

tmux -V

tmux configureren voor Claude Code

Maak een .tmux.conf met instellingen geoptimaliseerd voor lange codeersessies:

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

Een Claude Code-sessie starten

Maak een benoemde tmux-sessie aan en start Claude Code erin:

tmux new -s claude

Je zit nu in een tmux-sessie genaamd "claude". Start Claude Code:

cd ~/your-project
claude

Claude Code draait. Om los te koppelen van de sessie (hem op de achtergrond laten draaien), druk op:

Ctrl+B, dan D

Je bent terug bij je normale SSH-prompt. Claude Code blijft draaien in tmux.

tmux snelreferentie

Actie Commando
Benoemde sessie aanmaken tmux new -s claude
Loskoppelen van sessie Ctrl+B, dan D
Sessies weergeven tmux ls
Opnieuw verbinden met sessie tmux attach -t claude
Sessie beëindigen tmux kill-session -t claude
Omhoog scrollen Ctrl+B, dan [, dan pijltoetsen
Scrollmodus verlaten q

Hoe verbind je opnieuw met een Claude Code-sessie vanaf een ander apparaat?

Maak via SSH verbinding met je VPS vanaf elk apparaat en verbind opnieuw:

ssh claude@YOUR_SERVER_IP
tmux attach -t claude

Je Claude Code-sessie is precies waar je hem achterliet. De gespreksgeschiedenis, bestandscontext en lopende taken zijn bewaard. Dit werkt vanaf een laptop, telefoon (met een SSH-app zoals Termius) of een andere server.

Als de sessie is gecrasht of beëindigd, zal tmux attach falen. Start een nieuwe:

tmux ls

Als er geen sessies worden weergegeven, maak een nieuwe aan met tmux new -s claude.

Hoe beperk je wat Claude Code op je server kan doen?

Claude Code heeft een rechtensysteem dat bepaalt welke tools het mag gebruiken. Standaard vraagt het bevestiging voordat het bash-commando's uitvoert of bestanden bewerkt. Je kunt veilige commando's vooraf goedkeuren en gevaarlijke blokkeren via .claude/settings.json in je projectmap.

Gebruik nooit --dangerously-skip-permissions op een echte server. Het omzeilt alle beveiligingsprompts en laat Claude Code elk commando uitvoeren zonder te vragen.

Een rechten-allowlist instellen

Maak een projectniveau-instellingenbestand aan:

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

Wat dit doet: de allow-array laat Claude Code die commando's uitvoeren zonder elke keer te vragen. De deny-array blokkeert gevaarlijke commando's volledig. Regels volgen een deny-first-precedentie: als een commando overeenkomt met zowel allow als deny, wint deny.

Controleer of het bestand is aangemaakt met de juiste rechten:

ls -la .claude/settings.json

Het bestand moet leesbaar zijn voor je gebruiker. Omdat dit bestand in git wordt gecommit, geldt het voor iedereen die het project kloont. Voor persoonlijke overschrijvingen gebruik je .claude/settings.local.json (automatisch ge-gitignored).

Hoe monitor je de resources op je VPS?

Claude Code op een 4 GB VPS gebruikt tussen 200-400 MB RAM tijdens normaal gebruik. Grote projecten of meerdere gelijktijdige taken verhogen dit. Het instellen van swap-ruimte voorkomt out-of-memory-kills.

Swap-ruimte toevoegen

Controleer of swap al bestaat:

sudo swapon --show

Als de output leeg is, maak een 2 GB swap-bestand aan:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Maak het persistent na herstarts door het toe te voegen aan /etc/fstab:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Verificatie:

free -h

Je zou je swap-ruimte moeten zien. Let goed op: zoek de Swap:-rij met 2.0Gi totaal.

Resourcegebruik controleren

Monitor geheugen en CPU terwijl Claude Code draait:

htop

Als htop niet geïnstalleerd is: sudo apt install -y htop. Kijk naar de geheugenbalk. Claude Code zou rond de 200-400 MB moeten blijven. Als het consistent 80%+ van het totale RAM bereikt, overweeg dan een VPS-upgrade of sluit andere services.

Controleer schijfgebruik:

df -h /

Claude Code zelf gebruikt minimale schijfruimte. Je projectbestanden en git-geschiedenis zijn de grootste verbruikers.

Wat kost het om Claude Code op een VPS te draaien?

Claude Code draait op je bestaande Claude-abonnement zonder extra kosten. Je totale maandelijkse kosten zijn de VPS plus het Claude-plan.

VPS-tier Maandelijkse kosten Claude-plan Plankosten Totaal
2 vCPU, 4 GB RAM ~€5-10 Pro $20/maand ~€25-30/maand
4 vCPU, 8 GB RAM ~€10-20 Max $100/maand ~€110-120/maand
4 vCPU, 8 GB RAM ~€10-20 Console (API) Per token ~€10-20 + gebruik

Het Pro-plan bevat beperkt Claude Code-gebruik. Het Max-plan heeft hogere rate limits voor intensief gebruik. Console-facturering (API) is per token en past bij teams die gedetailleerde kostencontrole nodig hebben.

Voor een persistente codeeragent die continu draait, is de 4 GB VPS + Pro-plan voor ongeveer €25/maand het instappunt.

Gaat er iets mis?

Claude Code authenticeert niet

Controleer of je omgevingsvariabele is ingesteld:

env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'

Als het leeg is, herlaad je profiel: source ~/.bashrc. Als de variabele is ingesteld maar authenticatie faalt, controleer dan of de sleutel geldig is. OAuth-tokens verlopen na een jaar. API-sleutels kunnen worden ingetrokken vanuit de Console.

tmux-sessie verdwenen

tmux-sessies gaan verloren als de server herstart. Na een herstart, start een nieuwe sessie:

tmux new -s claude

Om te controleren of de server recent is herstart:

uptime

Claude Code is traag of reageert niet

Controleer het beschikbare geheugen:

free -h

Als het RAM bijna vol is en swap zwaar wordt gebruikt, wordt Claude Code trager. Beëindig ongebruikte processen of upgrade je VPS. Controleer ook je netwerklatentie naar de Anthropic-servers:

curl -o /dev/null -s -w '%{time_total}\n' https://api.anthropic.com

Alles onder 1 seconde is normaal. Hogere waarden wijzen op netwerkproblemen tussen je VPS en Anthropic.

Permission denied-fouten

Als Claude Code geen bestanden kan lezen of schrijven, controleer de eigenaarschap:

ls -la ~/your-project

Bestanden moeten eigendom zijn van je gebruiker (claude:claude als je deze handleiding hebt gevolgd). Eigenaarschap herstellen:

sudo chown -R claude:claude ~/your-project

Bekijk de logs voor meer details:

journalctl -u ssh -f

Dit toont SSH-gerelateerde logs in realtime. Handig voor het debuggen van verbindingsproblemen.

Copyright 2026 Virtua.Cloud. Alle rechten voorbehouden. Deze inhoud is een origineel werk van het Virtua.Cloud-team. Reproductie, herpublicatie of herdistributie zonder schriftelijke toestemming is verboden.

Klaar om het zelf te proberen?

Deploy uw eigen server in seconden. Linux, Windows of FreeBSD.

Bekijk VPS-aanbod