---
tags: note
type: "note"
nature: info             # Options : portrait, lieu, info, concept, script, process, tuto, none
ressource: true
univers: PRO
projects:
  - "[[03_PROJETS/VPS-IA]]"
date: "2026-10-07"
priority: 10
status: archived
---
# Utilisation d'OpenCode dans Node Red

Cette note fait suite à [[04_NOTES/VPS-IA_Installation-OpenCode|l'installation de OpenCode sur le VPS]]

Le service écoute uniquement sur `127.0.0.1:4096`.
Depuis Node-RED sur le même VPS, les requêtes HTTP doivent être envoyées à [http://127.0.0.1:4096](http://127.0.0.1:4096) en transmettant la clé d'authentification `[OPENCODE-PASSWORD]` définie dans `OPENCODE_SERVER_PASSWORD`.

Pour reproduire cet appel dans un flux Node-RED :
1. Ajoute un nœud **HTTP Request**.
2. **Method :** `GET`
3. **URL :** `http://127.0.0.1:4096/api/command`
4. **Use Authentication :** Coche la case, sélectionne **Basic authentication**.
    * **Username :** `opencode`
    * **Password :** Ton mot de passe
5. **Return :** `a parsed JSON object`

Avant le nœud **HTTP Request**, il faut injecter l'en-tête obligatoire via un nœud **Change** (ou **Function**) :

```javascript
msg.headers = {
    "Accept": "application/json",
    "x-opencode-directory": "/var/lib/opencode"
};
return msg;
```

Il est possible aussi de définir l’ensemble des paramètres dans un node fonction et utiliser les variables d’environnement définies dans Node Red.
Les variables d’environnement doivent être renseignées dans le menu “paramètres” > “Environnement”.

```javascript
const dir = env.get("OPENCODE_DIR") || "/var/lib/opencode";
const username = env.get("OPENCODE_SERVER_USER");
const password = env.get("OPENCODE_SERVER_PASSWORD");
const authHash = Buffer.from(`${user}:${password}`).toString("base64");
const url = env.get("OPENCODE_SERVER_URL");
const endpoint = "/api/command";

msg.method = "GET"; 
msg.url = `${url}${endpoint}`;
msg.headers = {
    "Authorization": `Basic ${authHash}`,
    "Accept": "application/json",
    "x-opencode-directory": dir
};

return msg;
```
