---
tags: [note, SilverBullet]
type: "note"
nature: documentation
ressource: true
univers: PERSO
projects:
  - "[[03_PROJETS/VPS-IA]]"
date: "[[01_JOURNAL/2026/2026-10-14]]"
description: "CLI sb 2.10.0 → 2.12.1 : binaire racine non inscriptible, binaire local dédié à opencode."
---

# VPS — Mise à jour SilverBullet CLI (2.10.0 → 2.12.1)

## Contexte

Demande : mettre à jour le CLI SilverBullet (`sb`), version 2.10.0 installée
dans `/usr/local/bin/sb` par l'utilisateur root. Dernière version : **2.12.1**
(vérifiée via `api.github.com/repos/silverbulletmd/silverbullet/releases/latest`).

## Diagnostic initial

- Binaire racine : `/usr/local/bin/sb` (root:root, 7,1 Mo) — `sb version` → `2.10.0`.
- `sb upgrade` téléchargeait la nouvelle version puis **échouait** :
  `Error: failed to remove existing file /usr/local/bin/sb: Permission denied`
- Cause : l'agent tourne sous `opencode` (pas dans le groupe `sudo` ; sudo exige
  un mot de passe). `/usr/local/bin` n'est pas inscriptible par `opencode`.
- Le **serveur** SilverBullet (service systemd) utilise un binaire séparé
  `/var/www/silverbullet/silverbullet` (répertoire `silverbullet:silverbullet`,
  non accessible au compte `opencode`).

## Actions réalisées

1. **CLI local pour `opencode`** : binaire `sb` 2.12.1 installé dans
   `/var/lib/opencode/.local/bin/sb` (téléchargé depuis
   `https://github.com/silverbulletmd/silverbullet/releases/download/2.12.1/sb-linux-x86_64.zip`).
   - Vérifié : `sb version` → `2.12.1`, `sb upgrade` s'auto-met à jour dans
     `Install dir: /var/lib/opencode/.local/bin` (`Upgrade complete!`).
   - Test connecté au serveur local :
     `sb query --url http://127.0.0.1:3000/shizendo --token ...` → OK.
2. **Mise à jour de la version root** : exécutée par l'utilisateur (root).
   `/usr/local/bin/sb` → `2.12.1`.
3. **Pas de drop-in systemd PATH** pour opencode (décision : garder la
   séparation root/opencode, voir « État final »).

## État final (séparation maintenue)

| Contexte | Binaire | Version |
|---|---|---|
| **root** | `/usr/local/bin/sb` | 2.12.1 (mise à jour faite) |
| **opencode** | `/var/lib/opencode/.local/bin/sb` | 2.12.1 (installé par l'agent) |

- Les deux binaires sont identiques (même hash md5) — même build 2.12.1.
- **root** continue d'utiliser `/usr/local/bin/sb`.
- **opencode** utilise sa copie locale, ce qui lui permet de faire des
  `sb upgrade` **sans root** (autonomie).
- Le shell par défaut d'opencode résout `sb` vers `/usr/local/bin/sb` (même
  version désormais) ; pour forcer l'usage de la copie locale, utiliser le
  chemin absolu `/var/lib/opencode/.local/bin/sb` dans les skills/commandes.

## Serveur SilverBullet (séparé)

Le **serveur** est **déjà en 2.12.1** (vérifié par l'utilisateur). Le service
actif exécute `/var/www/silverbullet/silverbullet` (installation type YunoHost,
`/home/yunohost.app/silverbullet`). Aucune action requise.

## Conclusion

- CLI root : **2.12.1** ✅
- CLI opencode (local, autonome) : **2.12.1** ✅
- Serveur : **2.12.1** ✅
- Séparation root / opencode maintenue sans drop-in systemd.
