# C_ installation de Claude Code dans le VPS juxjux

# Installation de Claude Code dans le VPS juxjux

## Objectif

Pouvoir intervenir sur les containers du VPS (redémarrage, diagnostic, logs, fix rapide) depuis un mobile Android en mobilité, via SSH + tmux + Claude Code CLI directement installé sur le VPS.

## Prérequis constatés (2026-07-21)

- **Node.js** : v20.20.2 déjà présent sur le VPS (Debian) — aucune installation nécessaire
- **npm** : v10.8.2
- **tmux** : absent, installé via `sudo apt-get install -y tmux` (v3.3a-3)

## Installation de Claude Code CLI

Installation en **local user** (pas de `sudo npm install -g`) pour éviter de faire tourner le CLI en root et éviter les conflits de permissions npm globales :

```bash
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
npm install -g @anthropic-ai/claude-code
```

Ajout du PATH dans `~/.bashrc` :

```bash
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
```

Version installée : **2.1.197**

## Authentification

Choix retenu : **login OAuth avec le compte claude.ai (Julien, plan Claude Pro)** — pas de clé API Anthropic séparée, donc pas de facturation à l'usage additionnelle.

Procédure suivie (le VPS est headless, pas de navigateur local) :

1. Lancer `claude` dans une session **tmux** dédiée (`tmux new-session -d -s claude`) pour que la session survive à une déconnexion SSH
2. Choisir "Claude account with subscription" au login
3. Le CLI affiche une URL `https://claude.com/cai/oauth/authorize?...` — impossible à ouvrir depuis le VPS, donc récupérée via `tmux capture-pane` et ouverte manuellement sur un navigateur (PC ou mobile)
4. Après connexion sur claude.ai, un code `xxxx#yyyy` est retourné — collé dans le prompt `Paste code here if prompted >` via `tmux send-keys`
5. Confirmation : `Logged in as julien.bertrand@live.fr`

Les credentials sont persistés dans `~/.claude/.credentials.json` (permissions `600`, `debian:debian`) — la connexion reste valide pour les sessions futures, pas besoin de se ré-authentifier à chaque lancement.

## Usage depuis Android (Termux)

1. Installer **Termux** depuis F-Droid (pas le Play Store, version obsolète)
2. Se connecter en SSH au VPS :
   ```bash
   ssh debian@51.77.141.54
   ```
3. Rattacher ou créer la session tmux :
   ```bash
   tmux attach -t claude   # si la session existe déjà
   tmux new -s claude      # sinon
   ```
4. Lancer `claude` (ou il tourne déjà si la session persiste)
5. Détacher sans tuer la session : `Ctrl+b` puis `d` — permet de couper la connexion mobile sans interrompre Claude Code

## Sécurité

- Le VPS a déjà subi un incident de sécurité (CVE rclone RC, 2026-06-09 — voir page correspondante) : rester vigilant sur toute nouvelle surface d'exposition
- Claude Code tourne en utilisateur `debian` (non-root), scope de travail `/home/debian` accepté comme dossier de confiance
- Authentification liée au compte personnel Julien (Claude Pro) — pas de clé API partagée à protéger séparément
- Accès à la session Claude Code = accès SSH au VPS (mot de passe `debian`) — aucune surface réseau supplémentaire ouverte (pas de port exposé, tout passe par SSH existant)

## Répertoire de lancement recommandé

Le VPS a déjà en local le CLAUDE.md partagé, synchronisé via Syncthing :

```
~/Documents/Jux_univers/Claude-pcelio+jux/CLAUDE.md
```

C'est le même fichier que celui utilisé sur le PC Windows (`D:\Syncthing\Jux_univers\Claude-pcelio+jux\CLAUDE.md`) et sur Ubuntu. Il fait partie du dossier Syncthing `afltj-njyuy` ("Tablette VPS Syncthing"), local path `~/Documents`.

**Lancer `claude` depuis ce dossier plutôt que `/home/debian`** : le CLI charge automatiquement ce CLAUDE.md et récupère tout le contexte partagé (MCPs, infra, conventions) sans rien reconfigurer.

```bash
cd ~/Documents/Jux_univers/Claude-pcelio+jux/
claude
```

## Piège constaté — Syncthing VPS silencieusement déconnecté (2026-07-21)

En vérifiant le CLAUDE.md sur le VPS, le fichier était resté figé au **24 juin** alors que la version de référence (PC Windows) avait été mise à jour bien plus récemment (ex. section Inkscape du 21/07).

Diagnostic via le MCP Syncthing :
- `get_folder_status` sur le dossier `afltj-njyuy` renvoyait `state: idle`, `needBytes: 0`, `errors: 0` — en apparence tout va bien
- Mais `get_connections` / `get_devices` montrait `numConnections: 0` sur **tous** les appareils — le VPS n'avait **aucune connexion active** vers ses pairs, y compris PC-Elio+Jux

Autrement dit : Syncthing sur le VPS ne remonte aucune erreur quand il est déconnecté de tout le monde — il affiche juste l'état "idle" du dernier sync connu, ce qui peut faire croire à tort que tout est synchronisé.

**Résolution** : dès que Syncthing a été relancé côté PC Windows, la connexion TCP vers le VPS (device `I4M5WXU`) s'est rétablie en quelques secondes, et le CLAUDE.md s'est mis à jour immédiatement (nouveau hash, date du jour).

**Point de vigilance pour la suite** : si le CLAUDE.md sur le VPS semble périmé, ne pas se fier à `get_folder_status` seul (peut afficher "idle" à tort) — vérifier `get_connections` pour confirmer que le VPS a bien une connexion active vers au moins un appareil source avant de creuser plus loin.

## Points d'attention pour la suite

- Penser à `/init` pour générer un CLAUDE.md propre au contexte VPS si l'usage se confirme
- Vérifier que la session tmux ne meurt pas silencieusement (pas de `Restart=always` type systemd ici, contrairement aux services rclone)