De AI het Laten Doen

Ik had een dev server nodig: VM met SSH-toegang en dev tools geinstalleerd. Ik beschreef aan Claude Code wat ik wilde en liet het de setup regelen.

De Prompt

Ik vroeg om een Vultr VM met 8 cores en 32GB RAM, alleen toegankelijk via Tailscale, met persistente sessies die netwerkonderbrekingen overleven.

Wat Claude Code Bouwde

1. Provisioneerde de VM via Vultr API

Het creeerde een 8-core/32GB Ubuntu instantie, wachtte op de IP, en SSH’de vervolgens in als root.

2. Versterkte SSH

Port 49152                    # Willekeurige hoge poort
PermitRootLogin no
PasswordAuthentication no
ListenAddress 100.x.x.x       # Alleen Tailscale interface

Alleen key-gebaseerde auth, luisterend op alleen de Tailscale interface.

3. Zette drie lagen firewall op

4. Installeerde Tailscale met SSH ingeschakeld

curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --ssh --authkey=$TAILSCALE_KEY

Dit creert een tweede SSH-pad via Tailscale’s ingebouwde SSH-server, onafhankelijk van OpenSSH.

5. Installeerde de dev stack

Node.js (via nvm), Python (via pyenv), Docker, en gangbare tools. Configureerde Docker om zonder sudo te draaien.

6. Zette persistente sessies op met tmux

Een opstartscript dat automatisch opnieuw verbindt met een bestaande sessie, zodat netwerkonderbrekingen draaiende processen niet doden.

7. Creeerde lokale beheerscripts

dev-start en dev-stop scripts op mijn laptop die de VM op- en afdraaien via de Vultr API.

De Uitsluiting

Na afloop verifieerde Claude Code dat root login was uitgeschakeld door te proberen in te loggen als root. De login mislukte. fail2ban merkte de mislukte pogingen op en verbande ons.

Claude Code had Tailscale SSH opgezet als secundair pad. Het gebruikte tailscale ssh om weer binnen te komen en voerde uit:

fail2ban-client set sshd unbanip 100.x.x.x

Setup

Je hebt nodig:

Bewaar API-sleutels als omgevingsvariabelen en refereer ze op naam (bijv., $VULTR_API_KEY) zodat secrets niet in het gesprek verschijnen.

Voorbeeld prompt:

Creeer een 8-core VM op Vultr, sluit het af zodat het alleen toegankelijk is via Tailscale, zet Node/Python/Docker op, en geef me scripts om het te starten en stoppen.