Laisser l'IA le Faire

J’avais besoin d’un serveur de developpement : VM avec acces SSH et outils de dev installes. J’ai decrit a Claude Code ce que je voulais et je l’ai laisse gerer la configuration.

Le Prompt

J’ai demande une VM Vultr avec 8 coeurs et 32 Go de RAM, accessible uniquement via Tailscale, avec des sessions persistantes qui survivent aux coupures reseau.

Ce que Claude Code a Construit

1. A provisionne la VM via l’API Vultr

Il a cree une instance 8 coeurs/32 Go Ubuntu, a attendu l’IP, puis s’est connecte en SSH en tant que root.

2. A renforce SSH

Port 49152                    # Port eleve aleatoire
PermitRootLogin no
PasswordAuthentication no
ListenAddress 100.x.x.x       # Interface Tailscale uniquement

Authentification par cle uniquement, ecoutant uniquement sur l’interface Tailscale.

3. A configure trois couches de pare-feu

4. A installe Tailscale avec SSH active

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

Cela cree un second chemin SSH via le serveur SSH integre de Tailscale, independant d’OpenSSH.

5. A installe la stack de developpement

Node.js (via nvm), Python (via pyenv), Docker et outils courants. A configure Docker pour fonctionner sans sudo.

6. A configure des sessions persistantes avec tmux

Un script de demarrage qui se reconnecte automatiquement a une session existante, pour que les coupures reseau ne tuent pas les processus en cours.

7. A cree des scripts de gestion locaux

Scripts dev-start et dev-stop sur mon laptop qui demarrent et arretent la VM via l’API Vultr.

Le Verrouillage

Apres avoir termine, Claude Code a verifie que la connexion root etait desactivee en essayant de se connecter en SSH en tant que root. La connexion a echoue. fail2ban a remarque les tentatives echouees et nous a bannis.

Claude Code avait configure SSH Tailscale comme chemin secondaire. Il a utilise tailscale ssh pour revenir et a execute :

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

Configuration

Vous aurez besoin de :

Stockez les cles API en tant que variables d’environnement et referencez-les par nom (par ex., $VULTR_API_KEY) pour que les secrets n’apparaissent pas dans la conversation.

Exemple de prompt :

Cree une VM a 8 coeurs sur Vultr, verrouille-la pour qu’elle soit accessible uniquement via Tailscale, configure Node/Python/Docker, et donne-moi des scripts pour la demarrer et l’arreter.