From 148956ddab54e25d1b1ce486b60a8b740483ef52 Mon Sep 17 00:00:00 2001
From: Jo Bo <3+jobo@noreply.localhost>
Date: Sat, 8 Aug 2026 14:37:57 +0200
Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?=
=?UTF-8?q?"/"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README-install.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100644 README-install.md
diff --git a/README-install.md b/README-install.md
new file mode 100644
index 0000000..7e9983d
--- /dev/null
+++ b/README-install.md
@@ -0,0 +1,115 @@
+# Installation de l'agent compagnon (côté nœud `lbry-node`)
+
+L'agent est le « bras armé » du plugin, côté serveur lbrynet. WordPress ne lui
+envoie que des ordres signés ; c'est lui qui télécharge la vidéo, publie via
+l'API lbrynet locale, gère les playlists, puis nettoie.
+
+Il se compose de **3 fichiers** (`kc-agent.php`, `kc-worker.php`, `kc-lib.php`)
++ **1 configuration** (`config.php`) + **1 tâche planifiée** (le worker).
+
+---
+
+## 1. Déposer les fichiers
+
+Copie le contenu du dossier `agent/` du plugin dans le **httpdocs** du domaine
+`lbry-node` :
+
+```
+/var/www/vhosts/lbry-node.karaokeclip.video/httpdocs/
+├── kc-agent.php
+├── kc-worker.php
+├── kc-lib.php
+└── config.php (créé à l'étape 2)
+```
+
+> Astuce : l'éditeur de fichiers Plesk ou WinSCP conviennent parfaitement.
+
+Vérifie que le domaine `lbry-node` a bien **le support PHP activé** (Plesk →
+domaine `lbry-node.karaokeclip.video` → « Paramètres PHP » → PHP activé, FPM).
+
+## 2. Créer la configuration
+
+Copie `config.sample.php` en `config.php`, puis renseigne :
+
+- `secret` : un long secret aléatoire. Génère-le sur le VPS :
+ ```bash
+ php -r 'echo bin2hex(random_bytes(32)), "\n";'
+ ```
+ Reporte **exactement la même valeur** dans WordPress (Réglages Odysee).
+- `allow_ips` : ajoute l'**IP publique du VPS** (en plus de `127.0.0.1`).
+- `channel_id` : le `claim_id` de `@KaraokeClip.Video`.
+- `account_id` : l'`id` du compte **financé** (celui avec les LBC), pas le
+ « Holding Account For Channel ». Retrouve-le avec :
+ ```bash
+ curl -s -X POST http://127.0.0.1:5279 -H "Content-Type: application/json" \
+ -d '{"method":"account_list"}' | jq '.result.items[] | {id, name, coins: .coins, is_default}'
+ ```
+
+Protège le fichier (lecture seule propriétaire) :
+```bash
+chmod 600 /var/www/vhosts/lbry-node.karaokeclip.video/httpdocs/config.php
+```
+
+## 3. Protéger l'endpoint (défense en profondeur)
+
+L'agent est déjà protégé par **signature HMAC + horodatage + liste blanche
+d'IP**. En complément, tu peux restreindre l'accès HTTP au fichier via un
+`.htaccess` (Apache) dans `httpdocs`, en n'autorisant que l'IP du VPS :
+
+```apache
+
+ Require ip 127.0.0.1 AJOUTER_L_IP_PUBLIQUE_DU_VPS
+
+
+ Require all denied
+
+
+ Require all denied
+
+
+ Require all denied
+
+```
+
+## 4. Créer la tâche planifiée du worker (drainage de la file)
+
+Dans **Plesk → domaine `lbry-node` → Tâches planifiées → Ajouter**, crée une
+tâche qui exécute un **script PHP** :
+
+- Type : « Exécuter un script PHP » (ou commande, cf. ci-dessous).
+- Chemin : `httpdocs/kc-worker.php`
+- Fréquence : **chaque minute** (`* * * * *`).
+
+Si Plesk demande une **commande shell** plutôt qu'un script, utilise le shim
+phpenv du domaine (celui vu via `which php`) :
+
+```bash
+/var/www/vhosts/lbry-node.karaokeclip.video/.phpenv/shims/php \
+ /var/www/vhosts/lbry-node.karaokeclip.video/httpdocs/kc-worker.php
+```
+
+Le worker se protège lui-même par un **verrou** : même lancé chaque minute, un
+seul exemplaire tourne à la fois. S'il n'y a rien à faire, il sort aussitôt.
+
+## 5. Vérifier
+
+Dépose une première publication depuis WordPress, ou teste « Tester la connexion
+au nœud » dans l'admin du plugin. Tu peux aussi lancer le worker à la main :
+
+```bash
+/var/www/vhosts/lbry-node.karaokeclip.video/.phpenv/shims/php \
+ /var/www/vhosts/lbry-node.karaokeclip.video/httpdocs/kc-worker.php
+```
+
+Les journaux détaillés de chaque job sont dans :
+```
+/var/www/vhosts/lbry-node.karaokeclip.video/lbry/kc-jobs/status/.json
+```
+
+---
+
+### Rappels de sécurité
+
+- Ne mets **jamais** `--api=0.0.0.0:5279` : l'API lbrynet reste sur `127.0.0.1`.
+- `config.php` contient des identifiants : `chmod 600` + interdit en HTTP.
+- Sauvegarde régulièrement le wallet du nœud (`.../lbry/.local/share/lbry/lbryum/`).