<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.lololand.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daneel</id>
	<title>Loic Wiki - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.lololand.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daneel"/>
	<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php/Sp%C3%A9cial:Contributions/Daneel"/>
	<updated>2026-07-24T14:46:06Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Acc%C3%A9der_et_capturer_une_page_web_via_un_tunnel_SSH&amp;diff=191</id>
		<title>Accéder et capturer une page web via un tunnel SSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Acc%C3%A9der_et_capturer_une_page_web_via_un_tunnel_SSH&amp;diff=191"/>
		<updated>2026-07-17T13:59:25Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Création du guide de tunnel SSH, capture Chromium et envoi Telegram OpenClaw&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Accéder et capturer une page web via un tunnel SSH}}&lt;br /&gt;
&lt;br /&gt;
Ce guide explique comment consulter depuis une autre machine un service web qui n&#039;écoute que sur l&#039;interface locale d&#039;un serveur, vérifier son accès, en faire une capture d&#039;écran puis envoyer cette capture dans Telegram avec OpenClaw.&lt;br /&gt;
&lt;br /&gt;
L&#039;exemple utilise l&#039;application &#039;&#039;&#039;AI Tester&#039;&#039;&#039; de Hermes sur la machine &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;. Le service est publié uniquement sur &amp;lt;code&amp;gt;tas:127.0.0.1:5000&amp;lt;/code&amp;gt; : il n&#039;est donc pas directement accessible depuis le réseau.&lt;br /&gt;
&lt;br /&gt;
Dernière vérification : 17 juillet 2026.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Principe ==&lt;br /&gt;
&lt;br /&gt;
Le tunnel local SSH suit ce trajet :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Chromium ou curl&lt;br /&gt;
    → client:127.0.0.1:15000&lt;br /&gt;
    → tunnel SSH&lt;br /&gt;
    → tas:127.0.0.1:5000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le port &amp;lt;code&amp;gt;15000&amp;lt;/code&amp;gt; est le port d&#039;entrée choisi sur la machine cliente. La destination &amp;lt;code&amp;gt;127.0.0.1:5000&amp;lt;/code&amp;gt; est interprétée depuis le serveur SSH &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Prérequis ==&lt;br /&gt;
&lt;br /&gt;
Sur la machine cliente :&lt;br /&gt;
&lt;br /&gt;
* un accès SSH par clé au compte &amp;lt;code&amp;gt;loic@tas&amp;lt;/code&amp;gt; ;&lt;br /&gt;
* &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; pour vérifier la réponse HTTP ;&lt;br /&gt;
* Google Chrome ou Chromium pour produire la capture ;&lt;br /&gt;
* OpenClaw configuré pour Telegram si la capture doit être envoyée par la CLI.&lt;br /&gt;
&lt;br /&gt;
Le service doit déjà répondre sur &amp;lt;code&amp;gt;tas:127.0.0.1:5000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ouvrir le tunnel SSH ==&lt;br /&gt;
&lt;br /&gt;
Dans un premier terminal sur la machine cliente :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh \&lt;br /&gt;
  -N \&lt;br /&gt;
  -o ExitOnForwardFailure=yes \&lt;br /&gt;
  -L 127.0.0.1:15000:127.0.0.1:5000 \&lt;br /&gt;
  loic@tas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande reste au premier plan pendant toute l&#039;utilisation du tunnel.&lt;br /&gt;
&lt;br /&gt;
Signification des paramètres :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-N&amp;lt;/code&amp;gt; : ne lance aucune commande distante ;&lt;br /&gt;
* &amp;lt;code&amp;gt;-L&amp;lt;/code&amp;gt; : crée une redirection locale ;&lt;br /&gt;
* &amp;lt;code&amp;gt;127.0.0.1:15000&amp;lt;/code&amp;gt; : adresse et port d&#039;entrée sur la machine cliente ;&lt;br /&gt;
* &amp;lt;code&amp;gt;127.0.0.1:5000&amp;lt;/code&amp;gt; : service de destination vu depuis &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt; ;&lt;br /&gt;
* &amp;lt;code&amp;gt;ExitOnForwardFailure=yes&amp;lt;/code&amp;gt; : arrête immédiatement SSH si le tunnel ne peut pas être créé.&lt;br /&gt;
&lt;br /&gt;
Si la clé n&#039;est pas sélectionnée automatiquement, préciser son chemin :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh \&lt;br /&gt;
  -i ~/.ssh/id_rsa_user \&lt;br /&gt;
  -N \&lt;br /&gt;
  -o ExitOnForwardFailure=yes \&lt;br /&gt;
  -L 127.0.0.1:15000:127.0.0.1:5000 \&lt;br /&gt;
  loic@tas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le préfixe local &amp;lt;code&amp;gt;127.0.0.1:&amp;lt;/code&amp;gt; empêche les autres machines du réseau d&#039;utiliser ce tunnel.&lt;br /&gt;
&lt;br /&gt;
== Vérifier l&#039;accès HTTP ==&lt;br /&gt;
&lt;br /&gt;
Dans un second terminal sur la machine cliente :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl --fail --show-error \&lt;br /&gt;
  -o /dev/null \&lt;br /&gt;
  -w &#039;HTTP %{http_code} | %{content_type}\n&#039; \&lt;br /&gt;
  http://127.0.0.1:15000/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Réponse attendue :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP 200 | text/html; charset=utf-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour ouvrir la page manuellement, utiliser dans le navigateur de la machine cliente :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://127.0.0.1:15000/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Capturer la page avec Chromium ==&lt;br /&gt;
&lt;br /&gt;
Avec Google Chrome :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
google-chrome \&lt;br /&gt;
  --headless \&lt;br /&gt;
  --disable-gpu \&lt;br /&gt;
  --screenshot=&amp;quot;$PWD/hermes-ai-tester-home.png&amp;quot; \&lt;br /&gt;
  --window-size=1440,1100 \&lt;br /&gt;
  http://127.0.0.1:15000/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avec Chromium, remplacer simplement &amp;lt;code&amp;gt;google-chrome&amp;lt;/code&amp;gt; par &amp;lt;code&amp;gt;chromium&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;chromium-browser&amp;lt;/code&amp;gt; selon la distribution.&lt;br /&gt;
&lt;br /&gt;
Vérifier ensuite le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
file &amp;quot;$PWD/hermes-ai-tester-home.png&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Envoyer la capture dans Telegram avec OpenClaw ==&lt;br /&gt;
&lt;br /&gt;
Remplacer &amp;lt;code&amp;gt;IDENTIFIANT_DU_CHAT&amp;lt;/code&amp;gt; par l&#039;identifiant du chat Telegram destinataire :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw message send \&lt;br /&gt;
  --channel telegram \&lt;br /&gt;
  --target &#039;IDENTIFIANT_DU_CHAT&#039; \&lt;br /&gt;
  --message &#039;Capture de la page d’accueil AI Tester via tunnel SSH.&#039; \&lt;br /&gt;
  --media &amp;quot;$PWD/hermes-ai-tester-home.png&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande envoie un fichier existant. Elle ne lance pas de modèle de langage.&lt;br /&gt;
&lt;br /&gt;
Pour vérifier la commande sans envoyer de message :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw message send \&lt;br /&gt;
  --dry-run \&lt;br /&gt;
  --channel telegram \&lt;br /&gt;
  --target &#039;IDENTIFIANT_DU_CHAT&#039; \&lt;br /&gt;
  --message &#039;Capture de test.&#039; \&lt;br /&gt;
  --media &amp;quot;$PWD/hermes-ai-tester-home.png&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fermer le tunnel ==&lt;br /&gt;
&lt;br /&gt;
Revenir dans le premier terminal et presser &amp;lt;code&amp;gt;Ctrl+C&amp;lt;/code&amp;gt;. Le port local &amp;lt;code&amp;gt;15000&amp;lt;/code&amp;gt; est alors libéré.&lt;br /&gt;
&lt;br /&gt;
Vérification facultative :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl --max-time 2 http://127.0.0.1:15000/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après fermeture, cette commande doit échouer avec une erreur de connexion.&lt;br /&gt;
&lt;br /&gt;
== Dépannage ==&lt;br /&gt;
&lt;br /&gt;
=== Le port local 15000 est déjà occupé ===&lt;br /&gt;
&lt;br /&gt;
Choisir un autre port d&#039;entrée, par exemple &amp;lt;code&amp;gt;15001&amp;lt;/code&amp;gt;, dans la commande SSH et dans toutes les URL locales.&lt;br /&gt;
&lt;br /&gt;
=== SSH affiche « No route to host » ===&lt;br /&gt;
&lt;br /&gt;
Vérifier la résolution de &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;, sa route réseau, son adresse IP et l&#039;accessibilité du port SSH :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
getent hosts tas&lt;br /&gt;
ssh -v loic@tas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SSH affiche « Permission denied (publickey) » ===&lt;br /&gt;
&lt;br /&gt;
Vérifier le compte distant, le chemin de la clé et la présence de sa clé publique dans &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt; sur &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== curl renvoie « Connection refused » ===&lt;br /&gt;
&lt;br /&gt;
Le tunnel peut être établi alors que le service cible ne fonctionne pas. Depuis &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;, contrôler directement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -I http://127.0.0.1:5000/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Précautions de sécurité ===&lt;br /&gt;
&lt;br /&gt;
* conserver l&#039;écoute locale du tunnel sur &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; ;&lt;br /&gt;
* ne pas publier directement AI Tester sur Internet ;&lt;br /&gt;
* ne pas exposer un serveur Flask/Werkzeug de développement sans authentification ni reverse proxy adapté ;&lt;br /&gt;
* vérifier le destinataire avant d&#039;utiliser &amp;lt;code&amp;gt;openclaw message send&amp;lt;/code&amp;gt; sans &amp;lt;code&amp;gt;--dry-run&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Résumé des commandes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Terminal 1 : tunnel&lt;br /&gt;
ssh -N -o ExitOnForwardFailure=yes \&lt;br /&gt;
  -L 127.0.0.1:15000:127.0.0.1:5000 loic@tas&lt;br /&gt;
&lt;br /&gt;
# Terminal 2 : test&lt;br /&gt;
curl --fail --show-error -o /dev/null \&lt;br /&gt;
  -w &#039;HTTP %{http_code} | %{content_type}\n&#039; \&lt;br /&gt;
  http://127.0.0.1:15000/&lt;br /&gt;
&lt;br /&gt;
# Capture&lt;br /&gt;
google-chrome --headless --disable-gpu \&lt;br /&gt;
  --screenshot=&amp;quot;$PWD/hermes-ai-tester-home.png&amp;quot; \&lt;br /&gt;
  --window-size=1440,1100 \&lt;br /&gt;
  http://127.0.0.1:15000/&lt;br /&gt;
&lt;br /&gt;
# Envoi Telegram&lt;br /&gt;
openclaw message send \&lt;br /&gt;
  --channel telegram \&lt;br /&gt;
  --target &#039;IDENTIFIANT_DU_CHAT&#039; \&lt;br /&gt;
  --message &#039;Capture AI Tester via tunnel SSH.&#039; \&lt;br /&gt;
  --media &amp;quot;$PWD/hermes-ai-tester-home.png&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SSH]]&lt;br /&gt;
[[Category:OpenClaw]]&lt;br /&gt;
[[Category:Hermes]]&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=190</id>
		<title>Trace install tas - Hermes Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=190"/>
		<updated>2026-07-16T21:22:07Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documente le port local 5000 et le tunnel SSH pour AI Tester&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hermes Agent =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Agent IA outillé exposé via sa gateway de messagerie, avec état persistant sur disque dédié.&lt;br /&gt;
&lt;br /&gt;
== Statut opérationnel ==&lt;br /&gt;
Dernière mise à jour documentaire : &#039;&#039;&#039;16 juillet 2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Capacités actuellement actives et vérifiées :&lt;br /&gt;
* [x] gateway Telegram dédiée via `@LoicHermesBot`&lt;br /&gt;
* [x] modèle local Ollama via `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] outils fichiers / terminal / mémoire / délégation&lt;br /&gt;
* [x] browser local embarqué&lt;br /&gt;
* [x] `browser_cdp` via Chrome dédié `hermes-cdp.service`&lt;br /&gt;
* [x] `browser_dialog` via le même endpoint CDP&lt;br /&gt;
* [x] STT local et TTS Edge&lt;br /&gt;
* [x] `web_search` via backend `ddgs` sans clé API&lt;br /&gt;
* [x] `web_extract` via backend `tavily`&lt;br /&gt;
&lt;br /&gt;
Capacités encore bloquées ou partielles :&lt;br /&gt;
* [ ] `image_generate`&lt;br /&gt;
* [ ] `read_terminal` et `close_terminal` hors application desktop Hermes&lt;br /&gt;
* [ ] `computer_use` dans ce gateway Telegram sans contexte desktop/X11&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local service : `127.0.0.1:8642`&lt;br /&gt;
* AI Tester local : `127.0.0.1:5000` lorsqu&#039;une instance de l&#039;application est lancée dans le conteneur&lt;br /&gt;
* Public HTTP : aucun par défaut&lt;br /&gt;
* Messagerie prévue : Telegram via un second bot dédié à créer&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* `8642` local uniquement&lt;br /&gt;
* `5000` local uniquement, publié par le Quadlet pour AI Tester ; aucun accès direct depuis le LAN ou Internet&lt;br /&gt;
* `9222` non publié ; accessible uniquement sur le réseau Podman privé `hermes-net`&lt;br /&gt;
&lt;br /&gt;
== Accès temporaire à AI Tester ==&lt;br /&gt;
Le Quadlet publie `127.0.0.1:5000:5000`. L&#039;application Flask doit néanmoins être lancée dans le conteneur :&lt;br /&gt;
* `podman exec -d --user hermes --workdir /opt/data/ai-tester hermes uv run flask --app ai_tester.web run --host 0.0.0.0 --port 5000`&lt;br /&gt;
* contrôle depuis `tas` : `curl -I http://127.0.0.1:5000/`&lt;br /&gt;
&lt;br /&gt;
Depuis une autre machine disposant d&#039;un accès SSH à `tas` :&lt;br /&gt;
* ouvrir le tunnel : `ssh -L 5000:127.0.0.1:5000 tas`&lt;br /&gt;
* consulter ensuite `http://127.0.0.1:5000` dans le navigateur local&lt;br /&gt;
&lt;br /&gt;
Le serveur Werkzeug utilisé est un serveur de développement sans protection adaptée à une exposition publique. Ne pas publier ce port sur `0.0.0.0` et ne pas l&#039;ajouter directement à Caddy. Le processus Flask lancé avec `podman exec -d` n&#039;est pas persistant et disparaît lors d&#039;une recréation de `hermes.service`.&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlets systemd user : `hermes.container` et `hermes-cdp.container` ; unités générées : `hermes.service` et `hermes-cdp.service`.&lt;br /&gt;
&lt;br /&gt;
Réseau privé :&lt;br /&gt;
* unité idempotente `hermes-network.service`&lt;br /&gt;
* réseau CNI `hermes-net` sur `10.89.12.0/24`&lt;br /&gt;
* IP CDP réservée : `10.89.12.2`&lt;br /&gt;
* les cycles de vie Hermes et CDP sont indépendants&lt;br /&gt;
&lt;br /&gt;
Commande de démarrage :&lt;br /&gt;
* `gateway run`&lt;br /&gt;
&lt;br /&gt;
Image :&lt;br /&gt;
* `docker.io/nousresearch/hermes-agent:latest`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes/config.yaml`&lt;br /&gt;
&lt;br /&gt;
Sources de vérité :&lt;br /&gt;
* le quadlet gère le runtime Podman rootless&lt;br /&gt;
* `hermes.env` porte les secrets / variables Telegram&lt;br /&gt;
* `config.yaml` porte la configuration non secrète Hermes&lt;br /&gt;
&lt;br /&gt;
== Exploitation courante ==&lt;br /&gt;
Toutes les commandes ci-dessous sont exécutées avec le compte utilisateur `loic` ; ne pas ajouter `sudo` aux commandes `systemctl --user` ou `podman`.&lt;br /&gt;
&lt;br /&gt;
=== Appliquer une modification de configuration ===&lt;br /&gt;
Après sauvegarde préalable du fichier concerné :&lt;br /&gt;
* modification de `config.yaml` ou `hermes.env` : `systemctl --user restart hermes.service`&lt;br /&gt;
* modification d&#039;un fichier Quadlet `.container` : `systemctl --user daemon-reload`, puis redémarrer uniquement le service concerné&lt;br /&gt;
* vérifier ensuite : `systemctl --user is-active hermes.service hermes-cdp.service hermes-network.service`&lt;br /&gt;
&lt;br /&gt;
=== Démarrage ===&lt;br /&gt;
* démarrer le réseau privé : `systemctl --user start hermes-network.service`&lt;br /&gt;
* démarrer Hermes : `systemctl --user start hermes.service`&lt;br /&gt;
* démarrer CDP : `systemctl --user start hermes-cdp.service`&lt;br /&gt;
* démarrage groupé : `systemctl --user start hermes-network.service hermes.service hermes-cdp.service`&lt;br /&gt;
&lt;br /&gt;
=== Arrêt ===&lt;br /&gt;
* arrêt normal complet : `systemctl --user stop hermes-cdp.service hermes.service`&lt;br /&gt;
* il n&#039;est normalement pas nécessaire d&#039;arrêter `hermes-network.service`; le réseau persiste volontairement&lt;br /&gt;
* ne pas supprimer manuellement le conteneur `hermes` tant qu&#039;un ancien conteneur utilisant `--network container:hermes` existe encore&lt;br /&gt;
&lt;br /&gt;
=== Redémarrage ===&lt;br /&gt;
* redémarrer Hermes seul : `systemctl --user restart hermes.service`&lt;br /&gt;
* redémarrer Chrome CDP seul : `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* le redémarrage de l&#039;un ne doit pas redémarrer ni bloquer l&#039;autre&lt;br /&gt;
* après modification des Quadlets : `systemctl --user daemon-reload &amp;amp;&amp;amp; systemctl --user restart hermes.service hermes-cdp.service`&lt;br /&gt;
&lt;br /&gt;
=== État et journaux ===&lt;br /&gt;
* état synthétique : `systemctl --user is-active hermes-network.service hermes.service hermes-cdp.service`&lt;br /&gt;
* état détaillé Hermes : `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* état détaillé CDP : `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* logs Hermes : `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* logs CDP : `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* suivre les logs : `journalctl --user -f -u hermes.service -u hermes-cdp.service`&lt;br /&gt;
* état Podman : `podman ps --filter name=hermes`&lt;br /&gt;
&lt;br /&gt;
=== Contrôles de santé ===&lt;br /&gt;
* vérifier le port local Hermes : `ss -ltn | rg &#039;:8642&#039;`&lt;br /&gt;
* vérifier CDP depuis Hermes : `podman exec hermes curl -fsS http://10.89.12.2:9222/json/version`&lt;br /&gt;
* la réponse CDP doit contenir `webSocketDebuggerUrl`&lt;br /&gt;
* vérifier que CDP n&#039;est pas publié sur l&#039;hôte : &amp;lt;nowiki&amp;gt;`podman inspect hermes-cdp --format &#039;{{json .NetworkSettings.Ports}}&#039;`&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* vérifier l&#039;IP privée CDP : &amp;lt;nowiki&amp;gt;`podman inspect hermes-cdp --format &#039;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&#039;`&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mise à jour des images ===&lt;br /&gt;
* simulation : `podman auto-update --dry-run`&lt;br /&gt;
* mise à jour gérée : `systemctl --user start podman-auto-update.service`&lt;br /&gt;
* contrôler ensuite les trois services et les journaux&lt;br /&gt;
* sur Podman 4.6.2, si le dry-run mentionne un ancien ID absent, vérifier d&#039;abord `podman ps -a` et l&#039;état des services ; ne pas supprimer les données persistantes&lt;br /&gt;
&lt;br /&gt;
=== Sauvegarde avant intervention ===&lt;br /&gt;
* Quadlets : `/home/loic/.config/containers/systemd/hermes.container` et `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* réseau : `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* environnement : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* configuration et données : `/media/loic/nem/hermes`&lt;br /&gt;
* conserver les sauvegardes hors du répertoire remplacé, par exemple dans `/home/loic/backups`&lt;br /&gt;
&lt;br /&gt;
=== Retour arrière ===&lt;br /&gt;
* arrêter `hermes-cdp.service` puis `hermes.service`&lt;br /&gt;
* restaurer les fichiers sauvegardés sans supprimer `/media/loic/nem/hermes`&lt;br /&gt;
* exécuter `systemctl --user daemon-reload`&lt;br /&gt;
* redémarrer dans l&#039;ordre réseau, Hermes, puis CDP&lt;br /&gt;
* vérifier les journaux et `/json/version` avant de conclure&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `/media/loic/nem/hermes:/opt/data`&lt;br /&gt;
&lt;br /&gt;
Contenu notable dans la persistance :&lt;br /&gt;
* `config.yaml`&lt;br /&gt;
* historiques / sessions Hermes&lt;br /&gt;
* mémoire et skills synchronisés par Hermes&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Podman rootless&lt;br /&gt;
* Ollama local via `http://host.containers.internal:11434/v1`&lt;br /&gt;
* second bot Telegram dédié avec token distinct de l&#039;instance OpenClaw existante&lt;br /&gt;
* package Python `ddgs` installé via `hermes tools post-setup ddgs` le `13 juillet 2026`&lt;br /&gt;
* clé API Tavily injectée via `hermes.env` le `13 juillet 2026`&lt;br /&gt;
* service `hermes-cdp.service` indépendant, relié à Hermes par `hermes-net` depuis le `16 juillet 2026`&lt;br /&gt;
&lt;br /&gt;
== Modèle LLM principal ==&lt;br /&gt;
Configuration Hermes actuellement retenue :&lt;br /&gt;
* provider : `custom`&lt;br /&gt;
* backend : API Ollama locale sur `http://host.containers.internal:11434/v1`&lt;br /&gt;
* modèle par défaut : `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* contexte cible : `131072` tokens&lt;br /&gt;
&lt;br /&gt;
== Outils et backends activés ==&lt;br /&gt;
Activation explicite actuellement retenue dans `config.yaml` :&lt;br /&gt;
* `web.search_backend: ddgs`&lt;br /&gt;
* `web.extract_backend: tavily`&lt;br /&gt;
* `browser.cdp_url: http://10.89.12.2:9222`&lt;br /&gt;
&lt;br /&gt;
Conséquences :&lt;br /&gt;
* `web_search` devient disponible sans clé API&lt;br /&gt;
* `web_extract` devient disponible via Tavily pour les URLs HTTP/HTTPS et le rendu markdown&lt;br /&gt;
* `browser_cdp` et `browser_dialog` deviennent disponibles sans exposer CDP sur le réseau hôte&lt;br /&gt;
&lt;br /&gt;
Backends non activés à ce stade :&lt;br /&gt;
* aucun backend `image_gen`&lt;br /&gt;
&lt;br /&gt;
== Intégration Telegram préparée ==&lt;br /&gt;
Configuration locale maintenant active :&lt;br /&gt;
* fichier dédié : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* allowlist utilisateur configurée sur l&#039;identifiant Telegram de Loïc : `5910858583`&lt;br /&gt;
* canal home Telegram préparé sur `5910858583`&lt;br /&gt;
* bot dédié configuré : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Important :&lt;br /&gt;
* le token du bot dédié est maintenant renseigné dans `hermes.env`&lt;br /&gt;
* il faut un bot distinct de `@LoicBoBBot` pour éviter le conflit `getUpdates` avec OpenClaw&lt;br /&gt;
&lt;br /&gt;
Variables prévues dans `hermes.env` :&lt;br /&gt;
* `TELEGRAM_ALLOWED_USERS=5910858583`&lt;br /&gt;
* `TELEGRAM_HOME_CHANNEL=5910858583`&lt;br /&gt;
* `TELEGRAM_BOT_TOKEN=...` configuré pour `@LoicHermesBot`&lt;br /&gt;
* `TAVILY_API_KEY=...` configurée sans etre documentée en clair dans cette page&lt;br /&gt;
&lt;br /&gt;
== Procédure pour finaliser le second bot ==&lt;br /&gt;
Bot dédié déjà créé et validé :&lt;br /&gt;
* nom : `Hermes`&lt;br /&gt;
* username : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Pour refaire la procédure sur une autre instance :&lt;br /&gt;
* créer un bot dédié via `@BotFather`&lt;br /&gt;
* renseigner `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `systemctl --user daemon-reload`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* vérifier `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* `ss -ltn | rg 8642`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import check_web_api_key; print(check_web_api_key())&amp;quot;`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import _get_search_backend,_get_extract_backend; print(_get_search_backend(), _get_extract_backend())&amp;quot;`&lt;br /&gt;
* `podman exec hermes curl -fsS http://10.89.12.2:9222/json/version`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.browser_cdp_tool import _browser_cdp_check; print(_browser_cdp_check())&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
Interprétation rapide :&lt;br /&gt;
* si le service tourne mais logue `No messaging platforms enabled`, le token Telegram n&#039;est pas encore actif&lt;br /&gt;
* si le service refuse de démarrer après ajout du token, vérifier d&#039;abord le format du token et l&#039;unicité du bot&lt;br /&gt;
* si un conflit de token apparaît, s&#039;assurer que le bot Hermes n&#039;est pas le même que celui d&#039;OpenClaw&lt;br /&gt;
* si Telegram est bien pris en compte, les logs montrent une phase de connexion du type `Connecting to Telegram`&lt;br /&gt;
* si `check_web_api_key()` renvoie `True` avec `search_provider=ddgs` et `extract_provider=tavily`, la recherche et l&#039;extraction web sont activées&lt;br /&gt;
* si `curl http://10.89.12.2:9222/json/version` renvoie un `webSocketDebuggerUrl` depuis le conteneur Hermes, la cible CDP est joignable&lt;br /&gt;
* ne pas rétablir `--network container:hermes` : un conteneur CDP dépendant empêcherait Podman de recréer Hermes lors d&#039;une mise à jour&lt;br /&gt;
* si `_browser_cdp_check()` renvoie `True`, `browser_cdp` et `browser_dialog` doivent etre exposes par Hermes&lt;br /&gt;
&lt;br /&gt;
== Plan d&#039;activation des potentiels ==&lt;br /&gt;
Checklist de suivi :&lt;br /&gt;
* [x] sécuriser le runtime rootless + backups de config&lt;br /&gt;
* [x] activer Telegram dédié&lt;br /&gt;
* [x] basculer sur le modèle local `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] activer `web_search` gratuit via `ddgs`&lt;br /&gt;
* [x] choisir et brancher un backend `web_extract`&lt;br /&gt;
* [x] fournir un endpoint CDP persistant pour `browser_cdp`&lt;br /&gt;
* [ ] choisir et brancher un backend `image_generate`&lt;br /&gt;
* [ ] décider si un contexte desktop dédié doit être exposé à Hermes&lt;br /&gt;
&lt;br /&gt;
Intervention attendue de Loïc pour débloquer la suite :&lt;br /&gt;
* `image_generate` : fournir un provider et un secret ou une auth exploitable dans le conteneur (`OPENAI_API_KEY`, `FAL_KEY`, ou auth Codex dans Hermes)&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
Avant modification de la config critique :&lt;br /&gt;
* sauvegarder le quadlet Hermes&lt;br /&gt;
* sauvegarder `hermes.env`&lt;br /&gt;
* sauvegarder la persistance `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* restaurer `hermes.container`&lt;br /&gt;
* restaurer `hermes.env`&lt;br /&gt;
* restaurer `/media/loic/nem/hermes`&lt;br /&gt;
* recharger systemd user&lt;br /&gt;
* relancer `hermes.service`&lt;br /&gt;
&lt;br /&gt;
== Rollback ==&lt;br /&gt;
Si l&#039;intégration Telegram du second bot casse Hermes :&lt;br /&gt;
* recommenter `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* redémarrer `hermes.service`&lt;br /&gt;
* revenir au backup du quadlet si nécessaire&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de provider LLM, de chemin de persistance, de port local, de bot Telegram ou de stratégie d&#039;allowlist, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Utiliser_les_chats_Hermes_et_OpenClaw_en_ligne_de_commande&amp;diff=189</id>
		<title>Utiliser les chats Hermes et OpenClaw en ligne de commande</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Utiliser_les_chats_Hermes_et_OpenClaw_en_ligne_de_commande&amp;diff=189"/>
		<updated>2026-07-16T18:05:53Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Création du guide CLI Hermes et OpenClaw avec sélection explicite de modèle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Utiliser les chats Hermes et OpenClaw en ligne de commande}}&lt;br /&gt;
&lt;br /&gt;
Ce guide décrit les commandes de consultation et de reprise de conversation pour Hermes Agent et OpenClaw sur la machine &#039;&#039;tas&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dernière vérification : 16 juillet 2026, avec Hermes dans le conteneur Podman &amp;lt;code&amp;gt;hermes&amp;lt;/code&amp;gt; et OpenClaw 2026.7.1.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Différence entre &amp;lt;code&amp;gt;hermes -z&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;hermes chat&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Hermes propose deux modes non interactifs principaux :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;hermes -z &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; : appel ponctuel destiné aux scripts, avec uniquement la réponse finale sur la sortie standard ;&lt;br /&gt;
* &amp;lt;code&amp;gt;hermes chat -q &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; : tour de chat complet, capable de créer ou reprendre une session et offrant davantage de contrôles.&lt;br /&gt;
&lt;br /&gt;
L&#039;option &amp;lt;code&amp;gt;-z&amp;lt;/code&amp;gt; contourne automatiquement les demandes d&#039;approbation. Elle doit donc rester réservée aux demandes textuelles bornées, sans action sensible. Pour utiliser des outils, conserver un historique ou reprendre une conversation, préférer &amp;lt;code&amp;gt;hermes chat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Requêter Hermes ==&lt;br /&gt;
&lt;br /&gt;
=== Question ponctuelle sans action ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes -z \&lt;br /&gt;
  &amp;quot;Définis Podman Quadlet en trois phrases, sans utiliser d&#039;outil.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas employer cette forme pour une consigne susceptible de modifier des fichiers, d&#039;exécuter une commande dangereuse ou d&#039;envoyer un message.&lt;br /&gt;
&lt;br /&gt;
=== Requête contrôlée dans une session distincte ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes chat \&lt;br /&gt;
  --query &amp;quot;Analyse cette architecture sans rien modifier.&amp;quot; \&lt;br /&gt;
  --quiet \&lt;br /&gt;
  --source tool \&lt;br /&gt;
  --max-turns 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--quiet&amp;lt;/code&amp;gt; réduit l&#039;affichage aux résultats utiles ;&lt;br /&gt;
* &amp;lt;code&amp;gt;--source tool&amp;lt;/code&amp;gt; identifie la session comme un appel programmatique ;&lt;br /&gt;
* &amp;lt;code&amp;gt;--max-turns 5&amp;lt;/code&amp;gt; borne le nombre d&#039;itérations de l&#039;agent.&lt;br /&gt;
&lt;br /&gt;
=== Conversation interactive dans le terminal ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec -it hermes hermes chat --cli&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour utiliser l&#039;interface moderne, remplacer &amp;lt;code&amp;gt;--cli&amp;lt;/code&amp;gt; par &amp;lt;code&amp;gt;--tui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Choisir explicitement un modèle Hermes ===&lt;br /&gt;
&lt;br /&gt;
L&#039;exemple suivant force &amp;lt;code&amp;gt;gpt-5.6-sol&amp;lt;/code&amp;gt; via le provider &amp;lt;code&amp;gt;openai-codex&amp;lt;/code&amp;gt; uniquement pour cet appel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes chat \&lt;br /&gt;
  --provider openai-codex \&lt;br /&gt;
  --model &#039;gpt-5.6-sol&#039; \&lt;br /&gt;
  --query &amp;quot;Compare Docker et Podman, sans effectuer d&#039;action.&amp;quot; \&lt;br /&gt;
  --quiet \&lt;br /&gt;
  --source tool&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour forcer à la place le modèle Ollama local de secours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes chat \&lt;br /&gt;
  --provider custom \&lt;br /&gt;
  --model &#039;gemma4:e4b-it-q8_0_128k&#039; \&lt;br /&gt;
  --query &amp;quot;Compare Docker et Podman, sans effectuer d&#039;action.&amp;quot; \&lt;br /&gt;
  --quiet \&lt;br /&gt;
  --source tool&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces choix temporaires ne modifient pas le modèle configuré par défaut.&lt;br /&gt;
&lt;br /&gt;
== Reprendre le chat Hermes utilisé par Telegram ==&lt;br /&gt;
&lt;br /&gt;
=== Retrouver la session Telegram ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes sessions list --source telegram --limit 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La colonne &amp;lt;code&amp;gt;ID&amp;lt;/code&amp;gt; fournit l&#039;identifiant à passer à &amp;lt;code&amp;gt;--resume&amp;lt;/code&amp;gt;. Toujours relire la liste avant usage afin de sélectionner la bonne conversation.&lt;br /&gt;
&lt;br /&gt;
=== Reprendre le contexte depuis le terminal ===&lt;br /&gt;
&lt;br /&gt;
Mode interactif :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec -it hermes hermes chat \&lt;br /&gt;
  --resume ID_DE_SESSION \&lt;br /&gt;
  --cli&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tour unique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes chat \&lt;br /&gt;
  --resume ID_DE_SESSION \&lt;br /&gt;
  --query &amp;quot;Poursuis l&#039;analyse précédente sans rien modifier.&amp;quot; \&lt;br /&gt;
  --quiet&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--resume&amp;lt;/code&amp;gt; recharge le contexte de la conversation Telegram, mais une réponse produite par la CLI reste affichée dans le terminal. Elle n&#039;est pas publiée automatiquement dans Telegram.&lt;br /&gt;
&lt;br /&gt;
=== Envoyer explicitement un texte dans Telegram ===&lt;br /&gt;
&lt;br /&gt;
Après validation humaine du texte :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec hermes hermes send \&lt;br /&gt;
  --to telegram \&lt;br /&gt;
  &amp;quot;Texte validé à publier dans le chat Telegram.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;hermes send&amp;lt;/code&amp;gt; ne lance aucun LLM : la commande livre seulement le texte fourni. Pour poursuivre naturellement le contexte et recevoir la réponse dans Telegram, la méthode la plus simple reste d&#039;écrire directement à &amp;lt;code&amp;gt;@LoicHermesBot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Commandes équivalentes avec OpenClaw ==&lt;br /&gt;
&lt;br /&gt;
=== Tour ponctuel sans livraison externe ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw agent \&lt;br /&gt;
  --agent main \&lt;br /&gt;
  --session-key agent:main:consultation-cli \&lt;br /&gt;
  --message &amp;quot;Définis Podman Quadlet en trois phrases.&amp;quot; \&lt;br /&gt;
  --json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sans &amp;lt;code&amp;gt;--deliver&amp;lt;/code&amp;gt;, le résultat revient dans le terminal et n&#039;est pas envoyé dans Telegram.&lt;br /&gt;
&lt;br /&gt;
=== Choisir explicitement un modèle OpenClaw ===&lt;br /&gt;
&lt;br /&gt;
Le modèle doit être un identifiant présent dans &amp;lt;code&amp;gt;openclaw models list&amp;lt;/code&amp;gt;. Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw agent \&lt;br /&gt;
  --agent main \&lt;br /&gt;
  --session-key agent:main:consultation-gpt54 \&lt;br /&gt;
  --model &#039;openai/gpt-5.4&#039; \&lt;br /&gt;
  --message &amp;quot;Compare Docker et Podman en cinq points.&amp;quot; \&lt;br /&gt;
  --json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette surcharge vaut pour ce tour ; elle ne change pas la configuration globale. Si l&#039;identifiant n&#039;est pas disponible dans l&#039;installation, le remplacer par une valeur effectivement affichée par :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw models list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lister et reprendre une session ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw sessions --agent main --limit 20&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reprise par clé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw agent \&lt;br /&gt;
  --session-key &#039;CLE_DE_SESSION&#039; \&lt;br /&gt;
  --message &amp;quot;Poursuis l&#039;analyse précédente.&amp;quot; \&lt;br /&gt;
  --json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reprise par identifiant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw agent \&lt;br /&gt;
  --session-id &#039;ID_DE_SESSION&#039; \&lt;br /&gt;
  --message &amp;quot;Poursuis l&#039;analyse précédente.&amp;quot; \&lt;br /&gt;
  --json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interface terminal ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw tui --session &#039;CLE_DE_SESSION&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter &amp;lt;code&amp;gt;--deliver&amp;lt;/code&amp;gt; uniquement si les réponses doivent être livrées au canal externe associé à la session.&lt;br /&gt;
&lt;br /&gt;
=== Répondre dans une conversation Telegram OpenClaw ===&lt;br /&gt;
&lt;br /&gt;
Retrouver d&#039;abord la session :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw sessions --agent main --json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis lancer le tour sur sa clé exacte avec livraison explicite :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw agent \&lt;br /&gt;
  --session-key &#039;CLE_DE_SESSION_TELEGRAM&#039; \&lt;br /&gt;
  --message &amp;quot;Poursuis notre échange précédent.&amp;quot; \&lt;br /&gt;
  --channel telegram \&lt;br /&gt;
  --deliver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour imposer une destination de réponse distincte :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw agent \&lt;br /&gt;
  --session-key &#039;CLE_DE_SESSION_TELEGRAM&#039; \&lt;br /&gt;
  --message &amp;quot;Prépare puis envoie la réponse.&amp;quot; \&lt;br /&gt;
  --deliver \&lt;br /&gt;
  --reply-channel telegram \&lt;br /&gt;
  --reply-to &#039;IDENTIFIANT_DU_CHAT&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Envoyer un texte sans appeler le LLM ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openclaw message send \&lt;br /&gt;
  --channel telegram \&lt;br /&gt;
  --target &#039;IDENTIFIANT_DU_CHAT&#039; \&lt;br /&gt;
  --message &amp;quot;Texte déjà validé.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande livre un texte existant ; elle ne lance pas de tour d&#039;agent.&lt;br /&gt;
&lt;br /&gt;
== Correspondances rapides ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Besoin&lt;br /&gt;
! Hermes&lt;br /&gt;
! OpenClaw&lt;br /&gt;
|-&lt;br /&gt;
| Question ponctuelle&lt;br /&gt;
| &amp;lt;code&amp;gt;hermes -z &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;openclaw agent --message &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Tour contrôlé&lt;br /&gt;
| &amp;lt;code&amp;gt;hermes chat -q &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;openclaw agent --message &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Lister les sessions&lt;br /&gt;
| &amp;lt;code&amp;gt;hermes sessions list&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;openclaw sessions&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reprendre une session&lt;br /&gt;
| &amp;lt;code&amp;gt;hermes chat --resume ID&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;openclaw agent --session-key CLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Terminal interactif&lt;br /&gt;
| &amp;lt;code&amp;gt;hermes chat --resume ID --cli&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;openclaw tui --session CLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Envoyer sans LLM&lt;br /&gt;
| &amp;lt;code&amp;gt;hermes send --to telegram&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;openclaw message send --channel telegram&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Précautions ==&lt;br /&gt;
&lt;br /&gt;
# Ne jamais ajouter &amp;lt;code&amp;gt;--yolo&amp;lt;/code&amp;gt; pour une simple consultation Hermes.&lt;br /&gt;
# Réserver &amp;lt;code&amp;gt;hermes -z&amp;lt;/code&amp;gt; aux questions sans effet de bord.&lt;br /&gt;
# Utiliser &amp;lt;code&amp;gt;--source tool&amp;lt;/code&amp;gt; pour isoler les appels programmatiques Hermes.&lt;br /&gt;
# Vérifier l&#039;identifiant de session avant toute reprise.&lt;br /&gt;
# Avec OpenClaw, omettre &amp;lt;code&amp;gt;--deliver&amp;lt;/code&amp;gt; tant que la réponse ne doit pas quitter le terminal.&lt;br /&gt;
# Relire tout contenu avant d&#039;utiliser &amp;lt;code&amp;gt;hermes send&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;openclaw agent --deliver&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;openclaw message send&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Hermes Agent]]&lt;br /&gt;
* [[Trace install tas]]&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=188</id>
		<title>Trace install tas - Hermes Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=188"/>
		<updated>2026-07-16T09:46:51Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Correction rendu commandes podman inspect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hermes Agent =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Agent IA outillé exposé via sa gateway de messagerie, avec état persistant sur disque dédié.&lt;br /&gt;
&lt;br /&gt;
== Statut opérationnel ==&lt;br /&gt;
Dernière mise à jour documentaire : &#039;&#039;&#039;16 juillet 2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Capacités actuellement actives et vérifiées :&lt;br /&gt;
* [x] gateway Telegram dédiée via `@LoicHermesBot`&lt;br /&gt;
* [x] modèle local Ollama via `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] outils fichiers / terminal / mémoire / délégation&lt;br /&gt;
* [x] browser local embarqué&lt;br /&gt;
* [x] `browser_cdp` via Chrome dédié `hermes-cdp.service`&lt;br /&gt;
* [x] `browser_dialog` via le même endpoint CDP&lt;br /&gt;
* [x] STT local et TTS Edge&lt;br /&gt;
* [x] `web_search` via backend `ddgs` sans clé API&lt;br /&gt;
* [x] `web_extract` via backend `tavily`&lt;br /&gt;
&lt;br /&gt;
Capacités encore bloquées ou partielles :&lt;br /&gt;
* [ ] `image_generate`&lt;br /&gt;
* [ ] `read_terminal` et `close_terminal` hors application desktop Hermes&lt;br /&gt;
* [ ] `computer_use` dans ce gateway Telegram sans contexte desktop/X11&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local service : `127.0.0.1:8642`&lt;br /&gt;
* Public HTTP : aucun par défaut&lt;br /&gt;
* Messagerie prévue : Telegram via un second bot dédié à créer&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* `8642` local uniquement&lt;br /&gt;
* `9222` non publié ; accessible uniquement sur le réseau Podman privé `hermes-net`&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlets systemd user : `hermes.container` et `hermes-cdp.container` ; unités générées : `hermes.service` et `hermes-cdp.service`.&lt;br /&gt;
&lt;br /&gt;
Réseau privé :&lt;br /&gt;
* unité idempotente `hermes-network.service`&lt;br /&gt;
* réseau CNI `hermes-net` sur `10.89.12.0/24`&lt;br /&gt;
* IP CDP réservée : `10.89.12.2`&lt;br /&gt;
* les cycles de vie Hermes et CDP sont indépendants&lt;br /&gt;
&lt;br /&gt;
Commande de démarrage :&lt;br /&gt;
* `gateway run`&lt;br /&gt;
&lt;br /&gt;
Image :&lt;br /&gt;
* `docker.io/nousresearch/hermes-agent:latest`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes/config.yaml`&lt;br /&gt;
&lt;br /&gt;
Sources de vérité :&lt;br /&gt;
* le quadlet gère le runtime Podman rootless&lt;br /&gt;
* `hermes.env` porte les secrets / variables Telegram&lt;br /&gt;
* `config.yaml` porte la configuration non secrète Hermes&lt;br /&gt;
&lt;br /&gt;
== Exploitation courante ==&lt;br /&gt;
Toutes les commandes ci-dessous sont exécutées avec le compte utilisateur `loic` ; ne pas ajouter `sudo` aux commandes `systemctl --user` ou `podman`.&lt;br /&gt;
&lt;br /&gt;
=== Appliquer une modification de configuration ===&lt;br /&gt;
Après sauvegarde préalable du fichier concerné :&lt;br /&gt;
* modification de `config.yaml` ou `hermes.env` : `systemctl --user restart hermes.service`&lt;br /&gt;
* modification d&#039;un fichier Quadlet `.container` : `systemctl --user daemon-reload`, puis redémarrer uniquement le service concerné&lt;br /&gt;
* vérifier ensuite : `systemctl --user is-active hermes.service hermes-cdp.service hermes-network.service`&lt;br /&gt;
&lt;br /&gt;
=== Démarrage ===&lt;br /&gt;
* démarrer le réseau privé : `systemctl --user start hermes-network.service`&lt;br /&gt;
* démarrer Hermes : `systemctl --user start hermes.service`&lt;br /&gt;
* démarrer CDP : `systemctl --user start hermes-cdp.service`&lt;br /&gt;
* démarrage groupé : `systemctl --user start hermes-network.service hermes.service hermes-cdp.service`&lt;br /&gt;
&lt;br /&gt;
=== Arrêt ===&lt;br /&gt;
* arrêt normal complet : `systemctl --user stop hermes-cdp.service hermes.service`&lt;br /&gt;
* il n&#039;est normalement pas nécessaire d&#039;arrêter `hermes-network.service`; le réseau persiste volontairement&lt;br /&gt;
* ne pas supprimer manuellement le conteneur `hermes` tant qu&#039;un ancien conteneur utilisant `--network container:hermes` existe encore&lt;br /&gt;
&lt;br /&gt;
=== Redémarrage ===&lt;br /&gt;
* redémarrer Hermes seul : `systemctl --user restart hermes.service`&lt;br /&gt;
* redémarrer Chrome CDP seul : `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* le redémarrage de l&#039;un ne doit pas redémarrer ni bloquer l&#039;autre&lt;br /&gt;
* après modification des Quadlets : `systemctl --user daemon-reload &amp;amp;&amp;amp; systemctl --user restart hermes.service hermes-cdp.service`&lt;br /&gt;
&lt;br /&gt;
=== État et journaux ===&lt;br /&gt;
* état synthétique : `systemctl --user is-active hermes-network.service hermes.service hermes-cdp.service`&lt;br /&gt;
* état détaillé Hermes : `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* état détaillé CDP : `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* logs Hermes : `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* logs CDP : `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* suivre les logs : `journalctl --user -f -u hermes.service -u hermes-cdp.service`&lt;br /&gt;
* état Podman : `podman ps --filter name=hermes`&lt;br /&gt;
&lt;br /&gt;
=== Contrôles de santé ===&lt;br /&gt;
* vérifier le port local Hermes : `ss -ltn | rg &#039;:8642&#039;`&lt;br /&gt;
* vérifier CDP depuis Hermes : `podman exec hermes curl -fsS http://10.89.12.2:9222/json/version`&lt;br /&gt;
* la réponse CDP doit contenir `webSocketDebuggerUrl`&lt;br /&gt;
* vérifier que CDP n&#039;est pas publié sur l&#039;hôte : &amp;lt;nowiki&amp;gt;`podman inspect hermes-cdp --format &#039;{{json .NetworkSettings.Ports}}&#039;`&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* vérifier l&#039;IP privée CDP : &amp;lt;nowiki&amp;gt;`podman inspect hermes-cdp --format &#039;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&#039;`&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mise à jour des images ===&lt;br /&gt;
* simulation : `podman auto-update --dry-run`&lt;br /&gt;
* mise à jour gérée : `systemctl --user start podman-auto-update.service`&lt;br /&gt;
* contrôler ensuite les trois services et les journaux&lt;br /&gt;
* sur Podman 4.6.2, si le dry-run mentionne un ancien ID absent, vérifier d&#039;abord `podman ps -a` et l&#039;état des services ; ne pas supprimer les données persistantes&lt;br /&gt;
&lt;br /&gt;
=== Sauvegarde avant intervention ===&lt;br /&gt;
* Quadlets : `/home/loic/.config/containers/systemd/hermes.container` et `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* réseau : `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* environnement : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* configuration et données : `/media/loic/nem/hermes`&lt;br /&gt;
* conserver les sauvegardes hors du répertoire remplacé, par exemple dans `/home/loic/backups`&lt;br /&gt;
&lt;br /&gt;
=== Retour arrière ===&lt;br /&gt;
* arrêter `hermes-cdp.service` puis `hermes.service`&lt;br /&gt;
* restaurer les fichiers sauvegardés sans supprimer `/media/loic/nem/hermes`&lt;br /&gt;
* exécuter `systemctl --user daemon-reload`&lt;br /&gt;
* redémarrer dans l&#039;ordre réseau, Hermes, puis CDP&lt;br /&gt;
* vérifier les journaux et `/json/version` avant de conclure&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `/media/loic/nem/hermes:/opt/data`&lt;br /&gt;
&lt;br /&gt;
Contenu notable dans la persistance :&lt;br /&gt;
* `config.yaml`&lt;br /&gt;
* historiques / sessions Hermes&lt;br /&gt;
* mémoire et skills synchronisés par Hermes&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Podman rootless&lt;br /&gt;
* Ollama local via `http://host.containers.internal:11434/v1`&lt;br /&gt;
* second bot Telegram dédié avec token distinct de l&#039;instance OpenClaw existante&lt;br /&gt;
* package Python `ddgs` installé via `hermes tools post-setup ddgs` le `13 juillet 2026`&lt;br /&gt;
* clé API Tavily injectée via `hermes.env` le `13 juillet 2026`&lt;br /&gt;
* service `hermes-cdp.service` indépendant, relié à Hermes par `hermes-net` depuis le `16 juillet 2026`&lt;br /&gt;
&lt;br /&gt;
== Modèle LLM principal ==&lt;br /&gt;
Configuration Hermes actuellement retenue :&lt;br /&gt;
* provider : `custom`&lt;br /&gt;
* backend : API Ollama locale sur `http://host.containers.internal:11434/v1`&lt;br /&gt;
* modèle par défaut : `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* contexte cible : `131072` tokens&lt;br /&gt;
&lt;br /&gt;
== Outils et backends activés ==&lt;br /&gt;
Activation explicite actuellement retenue dans `config.yaml` :&lt;br /&gt;
* `web.search_backend: ddgs`&lt;br /&gt;
* `web.extract_backend: tavily`&lt;br /&gt;
* `browser.cdp_url: http://10.89.12.2:9222`&lt;br /&gt;
&lt;br /&gt;
Conséquences :&lt;br /&gt;
* `web_search` devient disponible sans clé API&lt;br /&gt;
* `web_extract` devient disponible via Tavily pour les URLs HTTP/HTTPS et le rendu markdown&lt;br /&gt;
* `browser_cdp` et `browser_dialog` deviennent disponibles sans exposer CDP sur le réseau hôte&lt;br /&gt;
&lt;br /&gt;
Backends non activés à ce stade :&lt;br /&gt;
* aucun backend `image_gen`&lt;br /&gt;
&lt;br /&gt;
== Intégration Telegram préparée ==&lt;br /&gt;
Configuration locale maintenant active :&lt;br /&gt;
* fichier dédié : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* allowlist utilisateur configurée sur l&#039;identifiant Telegram de Loïc : `5910858583`&lt;br /&gt;
* canal home Telegram préparé sur `5910858583`&lt;br /&gt;
* bot dédié configuré : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Important :&lt;br /&gt;
* le token du bot dédié est maintenant renseigné dans `hermes.env`&lt;br /&gt;
* il faut un bot distinct de `@LoicBoBBot` pour éviter le conflit `getUpdates` avec OpenClaw&lt;br /&gt;
&lt;br /&gt;
Variables prévues dans `hermes.env` :&lt;br /&gt;
* `TELEGRAM_ALLOWED_USERS=5910858583`&lt;br /&gt;
* `TELEGRAM_HOME_CHANNEL=5910858583`&lt;br /&gt;
* `TELEGRAM_BOT_TOKEN=...` configuré pour `@LoicHermesBot`&lt;br /&gt;
* `TAVILY_API_KEY=...` configurée sans etre documentée en clair dans cette page&lt;br /&gt;
&lt;br /&gt;
== Procédure pour finaliser le second bot ==&lt;br /&gt;
Bot dédié déjà créé et validé :&lt;br /&gt;
* nom : `Hermes`&lt;br /&gt;
* username : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Pour refaire la procédure sur une autre instance :&lt;br /&gt;
* créer un bot dédié via `@BotFather`&lt;br /&gt;
* renseigner `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `systemctl --user daemon-reload`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* vérifier `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* `ss -ltn | rg 8642`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import check_web_api_key; print(check_web_api_key())&amp;quot;`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import _get_search_backend,_get_extract_backend; print(_get_search_backend(), _get_extract_backend())&amp;quot;`&lt;br /&gt;
* `podman exec hermes curl -fsS http://10.89.12.2:9222/json/version`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.browser_cdp_tool import _browser_cdp_check; print(_browser_cdp_check())&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
Interprétation rapide :&lt;br /&gt;
* si le service tourne mais logue `No messaging platforms enabled`, le token Telegram n&#039;est pas encore actif&lt;br /&gt;
* si le service refuse de démarrer après ajout du token, vérifier d&#039;abord le format du token et l&#039;unicité du bot&lt;br /&gt;
* si un conflit de token apparaît, s&#039;assurer que le bot Hermes n&#039;est pas le même que celui d&#039;OpenClaw&lt;br /&gt;
* si Telegram est bien pris en compte, les logs montrent une phase de connexion du type `Connecting to Telegram`&lt;br /&gt;
* si `check_web_api_key()` renvoie `True` avec `search_provider=ddgs` et `extract_provider=tavily`, la recherche et l&#039;extraction web sont activées&lt;br /&gt;
* si `curl http://10.89.12.2:9222/json/version` renvoie un `webSocketDebuggerUrl` depuis le conteneur Hermes, la cible CDP est joignable&lt;br /&gt;
* ne pas rétablir `--network container:hermes` : un conteneur CDP dépendant empêcherait Podman de recréer Hermes lors d&#039;une mise à jour&lt;br /&gt;
* si `_browser_cdp_check()` renvoie `True`, `browser_cdp` et `browser_dialog` doivent etre exposes par Hermes&lt;br /&gt;
&lt;br /&gt;
== Plan d&#039;activation des potentiels ==&lt;br /&gt;
Checklist de suivi :&lt;br /&gt;
* [x] sécuriser le runtime rootless + backups de config&lt;br /&gt;
* [x] activer Telegram dédié&lt;br /&gt;
* [x] basculer sur le modèle local `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] activer `web_search` gratuit via `ddgs`&lt;br /&gt;
* [x] choisir et brancher un backend `web_extract`&lt;br /&gt;
* [x] fournir un endpoint CDP persistant pour `browser_cdp`&lt;br /&gt;
* [ ] choisir et brancher un backend `image_generate`&lt;br /&gt;
* [ ] décider si un contexte desktop dédié doit être exposé à Hermes&lt;br /&gt;
&lt;br /&gt;
Intervention attendue de Loïc pour débloquer la suite :&lt;br /&gt;
* `image_generate` : fournir un provider et un secret ou une auth exploitable dans le conteneur (`OPENAI_API_KEY`, `FAL_KEY`, ou auth Codex dans Hermes)&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
Avant modification de la config critique :&lt;br /&gt;
* sauvegarder le quadlet Hermes&lt;br /&gt;
* sauvegarder `hermes.env`&lt;br /&gt;
* sauvegarder la persistance `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* restaurer `hermes.container`&lt;br /&gt;
* restaurer `hermes.env`&lt;br /&gt;
* restaurer `/media/loic/nem/hermes`&lt;br /&gt;
* recharger systemd user&lt;br /&gt;
* relancer `hermes.service`&lt;br /&gt;
&lt;br /&gt;
== Rollback ==&lt;br /&gt;
Si l&#039;intégration Telegram du second bot casse Hermes :&lt;br /&gt;
* recommenter `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* redémarrer `hermes.service`&lt;br /&gt;
* revenir au backup du quadlet si nécessaire&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de provider LLM, de chemin de persistance, de port local, de bot Telegram ou de stratégie d&#039;allowlist, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=187</id>
		<title>Trace install tas - Hermes Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=187"/>
		<updated>2026-07-16T09:46:07Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation exploitation Hermes et migration CDP indépendante&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hermes Agent =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Agent IA outillé exposé via sa gateway de messagerie, avec état persistant sur disque dédié.&lt;br /&gt;
&lt;br /&gt;
== Statut opérationnel ==&lt;br /&gt;
Dernière mise à jour documentaire : &#039;&#039;&#039;16 juillet 2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Capacités actuellement actives et vérifiées :&lt;br /&gt;
* [x] gateway Telegram dédiée via `@LoicHermesBot`&lt;br /&gt;
* [x] modèle local Ollama via `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] outils fichiers / terminal / mémoire / délégation&lt;br /&gt;
* [x] browser local embarqué&lt;br /&gt;
* [x] `browser_cdp` via Chrome dédié `hermes-cdp.service`&lt;br /&gt;
* [x] `browser_dialog` via le même endpoint CDP&lt;br /&gt;
* [x] STT local et TTS Edge&lt;br /&gt;
* [x] `web_search` via backend `ddgs` sans clé API&lt;br /&gt;
* [x] `web_extract` via backend `tavily`&lt;br /&gt;
&lt;br /&gt;
Capacités encore bloquées ou partielles :&lt;br /&gt;
* [ ] `image_generate`&lt;br /&gt;
* [ ] `read_terminal` et `close_terminal` hors application desktop Hermes&lt;br /&gt;
* [ ] `computer_use` dans ce gateway Telegram sans contexte desktop/X11&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local service : `127.0.0.1:8642`&lt;br /&gt;
* Public HTTP : aucun par défaut&lt;br /&gt;
* Messagerie prévue : Telegram via un second bot dédié à créer&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* `8642` local uniquement&lt;br /&gt;
* `9222` non publié ; accessible uniquement sur le réseau Podman privé `hermes-net`&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlets systemd user : `hermes.container` et `hermes-cdp.container` ; unités générées : `hermes.service` et `hermes-cdp.service`.&lt;br /&gt;
&lt;br /&gt;
Réseau privé :&lt;br /&gt;
* unité idempotente `hermes-network.service`&lt;br /&gt;
* réseau CNI `hermes-net` sur `10.89.12.0/24`&lt;br /&gt;
* IP CDP réservée : `10.89.12.2`&lt;br /&gt;
* les cycles de vie Hermes et CDP sont indépendants&lt;br /&gt;
&lt;br /&gt;
Commande de démarrage :&lt;br /&gt;
* `gateway run`&lt;br /&gt;
&lt;br /&gt;
Image :&lt;br /&gt;
* `docker.io/nousresearch/hermes-agent:latest`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes/config.yaml`&lt;br /&gt;
&lt;br /&gt;
Sources de vérité :&lt;br /&gt;
* le quadlet gère le runtime Podman rootless&lt;br /&gt;
* `hermes.env` porte les secrets / variables Telegram&lt;br /&gt;
* `config.yaml` porte la configuration non secrète Hermes&lt;br /&gt;
&lt;br /&gt;
== Exploitation courante ==&lt;br /&gt;
Toutes les commandes ci-dessous sont exécutées avec le compte utilisateur `loic` ; ne pas ajouter `sudo` aux commandes `systemctl --user` ou `podman`.&lt;br /&gt;
&lt;br /&gt;
=== Appliquer une modification de configuration ===&lt;br /&gt;
Après sauvegarde préalable du fichier concerné :&lt;br /&gt;
* modification de `config.yaml` ou `hermes.env` : `systemctl --user restart hermes.service`&lt;br /&gt;
* modification d&#039;un fichier Quadlet `.container` : `systemctl --user daemon-reload`, puis redémarrer uniquement le service concerné&lt;br /&gt;
* vérifier ensuite : `systemctl --user is-active hermes.service hermes-cdp.service hermes-network.service`&lt;br /&gt;
&lt;br /&gt;
=== Démarrage ===&lt;br /&gt;
* démarrer le réseau privé : `systemctl --user start hermes-network.service`&lt;br /&gt;
* démarrer Hermes : `systemctl --user start hermes.service`&lt;br /&gt;
* démarrer CDP : `systemctl --user start hermes-cdp.service`&lt;br /&gt;
* démarrage groupé : `systemctl --user start hermes-network.service hermes.service hermes-cdp.service`&lt;br /&gt;
&lt;br /&gt;
=== Arrêt ===&lt;br /&gt;
* arrêt normal complet : `systemctl --user stop hermes-cdp.service hermes.service`&lt;br /&gt;
* il n&#039;est normalement pas nécessaire d&#039;arrêter `hermes-network.service`; le réseau persiste volontairement&lt;br /&gt;
* ne pas supprimer manuellement le conteneur `hermes` tant qu&#039;un ancien conteneur utilisant `--network container:hermes` existe encore&lt;br /&gt;
&lt;br /&gt;
=== Redémarrage ===&lt;br /&gt;
* redémarrer Hermes seul : `systemctl --user restart hermes.service`&lt;br /&gt;
* redémarrer Chrome CDP seul : `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* le redémarrage de l&#039;un ne doit pas redémarrer ni bloquer l&#039;autre&lt;br /&gt;
* après modification des Quadlets : `systemctl --user daemon-reload &amp;amp;&amp;amp; systemctl --user restart hermes.service hermes-cdp.service`&lt;br /&gt;
&lt;br /&gt;
=== État et journaux ===&lt;br /&gt;
* état synthétique : `systemctl --user is-active hermes-network.service hermes.service hermes-cdp.service`&lt;br /&gt;
* état détaillé Hermes : `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* état détaillé CDP : `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* logs Hermes : `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* logs CDP : `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* suivre les logs : `journalctl --user -f -u hermes.service -u hermes-cdp.service`&lt;br /&gt;
* état Podman : `podman ps --filter name=hermes`&lt;br /&gt;
&lt;br /&gt;
=== Contrôles de santé ===&lt;br /&gt;
* vérifier le port local Hermes : `ss -ltn | rg &#039;:8642&#039;`&lt;br /&gt;
* vérifier CDP depuis Hermes : `podman exec hermes curl -fsS http://10.89.12.2:9222/json/version`&lt;br /&gt;
* la réponse CDP doit contenir `webSocketDebuggerUrl`&lt;br /&gt;
* vérifier que CDP n&#039;est pas publié sur l&#039;hôte : `podman inspect hermes-cdp --format &#039;{{json .NetworkSettings.Ports}}&#039;`&lt;br /&gt;
* vérifier l&#039;IP privée CDP : `podman inspect hermes-cdp --format &#039;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&#039;`&lt;br /&gt;
&lt;br /&gt;
=== Mise à jour des images ===&lt;br /&gt;
* simulation : `podman auto-update --dry-run`&lt;br /&gt;
* mise à jour gérée : `systemctl --user start podman-auto-update.service`&lt;br /&gt;
* contrôler ensuite les trois services et les journaux&lt;br /&gt;
* sur Podman 4.6.2, si le dry-run mentionne un ancien ID absent, vérifier d&#039;abord `podman ps -a` et l&#039;état des services ; ne pas supprimer les données persistantes&lt;br /&gt;
&lt;br /&gt;
=== Sauvegarde avant intervention ===&lt;br /&gt;
* Quadlets : `/home/loic/.config/containers/systemd/hermes.container` et `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* réseau : `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* environnement : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* configuration et données : `/media/loic/nem/hermes`&lt;br /&gt;
* conserver les sauvegardes hors du répertoire remplacé, par exemple dans `/home/loic/backups`&lt;br /&gt;
&lt;br /&gt;
=== Retour arrière ===&lt;br /&gt;
* arrêter `hermes-cdp.service` puis `hermes.service`&lt;br /&gt;
* restaurer les fichiers sauvegardés sans supprimer `/media/loic/nem/hermes`&lt;br /&gt;
* exécuter `systemctl --user daemon-reload`&lt;br /&gt;
* redémarrer dans l&#039;ordre réseau, Hermes, puis CDP&lt;br /&gt;
* vérifier les journaux et `/json/version` avant de conclure&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `/media/loic/nem/hermes:/opt/data`&lt;br /&gt;
&lt;br /&gt;
Contenu notable dans la persistance :&lt;br /&gt;
* `config.yaml`&lt;br /&gt;
* historiques / sessions Hermes&lt;br /&gt;
* mémoire et skills synchronisés par Hermes&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Podman rootless&lt;br /&gt;
* Ollama local via `http://host.containers.internal:11434/v1`&lt;br /&gt;
* second bot Telegram dédié avec token distinct de l&#039;instance OpenClaw existante&lt;br /&gt;
* package Python `ddgs` installé via `hermes tools post-setup ddgs` le `13 juillet 2026`&lt;br /&gt;
* clé API Tavily injectée via `hermes.env` le `13 juillet 2026`&lt;br /&gt;
* service `hermes-cdp.service` indépendant, relié à Hermes par `hermes-net` depuis le `16 juillet 2026`&lt;br /&gt;
&lt;br /&gt;
== Modèle LLM principal ==&lt;br /&gt;
Configuration Hermes actuellement retenue :&lt;br /&gt;
* provider : `custom`&lt;br /&gt;
* backend : API Ollama locale sur `http://host.containers.internal:11434/v1`&lt;br /&gt;
* modèle par défaut : `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* contexte cible : `131072` tokens&lt;br /&gt;
&lt;br /&gt;
== Outils et backends activés ==&lt;br /&gt;
Activation explicite actuellement retenue dans `config.yaml` :&lt;br /&gt;
* `web.search_backend: ddgs`&lt;br /&gt;
* `web.extract_backend: tavily`&lt;br /&gt;
* `browser.cdp_url: http://10.89.12.2:9222`&lt;br /&gt;
&lt;br /&gt;
Conséquences :&lt;br /&gt;
* `web_search` devient disponible sans clé API&lt;br /&gt;
* `web_extract` devient disponible via Tavily pour les URLs HTTP/HTTPS et le rendu markdown&lt;br /&gt;
* `browser_cdp` et `browser_dialog` deviennent disponibles sans exposer CDP sur le réseau hôte&lt;br /&gt;
&lt;br /&gt;
Backends non activés à ce stade :&lt;br /&gt;
* aucun backend `image_gen`&lt;br /&gt;
&lt;br /&gt;
== Intégration Telegram préparée ==&lt;br /&gt;
Configuration locale maintenant active :&lt;br /&gt;
* fichier dédié : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* allowlist utilisateur configurée sur l&#039;identifiant Telegram de Loïc : `5910858583`&lt;br /&gt;
* canal home Telegram préparé sur `5910858583`&lt;br /&gt;
* bot dédié configuré : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Important :&lt;br /&gt;
* le token du bot dédié est maintenant renseigné dans `hermes.env`&lt;br /&gt;
* il faut un bot distinct de `@LoicBoBBot` pour éviter le conflit `getUpdates` avec OpenClaw&lt;br /&gt;
&lt;br /&gt;
Variables prévues dans `hermes.env` :&lt;br /&gt;
* `TELEGRAM_ALLOWED_USERS=5910858583`&lt;br /&gt;
* `TELEGRAM_HOME_CHANNEL=5910858583`&lt;br /&gt;
* `TELEGRAM_BOT_TOKEN=...` configuré pour `@LoicHermesBot`&lt;br /&gt;
* `TAVILY_API_KEY=...` configurée sans etre documentée en clair dans cette page&lt;br /&gt;
&lt;br /&gt;
== Procédure pour finaliser le second bot ==&lt;br /&gt;
Bot dédié déjà créé et validé :&lt;br /&gt;
* nom : `Hermes`&lt;br /&gt;
* username : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Pour refaire la procédure sur une autre instance :&lt;br /&gt;
* créer un bot dédié via `@BotFather`&lt;br /&gt;
* renseigner `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `systemctl --user daemon-reload`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* vérifier `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* `ss -ltn | rg 8642`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import check_web_api_key; print(check_web_api_key())&amp;quot;`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import _get_search_backend,_get_extract_backend; print(_get_search_backend(), _get_extract_backend())&amp;quot;`&lt;br /&gt;
* `podman exec hermes curl -fsS http://10.89.12.2:9222/json/version`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.browser_cdp_tool import _browser_cdp_check; print(_browser_cdp_check())&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
Interprétation rapide :&lt;br /&gt;
* si le service tourne mais logue `No messaging platforms enabled`, le token Telegram n&#039;est pas encore actif&lt;br /&gt;
* si le service refuse de démarrer après ajout du token, vérifier d&#039;abord le format du token et l&#039;unicité du bot&lt;br /&gt;
* si un conflit de token apparaît, s&#039;assurer que le bot Hermes n&#039;est pas le même que celui d&#039;OpenClaw&lt;br /&gt;
* si Telegram est bien pris en compte, les logs montrent une phase de connexion du type `Connecting to Telegram`&lt;br /&gt;
* si `check_web_api_key()` renvoie `True` avec `search_provider=ddgs` et `extract_provider=tavily`, la recherche et l&#039;extraction web sont activées&lt;br /&gt;
* si `curl http://10.89.12.2:9222/json/version` renvoie un `webSocketDebuggerUrl` depuis le conteneur Hermes, la cible CDP est joignable&lt;br /&gt;
* ne pas rétablir `--network container:hermes` : un conteneur CDP dépendant empêcherait Podman de recréer Hermes lors d&#039;une mise à jour&lt;br /&gt;
* si `_browser_cdp_check()` renvoie `True`, `browser_cdp` et `browser_dialog` doivent etre exposes par Hermes&lt;br /&gt;
&lt;br /&gt;
== Plan d&#039;activation des potentiels ==&lt;br /&gt;
Checklist de suivi :&lt;br /&gt;
* [x] sécuriser le runtime rootless + backups de config&lt;br /&gt;
* [x] activer Telegram dédié&lt;br /&gt;
* [x] basculer sur le modèle local `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] activer `web_search` gratuit via `ddgs`&lt;br /&gt;
* [x] choisir et brancher un backend `web_extract`&lt;br /&gt;
* [x] fournir un endpoint CDP persistant pour `browser_cdp`&lt;br /&gt;
* [ ] choisir et brancher un backend `image_generate`&lt;br /&gt;
* [ ] décider si un contexte desktop dédié doit être exposé à Hermes&lt;br /&gt;
&lt;br /&gt;
Intervention attendue de Loïc pour débloquer la suite :&lt;br /&gt;
* `image_generate` : fournir un provider et un secret ou une auth exploitable dans le conteneur (`OPENAI_API_KEY`, `FAL_KEY`, ou auth Codex dans Hermes)&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes-cdp.container`&lt;br /&gt;
* `/home/loic/.config/systemd/user/hermes-network.service`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
Avant modification de la config critique :&lt;br /&gt;
* sauvegarder le quadlet Hermes&lt;br /&gt;
* sauvegarder `hermes.env`&lt;br /&gt;
* sauvegarder la persistance `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* restaurer `hermes.container`&lt;br /&gt;
* restaurer `hermes.env`&lt;br /&gt;
* restaurer `/media/loic/nem/hermes`&lt;br /&gt;
* recharger systemd user&lt;br /&gt;
* relancer `hermes.service`&lt;br /&gt;
&lt;br /&gt;
== Rollback ==&lt;br /&gt;
Si l&#039;intégration Telegram du second bot casse Hermes :&lt;br /&gt;
* recommenter `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* redémarrer `hermes.service`&lt;br /&gt;
* revenir au backup du quadlet si nécessaire&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de provider LLM, de chemin de persistance, de port local, de bot Telegram ou de stratégie d&#039;allowlist, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=186</id>
		<title>Trace install tas - Hermes Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=186"/>
		<updated>2026-07-13T17:13:55Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documente l activation de browser_cdp sur Hermes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hermes Agent =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Agent IA outillé exposé via sa gateway de messagerie, avec état persistant sur disque dédié.&lt;br /&gt;
&lt;br /&gt;
== Statut opérationnel ==&lt;br /&gt;
Dernière mise à jour documentaire : &#039;&#039;&#039;13 juillet 2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Capacités actuellement actives et vérifiées :&lt;br /&gt;
* [x] gateway Telegram dédiée via `@LoicHermesBot`&lt;br /&gt;
* [x] modèle local Ollama via `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] outils fichiers / terminal / mémoire / délégation&lt;br /&gt;
* [x] browser local embarqué&lt;br /&gt;
* [x] `browser_cdp` via Chrome dédié `hermes-cdp.service`&lt;br /&gt;
* [x] `browser_dialog` via le même endpoint CDP&lt;br /&gt;
* [x] STT local et TTS Edge&lt;br /&gt;
* [x] `web_search` via backend `ddgs` sans clé API&lt;br /&gt;
* [x] `web_extract` via backend `tavily`&lt;br /&gt;
&lt;br /&gt;
Capacités encore bloquées ou partielles :&lt;br /&gt;
* [ ] `image_generate`&lt;br /&gt;
* [ ] `read_terminal` et `close_terminal` hors application desktop Hermes&lt;br /&gt;
* [ ] `computer_use` dans ce gateway Telegram sans contexte desktop/X11&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local service : `127.0.0.1:8642`&lt;br /&gt;
* Public HTTP : aucun par défaut&lt;br /&gt;
* Messagerie prévue : Telegram via un second bot dédié à créer&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* `8642` local uniquement&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet systemd user : `hermes.container` ; unité générée : `hermes.service`.&lt;br /&gt;
&lt;br /&gt;
Commande de démarrage :&lt;br /&gt;
* `gateway run`&lt;br /&gt;
&lt;br /&gt;
Image :&lt;br /&gt;
* `docker.io/nousresearch/hermes-agent:latest`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes/config.yaml`&lt;br /&gt;
&lt;br /&gt;
Sources de vérité :&lt;br /&gt;
* le quadlet gère le runtime Podman rootless&lt;br /&gt;
* `hermes.env` porte les secrets / variables Telegram&lt;br /&gt;
* `config.yaml` porte la configuration non secrète Hermes&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `/media/loic/nem/hermes:/opt/data`&lt;br /&gt;
&lt;br /&gt;
Contenu notable dans la persistance :&lt;br /&gt;
* `config.yaml`&lt;br /&gt;
* historiques / sessions Hermes&lt;br /&gt;
* mémoire et skills synchronisés par Hermes&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Podman rootless&lt;br /&gt;
* Ollama local via `http://host.containers.internal:11434/v1`&lt;br /&gt;
* second bot Telegram dédié avec token distinct de l&#039;instance OpenClaw existante&lt;br /&gt;
* package Python `ddgs` installé via `hermes tools post-setup ddgs` le `13 juillet 2026`&lt;br /&gt;
* clé API Tavily injectée via `hermes.env` le `13 juillet 2026`&lt;br /&gt;
* service `hermes-cdp.service` attaché au namespace réseau du conteneur Hermes le `13 juillet 2026`&lt;br /&gt;
&lt;br /&gt;
== Modèle LLM principal ==&lt;br /&gt;
Configuration Hermes actuellement retenue :&lt;br /&gt;
* provider : `custom`&lt;br /&gt;
* backend : API Ollama locale sur `http://host.containers.internal:11434/v1`&lt;br /&gt;
* modèle par défaut : `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* contexte cible : `131072` tokens&lt;br /&gt;
&lt;br /&gt;
== Outils et backends activés ==&lt;br /&gt;
Activation explicite actuellement retenue dans `config.yaml` :&lt;br /&gt;
* `web.search_backend: ddgs`&lt;br /&gt;
* `web.extract_backend: tavily`&lt;br /&gt;
* `browser.cdp_url: http://127.0.0.1:9222`&lt;br /&gt;
&lt;br /&gt;
Conséquences :&lt;br /&gt;
* `web_search` devient disponible sans clé API&lt;br /&gt;
* `web_extract` devient disponible via Tavily pour les URLs HTTP/HTTPS et le rendu markdown&lt;br /&gt;
* `browser_cdp` et `browser_dialog` deviennent disponibles sans exposer CDP sur le réseau hôte&lt;br /&gt;
&lt;br /&gt;
Backends non activés à ce stade :&lt;br /&gt;
* aucun backend `image_gen`&lt;br /&gt;
&lt;br /&gt;
== Intégration Telegram préparée ==&lt;br /&gt;
Configuration locale maintenant active :&lt;br /&gt;
* fichier dédié : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* allowlist utilisateur configurée sur l&#039;identifiant Telegram de Loïc : `5910858583`&lt;br /&gt;
* canal home Telegram préparé sur `5910858583`&lt;br /&gt;
* bot dédié configuré : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Important :&lt;br /&gt;
* le token du bot dédié est maintenant renseigné dans `hermes.env`&lt;br /&gt;
* il faut un bot distinct de `@LoicBoBBot` pour éviter le conflit `getUpdates` avec OpenClaw&lt;br /&gt;
&lt;br /&gt;
Variables prévues dans `hermes.env` :&lt;br /&gt;
* `TELEGRAM_ALLOWED_USERS=5910858583`&lt;br /&gt;
* `TELEGRAM_HOME_CHANNEL=5910858583`&lt;br /&gt;
* `TELEGRAM_BOT_TOKEN=...` configuré pour `@LoicHermesBot`&lt;br /&gt;
* `TAVILY_API_KEY=...` configurée sans etre documentée en clair dans cette page&lt;br /&gt;
&lt;br /&gt;
== Procédure pour finaliser le second bot ==&lt;br /&gt;
Bot dédié déjà créé et validé :&lt;br /&gt;
* nom : `Hermes`&lt;br /&gt;
* username : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Pour refaire la procédure sur une autre instance :&lt;br /&gt;
* créer un bot dédié via `@BotFather`&lt;br /&gt;
* renseigner `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `systemctl --user daemon-reload`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* vérifier `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* `systemctl --user status hermes-cdp.service --no-pager -l`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* `systemctl --user restart hermes-cdp.service`&lt;br /&gt;
* `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* `journalctl --user -u hermes-cdp.service -n 100 --no-pager`&lt;br /&gt;
* `ss -ltn | rg 8642`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import check_web_api_key; print(check_web_api_key())&amp;quot;`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import _get_search_backend,_get_extract_backend; print(_get_search_backend(), _get_extract_backend())&amp;quot;`&lt;br /&gt;
* `podman exec hermes curl -fsS http://127.0.0.1:9222/json/version`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.browser_cdp_tool import _browser_cdp_check; print(_browser_cdp_check())&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
Interprétation rapide :&lt;br /&gt;
* si le service tourne mais logue `No messaging platforms enabled`, le token Telegram n&#039;est pas encore actif&lt;br /&gt;
* si le service refuse de démarrer après ajout du token, vérifier d&#039;abord le format du token et l&#039;unicité du bot&lt;br /&gt;
* si un conflit de token apparaît, s&#039;assurer que le bot Hermes n&#039;est pas le même que celui d&#039;OpenClaw&lt;br /&gt;
* si Telegram est bien pris en compte, les logs montrent une phase de connexion du type `Connecting to Telegram`&lt;br /&gt;
* si `check_web_api_key()` renvoie `True` avec `search_provider=ddgs` et `extract_provider=tavily`, la recherche et l&#039;extraction web sont activées&lt;br /&gt;
* si `curl http://127.0.0.1:9222/json/version` renvoie un `webSocketDebuggerUrl` depuis le conteneur Hermes, la cible CDP est joignable&lt;br /&gt;
* si `_browser_cdp_check()` renvoie `True`, `browser_cdp` et `browser_dialog` doivent etre exposes par Hermes&lt;br /&gt;
&lt;br /&gt;
== Plan d&#039;activation des potentiels ==&lt;br /&gt;
Checklist de suivi :&lt;br /&gt;
* [x] sécuriser le runtime rootless + backups de config&lt;br /&gt;
* [x] activer Telegram dédié&lt;br /&gt;
* [x] basculer sur le modèle local `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] activer `web_search` gratuit via `ddgs`&lt;br /&gt;
* [x] choisir et brancher un backend `web_extract`&lt;br /&gt;
* [x] fournir un endpoint CDP persistant pour `browser_cdp`&lt;br /&gt;
* [ ] choisir et brancher un backend `image_generate`&lt;br /&gt;
* [ ] décider si un contexte desktop dédié doit être exposé à Hermes&lt;br /&gt;
&lt;br /&gt;
Intervention attendue de Loïc pour débloquer la suite :&lt;br /&gt;
* `image_generate` : fournir un provider et un secret ou une auth exploitable dans le conteneur (`OPENAI_API_KEY`, `FAL_KEY`, ou auth Codex dans Hermes)&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
Avant modification de la config critique :&lt;br /&gt;
* sauvegarder le quadlet Hermes&lt;br /&gt;
* sauvegarder `hermes.env`&lt;br /&gt;
* sauvegarder la persistance `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* restaurer `hermes.container`&lt;br /&gt;
* restaurer `hermes.env`&lt;br /&gt;
* restaurer `/media/loic/nem/hermes`&lt;br /&gt;
* recharger systemd user&lt;br /&gt;
* relancer `hermes.service`&lt;br /&gt;
&lt;br /&gt;
== Rollback ==&lt;br /&gt;
Si l&#039;intégration Telegram du second bot casse Hermes :&lt;br /&gt;
* recommenter `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* redémarrer `hermes.service`&lt;br /&gt;
* revenir au backup du quadlet si nécessaire&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de provider LLM, de chemin de persistance, de port local, de bot Telegram ou de stratégie d&#039;allowlist, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=185</id>
		<title>Trace install tas - Hermes Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=185"/>
		<updated>2026-07-13T12:13:26Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Activation de web_extract via Tavily et mise a jour de la checklist Hermes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hermes Agent =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Agent IA outillé exposé via sa gateway de messagerie, avec état persistant sur disque dédié.&lt;br /&gt;
&lt;br /&gt;
== Statut opérationnel ==&lt;br /&gt;
Dernière mise à jour documentaire : &#039;&#039;&#039;13 juillet 2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Capacités actuellement actives et vérifiées :&lt;br /&gt;
* [x] gateway Telegram dédiée via `@LoicHermesBot`&lt;br /&gt;
* [x] modèle local Ollama via `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] outils fichiers / terminal / mémoire / délégation&lt;br /&gt;
* [x] browser local embarqué&lt;br /&gt;
* [x] STT local et TTS Edge&lt;br /&gt;
* [x] `web_search` via backend `ddgs` sans clé API&lt;br /&gt;
* [x] `web_extract` via backend `tavily`&lt;br /&gt;
&lt;br /&gt;
Capacités encore bloquées ou partielles :&lt;br /&gt;
* [ ] `image_generate`&lt;br /&gt;
* [ ] `browser_cdp` et `browser_dialog`&lt;br /&gt;
* [ ] `read_terminal` et `close_terminal` hors application desktop Hermes&lt;br /&gt;
* [ ] `computer_use` dans ce gateway Telegram sans contexte desktop/X11&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local service : `127.0.0.1:8642`&lt;br /&gt;
* Public HTTP : aucun par défaut&lt;br /&gt;
* Messagerie prévue : Telegram via un second bot dédié à créer&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* `8642` local uniquement&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet systemd user : `hermes.container` ; unité générée : `hermes.service`.&lt;br /&gt;
&lt;br /&gt;
Commande de démarrage :&lt;br /&gt;
* `gateway run`&lt;br /&gt;
&lt;br /&gt;
Image :&lt;br /&gt;
* `docker.io/nousresearch/hermes-agent:latest`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes/config.yaml`&lt;br /&gt;
&lt;br /&gt;
Sources de vérité :&lt;br /&gt;
* le quadlet gère le runtime Podman rootless&lt;br /&gt;
* `hermes.env` porte les secrets / variables Telegram&lt;br /&gt;
* `config.yaml` porte la configuration non secrète Hermes&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `/media/loic/nem/hermes:/opt/data`&lt;br /&gt;
&lt;br /&gt;
Contenu notable dans la persistance :&lt;br /&gt;
* `config.yaml`&lt;br /&gt;
* historiques / sessions Hermes&lt;br /&gt;
* mémoire et skills synchronisés par Hermes&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Podman rootless&lt;br /&gt;
* Ollama local via `http://host.containers.internal:11434/v1`&lt;br /&gt;
* second bot Telegram dédié avec token distinct de l&#039;instance OpenClaw existante&lt;br /&gt;
* package Python `ddgs` installé via `hermes tools post-setup ddgs` le `13 juillet 2026`&lt;br /&gt;
* clé API Tavily injectée via `hermes.env` le `13 juillet 2026`&lt;br /&gt;
&lt;br /&gt;
== Modèle LLM principal ==&lt;br /&gt;
Configuration Hermes actuellement retenue :&lt;br /&gt;
* provider : `custom`&lt;br /&gt;
* backend : API Ollama locale sur `http://host.containers.internal:11434/v1`&lt;br /&gt;
* modèle par défaut : `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* contexte cible : `131072` tokens&lt;br /&gt;
&lt;br /&gt;
== Outils et backends activés ==&lt;br /&gt;
Activation explicite actuellement retenue dans `config.yaml` :&lt;br /&gt;
* `web.search_backend: ddgs`&lt;br /&gt;
* `web.extract_backend: tavily`&lt;br /&gt;
&lt;br /&gt;
Conséquences :&lt;br /&gt;
* `web_search` devient disponible sans clé API&lt;br /&gt;
* `web_extract` devient disponible via Tavily pour les URLs HTTP/HTTPS et le rendu markdown&lt;br /&gt;
&lt;br /&gt;
Backends non activés à ce stade :&lt;br /&gt;
* aucun backend `image_gen`&lt;br /&gt;
* aucun `browser.cdp_url`&lt;br /&gt;
&lt;br /&gt;
== Intégration Telegram préparée ==&lt;br /&gt;
Configuration locale maintenant active :&lt;br /&gt;
* fichier dédié : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* allowlist utilisateur configurée sur l&#039;identifiant Telegram de Loïc : `5910858583`&lt;br /&gt;
* canal home Telegram préparé sur `5910858583`&lt;br /&gt;
* bot dédié configuré : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Important :&lt;br /&gt;
* le token du bot dédié est maintenant renseigné dans `hermes.env`&lt;br /&gt;
* il faut un bot distinct de `@LoicBoBBot` pour éviter le conflit `getUpdates` avec OpenClaw&lt;br /&gt;
&lt;br /&gt;
Variables prévues dans `hermes.env` :&lt;br /&gt;
* `TELEGRAM_ALLOWED_USERS=5910858583`&lt;br /&gt;
* `TELEGRAM_HOME_CHANNEL=5910858583`&lt;br /&gt;
* `TELEGRAM_BOT_TOKEN=...` configuré pour `@LoicHermesBot`&lt;br /&gt;
* `TAVILY_API_KEY=...` configurée sans etre documentée en clair dans cette page&lt;br /&gt;
&lt;br /&gt;
== Procédure pour finaliser le second bot ==&lt;br /&gt;
Bot dédié déjà créé et validé :&lt;br /&gt;
* nom : `Hermes`&lt;br /&gt;
* username : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Pour refaire la procédure sur une autre instance :&lt;br /&gt;
* créer un bot dédié via `@BotFather`&lt;br /&gt;
* renseigner `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `systemctl --user daemon-reload`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* vérifier `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* `ss -ltn | rg 8642`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import check_web_api_key; print(check_web_api_key())&amp;quot;`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import _get_search_backend,_get_extract_backend; print(_get_search_backend(), _get_extract_backend())&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
Interprétation rapide :&lt;br /&gt;
* si le service tourne mais logue `No messaging platforms enabled`, le token Telegram n&#039;est pas encore actif&lt;br /&gt;
* si le service refuse de démarrer après ajout du token, vérifier d&#039;abord le format du token et l&#039;unicité du bot&lt;br /&gt;
* si un conflit de token apparaît, s&#039;assurer que le bot Hermes n&#039;est pas le même que celui d&#039;OpenClaw&lt;br /&gt;
* si Telegram est bien pris en compte, les logs montrent une phase de connexion du type `Connecting to Telegram`&lt;br /&gt;
* si `check_web_api_key()` renvoie `True` avec `search_provider=ddgs` et `extract_provider=tavily`, la recherche et l&#039;extraction web sont activées&lt;br /&gt;
&lt;br /&gt;
== Plan d&#039;activation des potentiels ==&lt;br /&gt;
Checklist de suivi :&lt;br /&gt;
* [x] sécuriser le runtime rootless + backups de config&lt;br /&gt;
* [x] activer Telegram dédié&lt;br /&gt;
* [x] basculer sur le modèle local `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] activer `web_search` gratuit via `ddgs`&lt;br /&gt;
* [x] choisir et brancher un backend `web_extract`&lt;br /&gt;
* [ ] choisir et brancher un backend `image_generate`&lt;br /&gt;
* [ ] fournir un endpoint CDP persistant si l&#039;on veut `browser_cdp`&lt;br /&gt;
* [ ] décider si un contexte desktop dédié doit être exposé à Hermes&lt;br /&gt;
&lt;br /&gt;
Intervention attendue de Loïc pour débloquer la suite :&lt;br /&gt;
* `image_generate` : fournir un provider et un secret ou une auth exploitable dans le conteneur (`OPENAI_API_KEY`, `FAL_KEY`, ou auth Codex dans Hermes)&lt;br /&gt;
* `browser_cdp` : fournir une cible CDP réelle et durable (`browser.cdp_url`)&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
Avant modification de la config critique :&lt;br /&gt;
* sauvegarder le quadlet Hermes&lt;br /&gt;
* sauvegarder `hermes.env`&lt;br /&gt;
* sauvegarder la persistance `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* restaurer `hermes.container`&lt;br /&gt;
* restaurer `hermes.env`&lt;br /&gt;
* restaurer `/media/loic/nem/hermes`&lt;br /&gt;
* recharger systemd user&lt;br /&gt;
* relancer `hermes.service`&lt;br /&gt;
&lt;br /&gt;
== Rollback ==&lt;br /&gt;
Si l&#039;intégration Telegram du second bot casse Hermes :&lt;br /&gt;
* recommenter `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* redémarrer `hermes.service`&lt;br /&gt;
* revenir au backup du quadlet si nécessaire&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de provider LLM, de chemin de persistance, de port local, de bot Telegram ou de stratégie d&#039;allowlist, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=184</id>
		<title>Trace install tas - Hermes Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hermes_Agent&amp;diff=184"/>
		<updated>2026-07-13T08:57:56Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Publication de la page Trace install tas - Hermes Agent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hermes Agent =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Agent IA outillé exposé via sa gateway de messagerie, avec état persistant sur disque dédié.&lt;br /&gt;
&lt;br /&gt;
== Statut opérationnel ==&lt;br /&gt;
Dernière mise à jour documentaire : &#039;&#039;&#039;13 juillet 2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Capacités actuellement actives et vérifiées :&lt;br /&gt;
* [x] gateway Telegram dédiée via `@LoicHermesBot`&lt;br /&gt;
* [x] modèle local Ollama via `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] outils fichiers / terminal / mémoire / délégation&lt;br /&gt;
* [x] browser local embarqué&lt;br /&gt;
* [x] STT local et TTS Edge&lt;br /&gt;
* [x] `web_search` via backend `ddgs` sans clé API&lt;br /&gt;
&lt;br /&gt;
Capacités encore bloquées ou partielles :&lt;br /&gt;
* [ ] `web_extract` avec backend dédié&lt;br /&gt;
* [ ] `image_generate`&lt;br /&gt;
* [ ] `browser_cdp` et `browser_dialog`&lt;br /&gt;
* [ ] `read_terminal` et `close_terminal` hors application desktop Hermes&lt;br /&gt;
* [ ] `computer_use` dans ce gateway Telegram sans contexte desktop/X11&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local service : `127.0.0.1:8642`&lt;br /&gt;
* Public HTTP : aucun par défaut&lt;br /&gt;
* Messagerie prévue : Telegram via un second bot dédié à créer&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* `8642` local uniquement&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet systemd user : `hermes.container` ; unité générée : `hermes.service`.&lt;br /&gt;
&lt;br /&gt;
Commande de démarrage :&lt;br /&gt;
* `gateway run`&lt;br /&gt;
&lt;br /&gt;
Image :&lt;br /&gt;
* `docker.io/nousresearch/hermes-agent:latest`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes/config.yaml`&lt;br /&gt;
&lt;br /&gt;
Sources de vérité :&lt;br /&gt;
* le quadlet gère le runtime Podman rootless&lt;br /&gt;
* `hermes.env` porte les secrets / variables Telegram&lt;br /&gt;
* `config.yaml` porte la configuration non secrète Hermes&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `/media/loic/nem/hermes:/opt/data`&lt;br /&gt;
&lt;br /&gt;
Contenu notable dans la persistance :&lt;br /&gt;
* `config.yaml`&lt;br /&gt;
* historiques / sessions Hermes&lt;br /&gt;
* mémoire et skills synchronisés par Hermes&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Podman rootless&lt;br /&gt;
* Ollama local via `http://host.containers.internal:11434/v1`&lt;br /&gt;
* second bot Telegram dédié avec token distinct de l&#039;instance OpenClaw existante&lt;br /&gt;
* package Python `ddgs` installé via `hermes tools post-setup ddgs` le `13 juillet 2026`&lt;br /&gt;
&lt;br /&gt;
== Modèle LLM principal ==&lt;br /&gt;
Configuration Hermes actuellement retenue :&lt;br /&gt;
* provider : `custom`&lt;br /&gt;
* backend : API Ollama locale sur `http://host.containers.internal:11434/v1`&lt;br /&gt;
* modèle par défaut : `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* contexte cible : `131072` tokens&lt;br /&gt;
&lt;br /&gt;
== Outils et backends activés ==&lt;br /&gt;
Activation explicite actuellement retenue dans `config.yaml` :&lt;br /&gt;
* `web.search_backend: ddgs`&lt;br /&gt;
&lt;br /&gt;
Conséquences :&lt;br /&gt;
* `web_search` devient disponible sans clé API&lt;br /&gt;
* `web_extract` n&#039;a pas encore de backend dédié, donc la recherche web est activée mais l&#039;extraction avancée reste à compléter&lt;br /&gt;
&lt;br /&gt;
Backends non activés à ce stade :&lt;br /&gt;
* aucun backend `image_gen`&lt;br /&gt;
* aucun `browser.cdp_url`&lt;br /&gt;
&lt;br /&gt;
== Intégration Telegram préparée ==&lt;br /&gt;
Configuration locale maintenant active :&lt;br /&gt;
* fichier dédié : `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* allowlist utilisateur configurée sur l&#039;identifiant Telegram de Loïc : `5910858583`&lt;br /&gt;
* canal home Telegram préparé sur `5910858583`&lt;br /&gt;
* bot dédié configuré : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Important :&lt;br /&gt;
* le token du bot dédié est maintenant renseigné dans `hermes.env`&lt;br /&gt;
* il faut un bot distinct de `@LoicBoBBot` pour éviter le conflit `getUpdates` avec OpenClaw&lt;br /&gt;
&lt;br /&gt;
Variables prévues dans `hermes.env` :&lt;br /&gt;
* `TELEGRAM_ALLOWED_USERS=5910858583`&lt;br /&gt;
* `TELEGRAM_HOME_CHANNEL=5910858583`&lt;br /&gt;
* `TELEGRAM_BOT_TOKEN=...` configuré pour `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
== Procédure pour finaliser le second bot ==&lt;br /&gt;
Bot dédié déjà créé et validé :&lt;br /&gt;
* nom : `Hermes`&lt;br /&gt;
* username : `@LoicHermesBot`&lt;br /&gt;
&lt;br /&gt;
Pour refaire la procédure sur une autre instance :&lt;br /&gt;
* créer un bot dédié via `@BotFather`&lt;br /&gt;
* renseigner `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `systemctl --user daemon-reload`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* vérifier `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user status hermes.service --no-pager -l`&lt;br /&gt;
* `systemctl --user restart hermes.service`&lt;br /&gt;
* `journalctl --user -u hermes.service -n 100 --no-pager`&lt;br /&gt;
* `ss -ltn | rg 8642`&lt;br /&gt;
* `podman exec hermes /opt/hermes/.venv/bin/python -c &amp;quot;from tools.web_tools import check_web_api_key; print(check_web_api_key())&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
Interprétation rapide :&lt;br /&gt;
* si le service tourne mais logue `No messaging platforms enabled`, le token Telegram n&#039;est pas encore actif&lt;br /&gt;
* si le service refuse de démarrer après ajout du token, vérifier d&#039;abord le format du token et l&#039;unicité du bot&lt;br /&gt;
* si un conflit de token apparaît, s&#039;assurer que le bot Hermes n&#039;est pas le même que celui d&#039;OpenClaw&lt;br /&gt;
* si Telegram est bien pris en compte, les logs montrent une phase de connexion du type `Connecting to Telegram`&lt;br /&gt;
* si `check_web_api_key()` renvoie `True` avec `search_provider=ddgs`, la recherche web est activée même sans clé API&lt;br /&gt;
&lt;br /&gt;
== Plan d&#039;activation des potentiels ==&lt;br /&gt;
Checklist de suivi :&lt;br /&gt;
* [x] sécuriser le runtime rootless + backups de config&lt;br /&gt;
* [x] activer Telegram dédié&lt;br /&gt;
* [x] basculer sur le modèle local `gemma4:e4b-it-q8_0_128k`&lt;br /&gt;
* [x] activer `web_search` gratuit via `ddgs`&lt;br /&gt;
* [ ] choisir et brancher un backend `web_extract`&lt;br /&gt;
* [ ] choisir et brancher un backend `image_generate`&lt;br /&gt;
* [ ] fournir un endpoint CDP persistant si l&#039;on veut `browser_cdp`&lt;br /&gt;
* [ ] décider si un contexte desktop dédié doit être exposé à Hermes&lt;br /&gt;
&lt;br /&gt;
Intervention attendue de Loïc pour débloquer la suite :&lt;br /&gt;
* `web_extract` : fournir un choix de provider et sa config (`TAVILY_API_KEY`, `FIRECRAWL_API_KEY`, `EXA_API_KEY`, ou une URL `SEARXNG_URL` si une instance maison existe)&lt;br /&gt;
* `image_generate` : fournir un provider et un secret ou une auth exploitable dans le conteneur (`OPENAI_API_KEY`, `FAL_KEY`, ou auth Codex dans Hermes)&lt;br /&gt;
* `browser_cdp` : fournir une cible CDP réelle et durable (`browser.cdp_url`)&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/hermes.container`&lt;br /&gt;
* `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
Avant modification de la config critique :&lt;br /&gt;
* sauvegarder le quadlet Hermes&lt;br /&gt;
* sauvegarder `hermes.env`&lt;br /&gt;
* sauvegarder la persistance `/media/loic/nem/hermes`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* restaurer `hermes.container`&lt;br /&gt;
* restaurer `hermes.env`&lt;br /&gt;
* restaurer `/media/loic/nem/hermes`&lt;br /&gt;
* recharger systemd user&lt;br /&gt;
* relancer `hermes.service`&lt;br /&gt;
&lt;br /&gt;
== Rollback ==&lt;br /&gt;
Si l&#039;intégration Telegram du second bot casse Hermes :&lt;br /&gt;
* recommenter `TELEGRAM_BOT_TOKEN` dans `/home/loic/hermes-config/hermes.env`&lt;br /&gt;
* redémarrer `hermes.service`&lt;br /&gt;
* revenir au backup du quadlet si nécessaire&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de provider LLM, de chemin de persistance, de port local, de bot Telegram ou de stratégie d&#039;allowlist, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=183</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=183"/>
		<updated>2026-07-13T08:57:14Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajout du lien vers Trace install tas - Hermes Agent et synchro de la page centrale&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
* [[Trace install tas - Stalwart]]&lt;br /&gt;
* [[Trace install tas - Hermes Agent]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Ports publics !! Domaines !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681 / 25692 || dt.lololand.org || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682 || vault.lololand.org || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683 || kuma.lololand.org || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689 || headscale.lololand.org || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693 || bezel.lololand.org || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || home.lololand.org || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698 || wiki.lololand.org || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678 || n8n.lololand.org || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || 25700 || hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701 || trilium.lololand.org || Base de connaissances / notes&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1465 / 1587 / 1993 / 18080 || aucun à date || mail.lololand.org / lololand.org (MX à basculer) || Serveur mail local&lt;br /&gt;
|-&lt;br /&gt;
| Hermes Agent || 8642 || aucun à date || || Agent IA outillé via gateway de messagerie&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=181</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=181"/>
		<updated>2026-05-03T18:40:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajout de Stalwart dans la trace centrale tas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
* [[Trace install tas - Stalwart]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Ports publics !! Domaines !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681 / 25692 || dt.lololand.org || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682 || vault.lololand.org || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683 || kuma.lololand.org || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689 || headscale.lololand.org || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693 || bezel.lololand.org || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || home.lololand.org || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698 || wiki.lololand.org || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678 || n8n.lololand.org || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || 25700 || hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701 || trilium.lololand.org || Base de connaissances / notes&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1465 / 1587 / 1993 / 18080 || aucun à date || mail.lololand.org / lololand.org (MX à basculer) || Serveur mail local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Stalwart&amp;diff=180</id>
		<title>Trace install tas - Stalwart</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Stalwart&amp;diff=180"/>
		<updated>2026-05-03T18:40:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Mise à jour Stalwart: ports locaux, étapes de configuration mail et état de réception externe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Stalwart =&lt;br /&gt;
&lt;br /&gt;
== Vue d&#039;ensemble ==&lt;br /&gt;
* Service mail tout-en-un &#039;&#039;Stalwart&#039;&#039; déployé sur &#039;&#039;tas&#039;&#039; via Podman rootless et Quadlet systemd user.&lt;br /&gt;
* Objectif: héberger localement les boîtes mail et l&#039;administration, avec préparation pour &#039;&#039;lololand.org&#039;&#039;.&lt;br /&gt;
* Image utilisée: &#039;&#039;docker.io/stalwartlabs/stalwart:latest&#039;&#039;.&lt;br /&gt;
* État actuel: service fonctionnel en local sur ports non privilégiés, authentification testée avec succès depuis Thunderbird, mais réception Internet pas encore activée.&lt;br /&gt;
&lt;br /&gt;
== Source de vérité ==&lt;br /&gt;
* Quadlet: &#039;&#039;/home/loic/.config/containers/systemd/stalwart.container&#039;&#039;&lt;br /&gt;
* Configuration Stalwart: &#039;&#039;/home/loic/stalwart-data/etc/config.toml&#039;&#039;&lt;br /&gt;
* Données: &#039;&#039;/home/loic/stalwart-data/data&#039;&#039;&lt;br /&gt;
* Logs: &#039;&#039;/home/loic/stalwart-data/logs&#039;&#039;&lt;br /&gt;
* Sauvegarde config 2026-05-03: &#039;&#039;/home/loic/backups/stalwart-config.toml.bak.2026-05-03T09:08:08+02:00&#039;&#039;&lt;br /&gt;
* Sauvegarde quadlet 2026-05-03: &#039;&#039;/home/loic/backups/stalwart.container.bak.2026-05-03T09:15:01+02:00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Configuration Quadlet actuelle ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Stalwart Mail Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Container]&lt;br /&gt;
Image=docker.io/stalwartlabs/stalwart:latest&lt;br /&gt;
ContainerName=stalwart&lt;br /&gt;
AutoUpdate=registry&lt;br /&gt;
Volume=/home/loic/stalwart-data/etc:/etc/stalwart:Z&lt;br /&gt;
Volume=/home/loic/stalwart-data/data:/var/lib/stalwart:Z&lt;br /&gt;
Volume=/home/loic/stalwart-data/logs:/var/log/stalwart:Z&lt;br /&gt;
PublishPort=1025:25&lt;br /&gt;
PublishPort=1465:465&lt;br /&gt;
PublishPort=1587:587&lt;br /&gt;
PublishPort=1143:143&lt;br /&gt;
PublishPort=1993:993&lt;br /&gt;
PublishPort=1110:110&lt;br /&gt;
PublishPort=1995:995&lt;br /&gt;
PublishPort=14190:4190&lt;br /&gt;
PublishPort=18080:8080&lt;br /&gt;
PublishPort=18443:443&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Restart=always&lt;br /&gt;
TimeoutStartSec=180&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Listeners internes configurés ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SMTP      : 25&lt;br /&gt;
Submission: 587&lt;br /&gt;
SMTPS     : 465&lt;br /&gt;
IMAP      : 143&lt;br /&gt;
IMAPS     : 993&lt;br /&gt;
POP3      : 110&lt;br /&gt;
POP3S     : 995&lt;br /&gt;
Sieve     : 4190&lt;br /&gt;
HTTP      : 8080&lt;br /&gt;
HTTPS     : 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cartographie des ports ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Usage !! Port local sur tas !! Port interne conteneur !! Exposition publique actuelle !! Remarques&lt;br /&gt;
|-&lt;br /&gt;
| SMTP entrant || 1025 || 25 || aucune || cible future pour la réception Internet via redirection TCP 25&lt;br /&gt;
|-&lt;br /&gt;
| SMTPS client || 1465 || 465 || aucune || test utilisateur validé avec authentification&lt;br /&gt;
|-&lt;br /&gt;
| Submission client || 1587 || 587 || aucune || alternative client authentifiée&lt;br /&gt;
|-&lt;br /&gt;
| IMAP || 1143 || 143 || aucune || accès local uniquement&lt;br /&gt;
|-&lt;br /&gt;
| IMAPS || 1993 || 993 || aucune || lecture sécurisée locale&lt;br /&gt;
|-&lt;br /&gt;
| POP3 || 1110 || 110 || aucune || non prioritaire&lt;br /&gt;
|-&lt;br /&gt;
| POP3S || 1995 || 995 || aucune || non prioritaire&lt;br /&gt;
|-&lt;br /&gt;
| ManageSieve || 14190 || 4190 || aucune || optionnel&lt;br /&gt;
|-&lt;br /&gt;
| Admin HTTP || 18080 || 8080 || aucune || interface web locale&lt;br /&gt;
|-&lt;br /&gt;
| Admin HTTPS || 18443 || 443 || aucune || interface web locale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vérifications réalisées ==&lt;br /&gt;
* Le service écoute bien localement sur &#039;&#039;1025&#039;&#039;, &#039;&#039;1465&#039;&#039;, &#039;&#039;1587&#039;&#039; et &#039;&#039;1993&#039;&#039;.&lt;br /&gt;
* Test HTTP local validé sur &#039;&#039;http://127.0.0.1:18080/&#039;&#039;.&lt;br /&gt;
* Test d&#039;envoi fiable validé depuis Thunderbird via &#039;&#039;127.0.0.1:1465&#039;&#039; avec authentification du compte et acceptation du certificat local.&lt;br /&gt;
* Les logs Stalwart montrent un flux sain sur le listener &#039;&#039;submissions&#039;&#039; et une classification &#039;&#039;message-ingest.ham&#039;&#039; lors d&#039;un envoi authentifié.&lt;br /&gt;
* Les tests directs sur &#039;&#039;127.0.0.1:1025&#039;&#039; acceptent bien le SMTP entrant local, mais ce chemin peut être classé &#039;&#039;spam&#039;&#039; dans les logs pour des tests non authentifiés.&lt;br /&gt;
&lt;br /&gt;
== Procédure de récupération admin (incident 2026-05-03) ==&lt;br /&gt;
* L&#039;ancien &#039;&#039;authentication.fallback-admin&#039;&#039; dans &#039;&#039;config.toml&#039;&#039; ne suffisait plus pour l&#039;interface web après mise à jour/redémarrage.&lt;br /&gt;
* Procédure ayant fonctionné sur Stalwart 0.16:&lt;br /&gt;
** ajouter temporairement &#039;&#039;STALWART_RECOVERY_ADMIN=recovery:&amp;amp;lt;mot_de_passe&amp;amp;gt;&#039;&#039; dans le quadlet&lt;br /&gt;
** &#039;&#039;systemctl --user daemon-reload&#039;&#039;&lt;br /&gt;
** &#039;&#039;systemctl --user restart stalwart.service&#039;&#039;&lt;br /&gt;
** recréer ou réparer un vrai compte admin dans l&#039;interface&lt;br /&gt;
** retirer ensuite &#039;&#039;STALWART_RECOVERY_ADMIN&#039;&#039; du quadlet et redémarrer le service&lt;br /&gt;
* Sauvegarde avant retrait de la variable de recovery: &#039;&#039;/home/loic/backups/stalwart.container.remove-recovery.bak.2026-05-03T10:16:14+02:00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Étapes de configuration recommandées pour recevoir &#039;&#039;loic@lololand.org&#039;&#039; ==&lt;br /&gt;
=== 1. Configuration Stalwart ===&lt;br /&gt;
* Créer ou vérifier le domaine &#039;&#039;lololand.org&#039;&#039; dans l&#039;interface d&#039;administration.&lt;br /&gt;
* Créer la boîte ou l&#039;alias &#039;&#039;loic@lololand.org&#039;&#039;.&lt;br /&gt;
* Vérifier que l&#039;authentification fonctionne en local avec:&lt;br /&gt;
** SMTP client: &#039;&#039;127.0.0.1:1465&#039;&#039;&lt;br /&gt;
** IMAPS: &#039;&#039;127.0.0.1:1993&#039;&#039;&lt;br /&gt;
* Conserver les ports élevés locaux dans le conteneur rootless; l&#039;exposition Internet doit se faire par redirection TCP devant le service.&lt;br /&gt;
&lt;br /&gt;
=== 2. Configuration réseau / exposition SMTP ===&lt;br /&gt;
* Le conteneur rootless ne peut pas publier directement les ports privilégiés &#039;&#039;25/465/587/993&#039;&#039;.&lt;br /&gt;
* Pour la réception Internet, il faut au minimum faire arriver le &#039;&#039;TCP/25 public&#039;&#039; vers &#039;&#039;tas&#039;&#039;, puis vers &#039;&#039;127.0.0.1:1025&#039;&#039;.&lt;br /&gt;
* Deux familles d&#039;approche:&lt;br /&gt;
** redirection routeur + redirection hôte/firewall vers &#039;&#039;1025&#039;&#039;&lt;br /&gt;
** ou proxy TCP dédié en frontal&lt;br /&gt;
* Important: &#039;&#039;Caddy&#039;&#039; standard sert de reverse proxy HTTP/HTTPS; il ne traite pas SMTP/IMAP sans module TCP/L4 additionnel.&lt;br /&gt;
&lt;br /&gt;
=== 3. DNS à corriger avant bascule ===&lt;br /&gt;
* &#039;&#039;mail.lololand.org A 82.67.187.157&#039;&#039; est déjà présent.&lt;br /&gt;
* Les MX actuels de &#039;&#039;lololand.org&#039;&#039; pointent d&#039;abord chez OVH, puis seulement vers &#039;&#039;mail.lololand.org&#039;&#039;.&lt;br /&gt;
* Pour faire de Stalwart le serveur recevant les mails du domaine, prévoir une bascule vers un MX principal du type:&lt;br /&gt;
** &#039;&#039;lololand.org. MX 10 mail.lololand.org.&#039;&#039;&lt;br /&gt;
* Publier ensuite les enregistrements &#039;&#039;SPF&#039;&#039;, &#039;&#039;DKIM&#039;&#039; et &#039;&#039;DMARC&#039;&#039; générés/confirmés côté Stalwart.&lt;br /&gt;
* Vérifier aussi le &#039;&#039;PTR/rDNS&#039;&#039; de l&#039;IP publique si possible.&lt;br /&gt;
&lt;br /&gt;
=== 4. Ordre de bascule prudent ===&lt;br /&gt;
# valider le compte &#039;&#039;loic@lololand.org&#039;&#039; en local&lt;br /&gt;
# faire la redirection réseau du port public &#039;&#039;25&#039;&#039; vers Stalwart&lt;br /&gt;
# tester depuis une source externe vers &#039;&#039;mail.lololand.org:25&#039;&#039;&lt;br /&gt;
# seulement ensuite modifier le MX principal du domaine&lt;br /&gt;
# refaire un test réel d&#039;envoi depuis l&#039;extérieur vers &#039;&#039;loic@lololand.org&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Limites et points de vigilance ==&lt;br /&gt;
* Tant que le MX principal reste chez OVH, les mails extérieurs arriveront d&#039;abord chez OVH et pas directement sur Stalwart.&lt;br /&gt;
* Tant que rien n&#039;écoute ou ne redirige le &#039;&#039;port 25 public&#039;&#039; vers &#039;&#039;1025&#039;&#039;, Stalwart ne peut pas recevoir de mail Internet.&lt;br /&gt;
* Les tests SMTP sortants vers des MX publics sur le port 25 ont déjà time-out; un &#039;&#039;relay SMTP&#039;&#039; restera probablement nécessaire pour l&#039;émission Internet fiable.&lt;br /&gt;
* Si une terminaison TLS publique est ajoutée pour les ports mail, elle doit être faite en mode &#039;&#039;TCP passthrough&#039;&#039; ou avec un frontal explicitement conçu pour ces protocoles.&lt;br /&gt;
&lt;br /&gt;
== Relance et diagnostic ==&lt;br /&gt;
* Redémarrer: &#039;&#039;systemctl --user restart stalwart.service&#039;&#039;&lt;br /&gt;
* Statut: &#039;&#039;systemctl --user status stalwart.service&#039;&#039;&lt;br /&gt;
* Logs systemd user: &#039;&#039;journalctl --user -u stalwart.service -n 200 --no-pager&#039;&#039;&lt;br /&gt;
* Logs conteneur: &#039;&#039;podman logs --tail 200 stalwart&#039;&#039;&lt;br /&gt;
* Vérifier les ports: &#039;&#039;ss -ltn | egrep &#039;:(1025|1110|1143|1465|1587|1993|1995|14190|18080|18443)\\s&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Décision retenue à date ==&lt;br /&gt;
* Conserver Stalwart en Podman rootless avec ports élevés locaux.&lt;br /&gt;
* Préparer la réception Internet par une redirection réseau explicite et réversible, plutôt qu&#039;en abaissant globalement &#039;&#039;net.ipv4.ip_unprivileged_port_start&#039;&#039;.&lt;br /&gt;
* Documenter séparément les variantes de frontalisation possibles (routeur + firewall hôte, ou Caddy avec module layer4 si retenu).&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Paperless-ngx&amp;diff=178</id>
		<title>Trace install tas - Paperless-ngx</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Paperless-ngx&amp;diff=178"/>
		<updated>2026-04-12T17:02:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation maintenance conteneurs enrichie: dépendances, volumes, relance et paramètres&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Paperless-ngx =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
GED / OCR documentaire.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8094&lt;br /&gt;
* Public : https://lololand.hopto.org:25694&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8094 local, 25694 public&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlets systemd user : paperless.container et paperless-broker.container ; conteneur principal systemd-paperless.&lt;br /&gt;
&lt;br /&gt;
Rôle des services :&lt;br /&gt;
* `paperless.service` : application Paperless-ngx&lt;br /&gt;
* `paperless-broker.service` : Redis utilisé par l&#039;application via `PAPERLESS_REDIS`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/paperless.container&lt;br /&gt;
* /home/loic/.config/containers/systemd/paperless-broker.container&lt;br /&gt;
* /home/loic/paperless/consume&lt;br /&gt;
* /home/loic/paperless/export&lt;br /&gt;
&lt;br /&gt;
Les quadlets sont les sources de vérité de lancement ; les répertoires `consume` et `export` sont les points d&#039;échange documentaires / entrants-sortants.&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `paperless-data:/usr/src/paperless/data`&lt;br /&gt;
  * données applicatives et métadonnées internes&lt;br /&gt;
* `paperless-media:/usr/src/paperless/media`&lt;br /&gt;
  * documents importés et fichiers gérés&lt;br /&gt;
* `/home/loic/paperless/export -&amp;gt; /usr/src/paperless/export`&lt;br /&gt;
  * exports produits par l&#039;application&lt;br /&gt;
* `/home/loic/paperless/consume -&amp;gt; /usr/src/paperless/consume`&lt;br /&gt;
  * dossier de dépôt pour ingestion automatique&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* paperless-broker.service&lt;br /&gt;
* réseau paperless-net&lt;br /&gt;
* redis via PAPERLESS_REDIS&lt;br /&gt;
* Caddy 25694 -&amp;gt; 8094&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Ordre recommandé :&lt;br /&gt;
* broker Redis&lt;br /&gt;
* application Paperless&lt;br /&gt;
&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user restart paperless-broker.service`&lt;br /&gt;
* `systemctl --user restart paperless.service`&lt;br /&gt;
* `systemctl --user status paperless.service --no-pager -l`&lt;br /&gt;
* `curl -I http://127.0.0.1:8094/`&lt;br /&gt;
&lt;br /&gt;
Explication :&lt;br /&gt;
* Paperless dépend du broker Redis pour son fonctionnement normal ; un démarrage applicatif sans broker sain peut produire des erreurs trompeuses.&lt;br /&gt;
* `curl -I` permet de valider rapidement l&#039;interface HTTP avant d&#039;accuser Caddy.&lt;br /&gt;
* `status --no-pager -l` permet de voir les erreurs de volume, variable ou dépendance.&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
OCR configuré sur fra+eng. Service important pour la persistance documentaire.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* Métadonnées / application : volume paperless-data&lt;br /&gt;
* Documents : volume paperless-media&lt;br /&gt;
* Répertoires locaux : /home/loic/paperless/export et /home/loic/paperless/consume&lt;br /&gt;
* Quadlets : paperless.container et paperless-broker.container&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder les volumes paperless-data, paperless-media, paperless-redis-data.&lt;br /&gt;
* Sauvegarder /home/loic/paperless/export et /home/loic/paperless/consume.&lt;br /&gt;
* Exporter aussi les quadlets si une restauration complète de l&#039;orchestration est visée.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer les volumes paperless-data, paperless-media, paperless-redis-data.&lt;br /&gt;
* Restaurer /home/loic/paperless/export et /home/loic/paperless/consume.&lt;br /&gt;
* Restaurer les quadlets puis relancer d&#039;abord le broker, ensuite Paperless.&lt;br /&gt;
* Vérifier ensuite l&#039;accès HTTP, l&#039;ingestion depuis `consume` et la présence des documents dans l&#039;interface.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement de répertoires consume/export, OCR, broker Redis, variables Paperless ou volumes, mettre à jour cette page.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Nextcloud&amp;diff=177</id>
		<title>Trace install tas - Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Nextcloud&amp;diff=177"/>
		<updated>2026-04-12T17:02:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation maintenance conteneurs enrichie: dépendances, volumes, relance et paramètres&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Nextcloud =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Stockage de fichiers et groupware.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8096&lt;br /&gt;
* Public : https://lololand.hopto.org:25696&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8096 local, 25696 public&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlets systemd user : nextcloud.container, nextcloud-db.container, nextcloud-redis.container ; conteneurs systemd-nextcloud, nextcloud-db, nextcloud-redis.&lt;br /&gt;
&lt;br /&gt;
Rôle des services :&lt;br /&gt;
* `nextcloud.service` : application Nextcloud / PHP / Apache ou équivalent selon l&#039;image retenue&lt;br /&gt;
* `nextcloud-db.service` : MariaDB de l&#039;instance&lt;br /&gt;
* `nextcloud-redis.service` : cache / verrouillage / broker léger pour améliorer la stabilité applicative&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/nextcloud.container&lt;br /&gt;
* /home/loic/.config/containers/systemd/nextcloud-db.container&lt;br /&gt;
* /home/loic/.config/containers/systemd/nextcloud-redis.container&lt;br /&gt;
&lt;br /&gt;
Ce sont les sources de vérité de lancement. Toute évolution de ports, volumes, réseau ou variables doit passer par ces fichiers.&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `nextcloud-html:/var/www/html`&lt;br /&gt;
  * code applicatif et fichiers web Nextcloud&lt;br /&gt;
* `nextcloud-data:/var/www/html/data`&lt;br /&gt;
  * données utilisateurs&lt;br /&gt;
* `nextcloud-db:/var/lib/mysql`&lt;br /&gt;
  * base MariaDB&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* nextcloud-db.service&lt;br /&gt;
* nextcloud-redis.service&lt;br /&gt;
* réseau nextcloud-net&lt;br /&gt;
* Caddy 25696 -&amp;gt; 8096&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Ordre recommandé :&lt;br /&gt;
* base MariaDB&lt;br /&gt;
* redis&lt;br /&gt;
* application Nextcloud&lt;br /&gt;
&lt;br /&gt;
Commandes utiles :&lt;br /&gt;
* `systemctl --user restart nextcloud-db.service`&lt;br /&gt;
* `systemctl --user restart nextcloud-redis.service`&lt;br /&gt;
* `systemctl --user restart nextcloud.service`&lt;br /&gt;
* `systemctl --user status nextcloud.service --no-pager -l`&lt;br /&gt;
* `curl -I http://127.0.0.1:8096/`&lt;br /&gt;
&lt;br /&gt;
Explication :&lt;br /&gt;
* relancer la base avant l&#039;application évite une partie des faux diagnostics applicatifs&lt;br /&gt;
* `status --no-pager -l` permet de voir rapidement si le problème vient d&#039;un volume, d&#039;une image ou d&#039;une dépendance non disponible&lt;br /&gt;
* `curl -I` permet de distinguer une panne HTTP d&#039;un simple souci de proxy public&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
Trusted domains configurés pour localhost, 127.0.0.1 et lololand.hopto.org. PHP_MEMORY_LIMIT et PHP_UPLOAD_LIMIT à 1024M.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* HTML applicatif : volume nextcloud-html&lt;br /&gt;
* Données utilisateurs : volume nextcloud-data&lt;br /&gt;
* Base MariaDB : volume nextcloud-db&lt;br /&gt;
* Quadlets : nextcloud.container, nextcloud-db.container, nextcloud-redis.container&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder les volumes nextcloud-html, nextcloud-data et nextcloud-db.&lt;br /&gt;
* Exporter les quadlets nextcloud.container, nextcloud-db.container et nextcloud-redis.container.&lt;br /&gt;
* Conserver une trace des trusted domains et des limites PHP si elles sont définies dans les quadlets ou variables d&#039;environnement.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer les volumes nextcloud-html, nextcloud-data et nextcloud-db.&lt;br /&gt;
* Restaurer les quadlets.&lt;br /&gt;
* Recharger systemd user si nécessaire.&lt;br /&gt;
* Redémarrer les services nextcloud-db, nextcloud-redis puis nextcloud.&lt;br /&gt;
* Vérifier ensuite l&#039;accès HTTP local, la connexion DB et les trusted domains.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement de base, redis, volumes, réseau, trusted domains, limites PHP ou image, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Immich&amp;diff=176</id>
		<title>Trace install tas - Immich</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Immich&amp;diff=176"/>
		<updated>2026-04-12T17:02:37Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation maintenance conteneurs enrichie: dépendances, volumes, relance et paramètres&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Immich =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Gestionnaire photo / vidéo.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8088&lt;br /&gt;
* Public : https://lololand.hopto.org:25688&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8088 applicatif, 25688 public&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Stack docker-compose dans /home/loic/immich/docker-compose.yml ; conteneurs immich_server, immich_microservices, immich_machine_learning, immich_redis, immich_postgres.&lt;br /&gt;
&lt;br /&gt;
Rôle des conteneurs :&lt;br /&gt;
* `immich_server` : API / frontend principal exposé localement sur 8088&lt;br /&gt;
* `immich_microservices` : traitements de fond Immich&lt;br /&gt;
* `immich_machine_learning` : inférence et reconnaissance, ici avec accélération ROCm&lt;br /&gt;
* `immich_redis` : broker/cache Redis&lt;br /&gt;
* `immich_postgres` : base PostgreSQL/pgvector&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/immich/docker-compose.yml&lt;br /&gt;
* /home/loic/immich/.env si présent&lt;br /&gt;
&lt;br /&gt;
Le `.env` est critique s&#039;il porte des variables comme :&lt;br /&gt;
* `UPLOAD_LOCATION`&lt;br /&gt;
* `DB_DATA_LOCATION`&lt;br /&gt;
* `IMMICH_VERSION`&lt;br /&gt;
* éventuels paramètres GPU / ROCm ou mots de passe de base&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* `${UPLOAD_LOCATION}` -&amp;gt; `/usr/src/app/upload`&lt;br /&gt;
  * photos, vidéos, vignettes et contenus applicatifs liés aux médias&lt;br /&gt;
* `${DB_DATA_LOCATION}` -&amp;gt; `/var/lib/postgresql/data`&lt;br /&gt;
  * données PostgreSQL/pgvector&lt;br /&gt;
* `/home/loic/immich/ml-cache` -&amp;gt; `/cache`&lt;br /&gt;
  * cache du service machine learning&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* redis&lt;br /&gt;
* postgres pgvector&lt;br /&gt;
* machine learning ROCm&lt;br /&gt;
* Caddy 25688 -&amp;gt; 8088&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Relance standard :&lt;br /&gt;
* relancer la stack compose Immich depuis /home/loic/immich&lt;br /&gt;
&lt;br /&gt;
Vérifications utiles :&lt;br /&gt;
* vérifier que `immich_server` est exposé sur 8088&lt;br /&gt;
* vérifier l&#039;état de `immich_postgres` avant toute conclusion sur une panne applicative&lt;br /&gt;
* vérifier `immich_machine_learning` séparément si les fonctions IA posent problème&lt;br /&gt;
* tester l&#039;accès local avant le proxy Caddy&lt;br /&gt;
&lt;br /&gt;
Points à surveiller :&lt;br /&gt;
* si les volumes changent de chemin dans `.env`, la restauration ou la sauvegarde devient incorrecte si la page n&#039;est pas mise à jour&lt;br /&gt;
* le cache ML peut être reconstruit, mais sa présence peut améliorer les redémarrages&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
Architecture multi-conteneurs avec accélération ROCm pour la partie machine learning.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* Photos/vidéos : `${UPLOAD_LOCATION}`&lt;br /&gt;
* Base Postgres : `${DB_DATA_LOCATION}`&lt;br /&gt;
* Cache ML : /home/loic/immich/ml-cache&lt;br /&gt;
* fichiers de définition : docker-compose.yml et `.env`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder `${UPLOAD_LOCATION}`, `${DB_DATA_LOCATION}` et /home/loic/immich/ml-cache.&lt;br /&gt;
* Sauvegarder /home/loic/immich/docker-compose.yml et le `.env` associé.&lt;br /&gt;
* Pour une restauration cohérente, conserver les valeurs exactes des variables de chemin au moment de la sauvegarde.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer les répertoires d&#039;upload, la base Postgres et le cache ML si souhaité.&lt;br /&gt;
* Restaurer `docker-compose.yml` et `.env`.&lt;br /&gt;
* Relancer ensuite la stack Immich complète et vérifier séparément le frontend, la base et la partie machine learning.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement de volumes photo, base, cache ML, variables `.env`, accélération GPU ou version `IMMICH_VERSION`, mettre à jour cette page.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Homepage&amp;diff=175</id>
		<title>Trace install tas - Homepage</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Homepage&amp;diff=175"/>
		<updated>2026-04-12T17:02:37Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation maintenance conteneurs enrichie: dépendances, volumes, relance et paramètres&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Homepage =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Tableau de bord des services.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8097&lt;br /&gt;
* Public : https://lololand.hopto.org:25697&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8097 local, 25697 public via Caddy&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet systemd user : /home/loic/.config/containers/systemd/homepage.container ; conteneur systemd-homepage.&lt;br /&gt;
&lt;br /&gt;
Paramètres importants à expliquer :&lt;br /&gt;
* `Image=ghcr.io/gethomepage/homepage:latest` : image du dashboard&lt;br /&gt;
* `AutoUpdate=registry` : activation des mises à jour automatiques via podman auto-update&lt;br /&gt;
* montage de `/home/loic/homepage-config` vers `/app/config` : la configuration affichée par Homepage vient de ce dossier hôte&lt;br /&gt;
* port local 8097 : point d&#039;écoute local du service derrière Caddy&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/homepage.container&lt;br /&gt;
* /home/loic/homepage-config/services.yaml&lt;br /&gt;
* /home/loic/homepage-config/settings.yaml&lt;br /&gt;
* /home/loic/homepage-config/custom.js&lt;br /&gt;
* /home/loic/homepage-config/custom.css&lt;br /&gt;
&lt;br /&gt;
Rôle des fichiers :&lt;br /&gt;
* `services.yaml` : cartes, liens, groupes et cibles de supervision / navigation&lt;br /&gt;
* `settings.yaml` : options globales de Homepage&lt;br /&gt;
* `custom.js` : comportements ou intégrations frontend spécifiques&lt;br /&gt;
* `custom.css` : surcharge visuelle locale&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* /home/loic/homepage-config -&amp;gt; /app/config&lt;br /&gt;
  * ce bind mount est la source de vérité de la configuration affichée&lt;br /&gt;
* pas de base de données dédiée documentée&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Caddy pour l&#039;exposition publique&lt;br /&gt;
* liste des services documentée dans services.yaml&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Relance standard :&lt;br /&gt;
* `systemctl --user restart homepage.service`&lt;br /&gt;
&lt;br /&gt;
Vérifications utiles :&lt;br /&gt;
* `systemctl --user status homepage.service --no-pager -l`&lt;br /&gt;
* `systemctl --user cat homepage.service`&lt;br /&gt;
* `curl -I http://127.0.0.1:8097/`&lt;br /&gt;
* vérifier le rendu des cartes après modification de services.yaml&lt;br /&gt;
&lt;br /&gt;
Explication des commandes :&lt;br /&gt;
* `systemctl --user cat` : montre l&#039;unité réellement générée par Quadlet.&lt;br /&gt;
* `curl -I` : vérifie rapidement la disponibilité HTTP.&lt;br /&gt;
* `status --no-pager -l` : utile pour repérer un souci d&#039;image, de bind mount ou de port.&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
Image ghcr.io/gethomepage/homepage:latest avec AutoUpdate=registry. HOMEPAGE_ALLOWED_HOSTS configuré. Le dashboard porte les liens publics et internes des services.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* Configuration dans /home/loic/homepage-config&lt;br /&gt;
* quadlet /home/loic/.config/containers/systemd/homepage.container&lt;br /&gt;
* pas de base de données applicative dédiée documentée&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder /home/loic/homepage-config (services.yaml, settings.yaml, custom.js, custom.css).&lt;br /&gt;
* Exporter aussi le quadlet /home/loic/.config/containers/systemd/homepage.container.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer /home/loic/homepage-config et le quadlet homepage.container.&lt;br /&gt;
* Recharger systemd user si nécessaire puis relancer le service.&lt;br /&gt;
* Vérifier ensuite l&#039;accès local/public et la cohérence des liens vers les autres services.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement de carte, port, image, lien public/interne, HOMEPAGE_ALLOWED_HOSTS ou custom.js/custom.css, mettre à jour cette page et la page centrale trace install tas.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Social_Analyzer&amp;diff=174</id>
		<title>Trace install tas - Social Analyzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Social_Analyzer&amp;diff=174"/>
		<updated>2026-04-12T16:57:52Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation conteneurs enrichie: runtime, paramètres, ports, volumes, relance et diagnostic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Social Analyzer =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
OSINT / analyse de profils sociaux.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8086/app.html&lt;br /&gt;
* Public : https://lololand.hopto.org:25686/app.html&lt;br /&gt;
* Attention : la racine / peut répondre 404 ; le point d&#039;entrée applicatif observé est /app.html&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* 8086 -&amp;gt; 9005 : interface web Social Analyzer publiée par le conteneur applicatif&lt;br /&gt;
* 4444 -&amp;gt; 4444 : Selenium Hub&lt;br /&gt;
* 9002 -&amp;gt; 5900 : VNC du noeud Firefox Selenium&lt;br /&gt;
* 25686 -&amp;gt; 8086 : publication publique via Caddy&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Stack podman-compose dans /home/loic/clawd/social-analyzer/docker-compose.yml ; conteneurs attendus :&lt;br /&gt;
* social-analyzer_social-analyzer_1 : application Node.js / interface web&lt;br /&gt;
* social-analyzer_hub_1 : hub Selenium&lt;br /&gt;
* web-automation_firefox : noeud Firefox Selenium&lt;br /&gt;
&lt;br /&gt;
Service systemd user associé : /home/loic/.config/systemd/user/social-analyzer.service&lt;br /&gt;
* Type=oneshot : systemd considère le lancement réussi quand `podman-compose up -d` se termine, même si la santé réelle des conteneurs doit être vérifiée séparément.&lt;br /&gt;
* WorkingDirectory=/home/loic/clawd/social-analyzer : toutes les commandes du service s&#039;exécutent depuis ce dossier.&lt;br /&gt;
* ExecStart=/usr/bin/podman-compose up -d : crée/recrée et démarre la stack en arrière-plan.&lt;br /&gt;
  * `up` : crée et démarre les services du compose.&lt;br /&gt;
  * `-d` : mode détaché, le processus compose rend la main après lancement.&lt;br /&gt;
* ExecStop=/usr/bin/podman-compose down : arrête et supprime les conteneurs/réseaux créés par la stack.&lt;br /&gt;
* RemainAfterExit=yes : l&#039;unité reste marquée active après la fin du processus oneshot.&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/systemd/user/social-analyzer.service&lt;br /&gt;
* /home/loic/clawd/social-analyzer/docker-compose.yml&lt;br /&gt;
* /home/loic/clawd/social-analyzer/Dockerfile&lt;br /&gt;
* /home/loic/clawd/social-analyzer/package.json&lt;br /&gt;
* /home/loic/clawd/social-analyzer/package-lock.json&lt;br /&gt;
&lt;br /&gt;
== Images et build ==&lt;br /&gt;
* image locale buildée : localhost/social-analyzer_social-analyzer:latest&lt;br /&gt;
* image hub : docker.io/selenium/hub&lt;br /&gt;
* image noeud Firefox : docker.io/selenium/node-firefox&lt;br /&gt;
&lt;br /&gt;
Dockerfile applicatif actuel :&lt;br /&gt;
* `FROM node:20.18.1-alpine3.20` : base Node épinglée pour éviter les incompatibilités vues avec Node 18.15.0.&lt;br /&gt;
* `WORKDIR /usr/src/app` : répertoire de travail dans l&#039;image.&lt;br /&gt;
* `COPY . .` : copie du contexte de build complet.&lt;br /&gt;
* `RUN apk update &amp;amp;&amp;amp; apk add --no-cache firefox-esr &amp;amp;&amp;amp; npm ci &amp;amp;&amp;amp; npm install lodash &amp;amp;&amp;amp; npm install --loglevel=error`&lt;br /&gt;
  * `apk add --no-cache firefox-esr` : installe Firefox ESR dans l&#039;image applicative.&lt;br /&gt;
  * `npm ci` : installe strictement les dépendances depuis package-lock.json, de façon reproductible.&lt;br /&gt;
  * `npm install lodash` : ajoute explicitement lodash si requis par le projet.&lt;br /&gt;
  * `npm install --loglevel=error` : second passage npm plus silencieux pour finaliser les dépendances.&lt;br /&gt;
* `EXPOSE 9005` : documentation du port interne de l&#039;application.&lt;br /&gt;
* `ENTRYPOINT [ &amp;quot;npm&amp;quot;, &amp;quot;start&amp;quot;, &amp;quot;--&amp;quot;,&amp;quot;--docker&amp;quot;]` : lance l&#039;application en mode docker.&lt;br /&gt;
&lt;br /&gt;
== Paramètres du docker-compose ==&lt;br /&gt;
Service `social-analyzer` :&lt;br /&gt;
* `build: .` : construit l&#039;image locale à partir du Dockerfile du dossier courant.&lt;br /&gt;
* `ports: &amp;quot;8086:9005&amp;quot;` : publie le port 9005 du conteneur sur le port 8086 de l&#039;hôte.&lt;br /&gt;
* `depends_on: hub` : demande à compose de démarrer le hub avant l&#039;application.&lt;br /&gt;
* `links: hub` : alias réseau historique vers `hub`.&lt;br /&gt;
* `entrypoint: npm start -- --docker --grid &amp;quot;http://hub:4444/wd/hub&amp;quot;`&lt;br /&gt;
  * `npm start` : démarre l&#039;application définie dans package.json.&lt;br /&gt;
  * `--` : transmet les arguments suivants au script npm.&lt;br /&gt;
  * `--docker` : active le mode conteneur.&lt;br /&gt;
  * `--grid &amp;quot;http://hub:4444/wd/hub&amp;quot;` : pointe l&#039;application vers le Selenium Hub interne.&lt;br /&gt;
&lt;br /&gt;
Service `hub` :&lt;br /&gt;
* `image: docker.io/selenium/hub`&lt;br /&gt;
* `ports: &amp;quot;4444:4444&amp;quot;` : expose le hub Selenium sur l&#039;hôte.&lt;br /&gt;
* variables :&lt;br /&gt;
  * `GRID_MAX_SESSION=16` : limite haute de sessions Selenium simultanées.&lt;br /&gt;
  * `GRID_BROWSER_TIMEOUT=6000` : timeout navigateur côté grid.&lt;br /&gt;
  * `GRID_TIMEOUT=6000` : timeout global grid.&lt;br /&gt;
&lt;br /&gt;
Service `firefox` :&lt;br /&gt;
* `image: docker.io/selenium/node-firefox`&lt;br /&gt;
* `container_name: web-automation_firefox` : fixe un nom de conteneur stable.&lt;br /&gt;
* `depends_on: hub` : démarre après le hub.&lt;br /&gt;
* variables :&lt;br /&gt;
  * `SE_EVENT_BUS_HOST=hub` : hôte du bus Selenium.&lt;br /&gt;
  * `SE_EVENT_BUS_PUBLISH_PORT=4442` : port de publication du bus.&lt;br /&gt;
  * `SE_EVENT_BUS_SUBSCRIBE_PORT=4443` : port d&#039;abonnement du bus.&lt;br /&gt;
  * `SE_NODE_MAX_SESSIONS=${CPU_CORES:-2}` : nombre de sessions Firefox, avec valeur par défaut 2 si CPU_CORES n&#039;est pas défini.&lt;br /&gt;
* `volumes: /dev/shm:/dev/shm` : partage la mémoire partagée de l&#039;hôte pour limiter les crashs navigateur.&lt;br /&gt;
* `ports: &amp;quot;9002:5900&amp;quot;` : expose le VNC Firefox.&lt;br /&gt;
* `links: hub` : alias réseau historique vers `hub`.&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* /dev/shm -&amp;gt; /dev/shm dans le conteneur Firefox&lt;br /&gt;
* Pas de volume persistant applicatif identifié pour l&#039;interface elle-même dans cette passe&lt;br /&gt;
* Le contexte de build local (/home/loic/clawd/social-analyzer) fait partie de l&#039;état à sauvegarder&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* hub Selenium&lt;br /&gt;
* node-firefox Selenium&lt;br /&gt;
* image locale buildée depuis le code source du dossier social-analyzer&lt;br /&gt;
* Caddy 25686 -&amp;gt; 8086&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Relance standard :&lt;br /&gt;
* `systemctl --user restart social-analyzer.service`&lt;br /&gt;
&lt;br /&gt;
Vérifications utiles :&lt;br /&gt;
* `systemctl --user status social-analyzer.service --no-pager -l`&lt;br /&gt;
* `podman ps --all | grep -i &#039;social-analyzer\|web-automation_firefox&#039;`&lt;br /&gt;
* `podman logs --tail 80 social-analyzer_social-analyzer_1`&lt;br /&gt;
* `curl -I http://127.0.0.1:8086/app.html`&lt;br /&gt;
&lt;br /&gt;
Explication des commandes :&lt;br /&gt;
* `systemctl --user` : agit sur les services systemd utilisateur rootless.&lt;br /&gt;
* `status --no-pager -l` : évite le pager interactif et affiche les lignes complètes.&lt;br /&gt;
* `podman ps --all` : montre aussi les conteneurs arrêtés, utile pour repérer les fantômes.&lt;br /&gt;
* `podman logs --tail 80` : limite la sortie aux dernières lignes pertinentes.&lt;br /&gt;
* `curl -I` : teste uniquement les en-têtes HTTP, sans télécharger toute la page.&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
* Incident observé puis corrigé : état Podman rootless incohérent avec noms de conteneurs réservés mais conteneurs introuvables.&lt;br /&gt;
* Incident observé puis corrigé : crash Node/npm avec Node.js v18.15.0 ; le Dockerfile a été adapté vers node:20.18.1-alpine3.20.&lt;br /&gt;
* Le service Homepage pointait historiquement aussi vers 8085 pour Social Analyzer, alors que la stack courante expose 8086. Cette divergence doit être surveillée et corrigée si nécessaire.&lt;br /&gt;
* Le point d&#039;entrée utile est /app.html, pas forcément /.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* /home/loic/.config/systemd/user/social-analyzer.service&lt;br /&gt;
* /home/loic/clawd/social-analyzer/docker-compose.yml&lt;br /&gt;
* /home/loic/clawd/social-analyzer/Dockerfile&lt;br /&gt;
* /home/loic/clawd/social-analyzer/package.json&lt;br /&gt;
* /home/loic/clawd/social-analyzer/package-lock.json&lt;br /&gt;
* plus largement le dossier /home/loic/clawd/social-analyzer si le contexte de build a été modifié&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder le service systemd user et l&#039;intégralité du dossier /home/loic/clawd/social-analyzer.&lt;br /&gt;
* Si des variables d&#039;environnement ou fichiers .env sont ajoutés plus tard, les inclure explicitement.&lt;br /&gt;
* En cas de rebuild important, conserver aussi le hash/image de référence si besoin d&#039;un rollback rapide.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer le dossier /home/loic/clawd/social-analyzer et /home/loic/.config/systemd/user/social-analyzer.service.&lt;br /&gt;
* Rebuilder ensuite l&#039;image locale avec `podman-compose build --no-cache` si le cache est suspect ou si l&#039;image manque.&lt;br /&gt;
* Redémarrer avec `systemctl --user restart social-analyzer.service`.&lt;br /&gt;
* Vérifier ensuite `podman ps`, les logs applicatifs et `http://127.0.0.1:8086/app.html`.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;une évolution de la stack Selenium, du Dockerfile, du port exposé, du point d&#039;entrée HTTP ou de la route Caddy, mettre à jour cette page et Homepage.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Open_WebUI&amp;diff=173</id>
		<title>Trace install tas - Open WebUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Open_WebUI&amp;diff=173"/>
		<updated>2026-04-12T16:57:52Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation conteneurs enrichie: runtime, paramètres, ports, volumes, relance et diagnostic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Open WebUI =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Interface web vers les LLM locaux.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8080&lt;br /&gt;
* Public : https://lololand.hopto.org:25680&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8080 local, 25680 public&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Conteneur open-webui (image ghcr.io/open-webui/open-webui:main) ; exposition Caddy active.&lt;br /&gt;
&lt;br /&gt;
État documentaire actuel :&lt;br /&gt;
* la présence du conteneur actif est confirmée&lt;br /&gt;
* un volume Podman nommé `open-webui` est référencé comme persistance probable&lt;br /&gt;
* la méthode de lancement exacte (quadlet, compose, service systemd manuel ou commande podman) n&#039;est pas encore formellement tracée ici&lt;br /&gt;
&lt;br /&gt;
Conséquence :&lt;br /&gt;
* les éléments d&#039;accès et de dépendances sont documentés&lt;br /&gt;
* mais la source de vérité de lancement reste à compléter pour une restauration 100% déterministe&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /etc/caddy/Caddyfile&lt;br /&gt;
* /home/loic/clawd/RAG_openWebUI.md&lt;br /&gt;
* /home/loic/openwebui.tar.gz&lt;br /&gt;
* à identifier puis ajouter : fichier de service exact, compose ou quadlet si retrouvé&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* volume Podman nommé `open-webui` présent sur l&#039;hôte&lt;br /&gt;
* points de montage internes exacts encore à confirmer dans la documentation&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Ollama pour l&#039;inférence locale&lt;br /&gt;
* Caddy 25680 -&amp;gt; 8080&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
À utiliser tant que la source de vérité n&#039;est pas formellement documentée :&lt;br /&gt;
* identifier d&#039;abord le service réel ou la commande réelle avant toute modification&lt;br /&gt;
* commandes de diagnostic recommandées :&lt;br /&gt;
  * `podman ps --all | grep -i open-webui`&lt;br /&gt;
  * `podman inspect open-webui`&lt;br /&gt;
  * `systemctl --user list-unit-files | grep -i open-webui`&lt;br /&gt;
  * `curl -I http://127.0.0.1:8080/`&lt;br /&gt;
&lt;br /&gt;
Explication des commandes :&lt;br /&gt;
* `podman ps --all` : montre les conteneurs actifs et arrêtés.&lt;br /&gt;
* `podman inspect` : permet d&#039;identifier image, volumes, ports et labels du conteneur réel.&lt;br /&gt;
* `systemctl --user list-unit-files` : permet de repérer un éventuel service systemd utilisateur associé.&lt;br /&gt;
* `curl -I` : vérifie rapidement l&#039;accès HTTP local.&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
Le conteneur est actif mais les détails de la méthode de lancement ne sont pas encore documentés dans un quadlet local identifié. Cette page reste donc opérationnelle pour l&#039;accès et la sauvegarde probable, mais incomplète pour la reconstitution exacte du lancement.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* volume Podman nommé open-webui présent sur l&#039;hôte&lt;br /&gt;
* bloc Caddy lié à l&#039;exposition publique&lt;br /&gt;
* chemins de lancement exacts encore à confirmer&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder le volume Podman open-webui s&#039;il correspond bien à l&#039;instance active.&lt;br /&gt;
* Sauvegarder le bloc Caddy et tout fichier de service/compose/quadlet dès qu&#039;il est identifié.&lt;br /&gt;
* Documenter ensuite explicitement les variables d&#039;environnement si elles existent.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer le volume open-webui puis relancer le conteneur/service actif selon la méthode réellement identifiée.&lt;br /&gt;
* Vérifier ensuite la connexion à Ollama et le proxy Caddy.&lt;br /&gt;
* Après identification de la méthode de lancement, compléter cette page avec la commande exacte et ses paramètres.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Dès que le fichier de service exact ou le compose est identifié, l&#039;ajouter ici avec les volumes, variables, ports internes et commande de relance. Mettre à jour cette page à chaque changement d&#039;image, de backend LLM ou de proxy.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_MediaWiki&amp;diff=172</id>
		<title>Trace install tas - MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_MediaWiki&amp;diff=172"/>
		<updated>2026-04-12T16:57:51Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation conteneurs enrichie: runtime, paramètres, ports, volumes, relance et diagnostic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - MediaWiki =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Wiki collaboratif et base documentaire.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8098&lt;br /&gt;
* Public : https://lololand.hopto.org:25698&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8098 local, 25698 public via Caddy&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Stack compose dans /home/loic/mediawiki ; conteneurs mediawiki-app et mediawiki-db.&lt;br /&gt;
&lt;br /&gt;
Principe :&lt;br /&gt;
* `mediawiki-app` sert l&#039;application wiki en HTTP sur le port local 8098&lt;br /&gt;
* `mediawiki-db` fournit la base MariaDB dédiée&lt;br /&gt;
* Caddy publie ensuite le service local vers le port public 25698&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/mediawiki/compose.yaml&lt;br /&gt;
* /home/loic/mediawiki/.env&lt;br /&gt;
* /home/loic/mediawiki/app/LocalSettings.php&lt;br /&gt;
* /home/loic/mediawiki/docs/README.md&lt;br /&gt;
&lt;br /&gt;
== Paramètres clés à documenter dans le compose ==&lt;br /&gt;
Cette page suppose que le compose local est la source de vérité. Pour rester exploitable en maintenance, il faut considérer ces éléments comme prioritaires :&lt;br /&gt;
* image de `mediawiki-app`&lt;br /&gt;
* image de `mediawiki-db`&lt;br /&gt;
* variables injectées via `.env`&lt;br /&gt;
* ports publiés localement&lt;br /&gt;
* bind mounts ou volumes de l&#039;application et de la base&lt;br /&gt;
* éventuelles extensions ou personnalisations chargées par `LocalSettings.php`&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* ./app -&amp;gt; /var/www/html&lt;br /&gt;
  * contient le code applicatif local, les extensions, `LocalSettings.php` et les données nécessaires côté MediaWiki&lt;br /&gt;
* ./db -&amp;gt; /var/lib/mysql&lt;br /&gt;
  * contient les données MariaDB du wiki&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* MariaDB dédiée (mediawiki-db)&lt;br /&gt;
* Caddy 25698 -&amp;gt; 8098&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Relance standard :&lt;br /&gt;
* depuis /home/loic/mediawiki, relancer la stack compose selon la méthode utilisée sur l&#039;hôte&lt;br /&gt;
&lt;br /&gt;
Vérifications utiles :&lt;br /&gt;
* vérifier que `mediawiki-app` écoute bien sur 8098 local&lt;br /&gt;
* vérifier que `mediawiki-db` est sain avant de conclure à une panne applicative&lt;br /&gt;
* tester l&#039;accès local avant l&#039;accès public&lt;br /&gt;
* revalider `LocalSettings.php` après toute restauration&lt;br /&gt;
&lt;br /&gt;
Comme la commande exacte de compose n&#039;est pas recopiée ici, la règle documentaire est : documenter explicitement la commande réelle utilisée dès qu&#039;une modification est faite sur cette stack.&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
Le wiki héberge la documentation d&#039;installation, la trace logicielle et les intégrations Mermaid / PlantUML / BPMN JS.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* Données wiki : /home/loic/mediawiki/app&lt;br /&gt;
* Base : /home/loic/mediawiki/db&lt;br /&gt;
* Variables : /home/loic/mediawiki/.env&lt;br /&gt;
* Documentation locale : /home/loic/mediawiki/docs&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder /home/loic/mediawiki/app, /home/loic/mediawiki/.env et /home/loic/mediawiki/docs.&lt;br /&gt;
* Sauvegarder la base MariaDB via dump ou en copiant /home/loic/mediawiki/db après arrêt propre.&lt;br /&gt;
* Si une extension ou un réglage Caddy change, inclure aussi les fichiers de configuration modifiés dans la sauvegarde documentaire.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer /home/loic/mediawiki/app, /home/loic/mediawiki/.env et /home/loic/mediawiki/db.&lt;br /&gt;
* Relancer la stack compose puis vérifier LocalSettings.php, la connexion à la base et l&#039;accès wiki local/public.&lt;br /&gt;
* Après restauration, revalider les extensions chargées et les éventuels chemins personnalisés.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un ajout d&#039;extensions, d&#039;un changement de compose, de variables .env, d&#039;images, de ports, de Caddy ou de structure documentaire, mettre à jour cette page et les pages de documentation associées.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_CyberChef&amp;diff=171</id>
		<title>Trace install tas - CyberChef</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_CyberChef&amp;diff=171"/>
		<updated>2026-04-12T16:57:51Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation conteneurs enrichie: runtime, paramètres, ports, volumes, relance et diagnostic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - CyberChef =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Boîte à outils de transformation / encodage / analyse.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://10.8.0.1:8091&lt;br /&gt;
* Public : https://lololand.hopto.org:25691&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8091 local, 25691 public&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet /home/loic/.config/containers/systemd/cyberchef.container ; conteneur lancé sous le nom systemd-cyberchef par le générateur Podman/systemd.&lt;br /&gt;
&lt;br /&gt;
Le Quadlet actuel déclare :&lt;br /&gt;
* `Image=ghcr.io/gchq/cyberchef:latest` : image du service&lt;br /&gt;
* `AutoUpdate=registry` : autorise `podman auto-update` à rechercher une image plus récente dans le registre&lt;br /&gt;
* `PublishPort=8091:80` : publie le port 80 du conteneur sur le port 8091 de l&#039;hôte&lt;br /&gt;
&lt;br /&gt;
Le service généré hérite automatiquement de paramètres utiles :&lt;br /&gt;
* `Environment=PODMAN_SYSTEMD_UNIT=%n` : ajoute le label attendu pour le redémarrage automatique via systemd après auto-update&lt;br /&gt;
* `ExecStart=/usr/bin/podman run ... --publish 8091:80 ...` : commande générée par Quadlet, à ne pas dupliquer dans un service manuel séparé&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/cyberchef.container&lt;br /&gt;
* sauvegarde historique d&#039;ancien service manuel si conservée hors production&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* Aucun volume monté dans le Quadlet actuel&lt;br /&gt;
* Service stateless dans l&#039;état actuel&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Caddy 25691 -&amp;gt; 8091&lt;br /&gt;
* podman-auto-update.timer pour les mises à jour automatiques quotidiennes de l&#039;hôte&lt;br /&gt;
&lt;br /&gt;
== Procédure de relance / diagnostic ==&lt;br /&gt;
Relance standard :&lt;br /&gt;
* `systemctl --user restart cyberchef.service`&lt;br /&gt;
&lt;br /&gt;
Vérifications utiles :&lt;br /&gt;
* `systemctl --user cat cyberchef.service`&lt;br /&gt;
* `systemctl --user status cyberchef.service --no-pager -l`&lt;br /&gt;
* `curl -I http://127.0.0.1:8091/`&lt;br /&gt;
* `podman auto-update --dry-run`&lt;br /&gt;
&lt;br /&gt;
Explication des commandes :&lt;br /&gt;
* `systemctl --user cat` : affiche l&#039;unité générée réelle, utile pour vérifier ce que Quadlet produit effectivement.&lt;br /&gt;
* `status --no-pager -l` : montre l&#039;état complet sans couper les lignes.&lt;br /&gt;
* `curl -I` : vérifie rapidement la disponibilité HTTP.&lt;br /&gt;
* `podman auto-update --dry-run` : teste la détection de mise à jour sans rien changer.&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
* Service simple, stateless, basé sur ghcr.io/gchq/cyberchef:latest avec AutoUpdate=registry.&lt;br /&gt;
* Correction importante appliquée : il faut utiliser le Quadlet comme source de vérité. Un ancien service systemd manuel lançant `podman run --label io.containers.autoupdate=registry ...` cassait `podman auto-update` car il n&#039;ajoutait pas correctement le label `PODMAN_SYSTEMD_UNIT` attendu.&lt;br /&gt;
* Ne pas recréer de service manuel parallèle tant que le Quadlet remplit le besoin.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/cyberchef.container&lt;br /&gt;
* éventuellement le bloc Caddy correspondant si modifié&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder le quadlet cyberchef.container suffit généralement, le service étant stateless.&lt;br /&gt;
* Sauvegarder aussi la configuration proxy si l&#039;exposition publique évolue.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer le quadlet cyberchef.container.&lt;br /&gt;
* Recharger systemd user avec `systemctl --user daemon-reload`.&lt;br /&gt;
* Relancer le service avec `systemctl --user restart cyberchef.service`.&lt;br /&gt;
* Vérifier ensuite l&#039;accès HTTP local et l&#039;état de `podman auto-update --dry-run`.&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de port, de publication, d&#039;auto-update ou de méthode de lancement, mettre à jour cette page.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Extensions&amp;diff=170</id>
		<title>Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Extensions&amp;diff=170"/>
		<updated>2026-04-12T16:57:50Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation conteneurs enrichie: runtime, paramètres, ports, volumes, relance et diagnostic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=169</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=169"/>
		<updated>2026-04-11T08:50:49Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Séparation des ports publics et domaines dans le tableau&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Ports publics !! Domaines !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681 / 25692 || dt.lololand.org || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682 || vault.lololand.org || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683 || kuma.lololand.org || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689 || headscale.lololand.org || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693 || bezel.lololand.org || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || home.lololand.org || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698 || wiki.lololand.org || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678 || n8n.lololand.org || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || 25700 || hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701 || trilium.lololand.org || Base de connaissances / notes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=168</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=168"/>
		<updated>2026-04-11T08:49:28Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Correction du tableau : Hugo et Trilium&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Public / sous-domaines !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680, owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681, 25692, dt.lololand.org || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682, vault.lololand.org || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683, kuma.lololand.org || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688, immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689, headscale.lololand.org || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691, cyberchef.lololand.org || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693, bezel.lololand.org || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696, nextcloud.lololand.org || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697, home.lololand.org || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698, wiki.lololand.org || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678, n8n.lololand.org || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || 25700, hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701, trilium.lololand.org || Base de connaissances / notes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=167</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=167"/>
		<updated>2026-04-11T08:37:48Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Mise à jour du tableau avec les sous-domaines visibles dans Caddy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Public / sous-domaines !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680, owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681, 25692, dt.lololand.org || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682, vault.lololand.org || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683, kuma.lololand.org || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688, immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689, headscale.lololand.org || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691, cyberchef.lololand.org || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693, bezel.lololand.org || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696, nextcloud.lololand.org || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697, home.lololand.org || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698, wiki.lololand.org || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678, n8n.lololand.org || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701 || Base de connaissances / notes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=166</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=166"/>
		<updated>2026-04-11T08:23:29Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Correction de la trace centrale : réintégration de Trilium Notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Public !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680 || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681 / 25692 || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682 || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683 || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689 || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693 || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698 || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678 || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701 || Base de connaissances / notes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=165</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=165"/>
		<updated>2026-04-11T07:45:57Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Mise à jour de la trace centrale avec Hugo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Hugo]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Public !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680 || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681 / 25692 || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682 || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683 || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689 || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693 || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698 || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678 || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Hugo || 8100 || hugo.lololand.org || Site statique / documentation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hugo&amp;diff=164</id>
		<title>Trace install tas - Hugo</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Hugo&amp;diff=164"/>
		<updated>2026-04-11T07:45:57Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajout de la trace d&amp;#039;installation de Hugo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Hugo =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Site statique de documentation Hugo servi sur tas via un conteneur Nginx.&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://127.0.0.1:8100&lt;br /&gt;
* Public : https://hugo.lololand.org/&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8100 local, 443 public via domaine dédié&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet systemd user : hugo-docs.container ; conteneur hugo-docs ; unité générée : hugo-docs.service&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/hugo-docs.container&lt;br /&gt;
* /home/loic/sites/hugo-docs/hugo.toml&lt;br /&gt;
* /home/loic/sites/hugo-docs/publish.sh&lt;br /&gt;
* /etc/caddy/Caddyfile&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* /home/loic/sites/hugo-docs/public:/usr/share/nginx/html:ro&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* network-online.target&lt;br /&gt;
* Caddy sur le domaine `hugo.lololand.org`&lt;br /&gt;
* publication statique générée dans `/home/loic/sites/hugo-docs/public`&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
* Image de service : docker.io/library/nginx:alpine&lt;br /&gt;
* Déploiement rootless via Quadlet Podman&lt;br /&gt;
* Publication locale : 8100 -&amp;gt; 80 dans le conteneur&lt;br /&gt;
* Service actif : hugo-docs.service&lt;br /&gt;
* Build du site via `publish.sh`, qui lance `docker.io/klakegg/hugo:ext-alpine` dans un conteneur Podman et génère le contenu dans `./public`&lt;br /&gt;
&lt;br /&gt;
== Configuration Hugo ==&lt;br /&gt;
* baseURL = https://hugo.lololand.org/&lt;br /&gt;
* languageCode = fr-fr&lt;br /&gt;
* title = Hugo Docs Tas&lt;br /&gt;
* enableRobotsTXT = true&lt;br /&gt;
&lt;br /&gt;
== Vérifications post-installation ==&lt;br /&gt;
* `systemctl --user status hugo-docs.service`&lt;br /&gt;
* `curl -I http://127.0.0.1:8100`&lt;br /&gt;
* vérifier le domaine public `https://hugo.lololand.org/`&lt;br /&gt;
&lt;br /&gt;
== Supervision ==&lt;br /&gt;
Le service est déjà supervisé par Uptime Kuma, comme montré par les requêtes User-Agent `Uptime-Kuma/2.2.1` dans les logs du conteneur.&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* Sources Hugo : /home/loic/sites/hugo-docs&lt;br /&gt;
* Statique publié : /home/loic/sites/hugo-docs/public&lt;br /&gt;
* Quadlet : /home/loic/.config/containers/systemd/hugo-docs.container&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder /home/loic/sites/hugo-docs&lt;br /&gt;
* Sauvegarder le quadlet hugo-docs.container&lt;br /&gt;
* Sauvegarder la configuration Caddy associée au domaine `hugo.lololand.org`&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer /home/loic/sites/hugo-docs&lt;br /&gt;
* Restaurer le quadlet hugo-docs.container&lt;br /&gt;
* Regénérer le site si nécessaire via `publish.sh`&lt;br /&gt;
* Relancer `systemctl --user daemon-reload` puis `systemctl --user start hugo-docs.service`&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de domaine, de port, de chemin de build ou de mode de publication, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=163</id>
		<title>Trace install tas</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=163"/>
		<updated>2026-04-11T06:55:20Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Mise à jour de la trace centrale avec Trilium Notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= trace install tas =&lt;br /&gt;
&lt;br /&gt;
Cette page sert de &#039;&#039;&#039;trace d&#039;installation&#039;&#039;&#039; pour les principales briques logicielles déployées sur la machine &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Objectif ==&lt;br /&gt;
Documenter, pour chaque brique logicielle :&lt;br /&gt;
* son rôle&lt;br /&gt;
* son exposition locale et publique&lt;br /&gt;
* ses ports&lt;br /&gt;
* ses conteneurs / services&lt;br /&gt;
* ses remarques d&#039;installation et de configuration&lt;br /&gt;
&lt;br /&gt;
== Règle générale de déploiement ==&lt;br /&gt;
Les installations doivent privilégier :&lt;br /&gt;
* des &#039;&#039;&#039;images Podman&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;gérées par des services&#039;&#039;&#039;&lt;br /&gt;
* et &#039;&#039;&#039;mises à jour régulièrement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pages spécifiques ==&lt;br /&gt;
* [[Trace install tas - Open WebUI]]&lt;br /&gt;
* [[Trace install tas - Dependency-Track]]&lt;br /&gt;
* [[Trace install tas - Vaultwarden]]&lt;br /&gt;
* [[Trace install tas - Uptime Kuma]]&lt;br /&gt;
* [[Trace install tas - Scriberr]]&lt;br /&gt;
* [[Trace install tas - Social Analyzer]]&lt;br /&gt;
* [[Trace install tas - Immich]]&lt;br /&gt;
* [[Trace install tas - Headscale]]&lt;br /&gt;
* [[Trace install tas - CyberChef]]&lt;br /&gt;
* [[Trace install tas - Beszel]]&lt;br /&gt;
* [[Trace install tas - Paperless-ngx]]&lt;br /&gt;
* [[Trace install tas - Karakeep]]&lt;br /&gt;
* [[Trace install tas - Nextcloud]]&lt;br /&gt;
* [[Trace install tas - Homepage]]&lt;br /&gt;
* [[Trace install tas - MediaWiki]]&lt;br /&gt;
* [[Trace install tas - n8n]]&lt;br /&gt;
* [[Trace install tas - Ollama]]&lt;br /&gt;
* [[Trace install tas - Trilium Notes]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Public !! Rôle&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8080 || 25680 || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track || 8081 / 8092 || 25681 / 25692 || SBOM / vuln&lt;br /&gt;
|-&lt;br /&gt;
| Vaultwarden || 8082 || 25682 || Gestion de secrets&lt;br /&gt;
|-&lt;br /&gt;
| Uptime Kuma || 8083 || 25683 || Supervision&lt;br /&gt;
|-&lt;br /&gt;
| Scriberr || 8084 || 25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || OSINT / profils sociaux&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale || 8089 / 8090 || 25689 || Tailscale self-hosted + UI&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || Outils de transformation&lt;br /&gt;
|-&lt;br /&gt;
| Beszel || 8093 || 25693 || Monitoring léger&lt;br /&gt;
|-&lt;br /&gt;
| Paperless-ngx || 8094 || 25694 || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || Fichiers / groupware&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || Tableau de bord&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki || 8098 || 25698 || Wiki collaboratif&lt;br /&gt;
|-&lt;br /&gt;
| n8n || 5678 || 25678 || Automatisation&lt;br /&gt;
|-&lt;br /&gt;
| Ollama || 11434 || 25434 || API LLM locale&lt;br /&gt;
|-&lt;br /&gt;
| Trilium Notes || 8101 || 25701 || Base de connaissances / notes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Remarque ==&lt;br /&gt;
Cette documentation est une trace opérationnelle. Elle doit évoluer lorsque :&lt;br /&gt;
* de nouveaux services sont ajoutés&lt;br /&gt;
* des ports changent&lt;br /&gt;
* les méthodes d&#039;installation ou de mise à jour changent&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Trilium_Notes&amp;diff=162</id>
		<title>Trace install tas - Trilium Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Trilium_Notes&amp;diff=162"/>
		<updated>2026-04-11T06:55:20Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajout de la trace d&amp;#039;installation de Trilium Notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Trilium Notes =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
Base de connaissances personnelle auto-hébergée (notes, arborescences, recherche, synchronisation web).&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
* Local : http://127.0.0.1:8101&lt;br /&gt;
* Public : https://lololand.hopto.org:25701&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
8101 local, 25701 public&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
Quadlet systemd user : trilium.container ; conteneur trilium ; unité générée : trilium.service&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* /home/loic/.config/containers/systemd/trilium.container&lt;br /&gt;
* /etc/caddy/Caddyfile&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* /home/loic/trilium-data:/home/node/trilium-data&lt;br /&gt;
&lt;br /&gt;
== Variables d&#039;environnement ==&lt;br /&gt;
* TRILIUM_DATA_DIR=/home/node/trilium-data&lt;br /&gt;
* TZ=Europe/Paris&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* network-online.target&lt;br /&gt;
* Caddy 25701 -&amp;gt; 8101&lt;br /&gt;
* podman-auto-update.timer pour les mises à jour automatiques de l&#039;image&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
* Image utilisée : docker.io/triliumnext/notes:latest&lt;br /&gt;
* Déploiement rootless via Quadlet Podman&lt;br /&gt;
* Publication locale : 8101 -&amp;gt; 8080 dans le conteneur&lt;br /&gt;
* Démarrage du service via l&#039;unité générée trilium.service après `systemctl --user daemon-reload`&lt;br /&gt;
&lt;br /&gt;
== Vérifications post-installation ==&lt;br /&gt;
* `systemctl --user status trilium.service`&lt;br /&gt;
* `curl -I http://127.0.0.1:8101`&lt;br /&gt;
* `curl -Ik https://lololand.hopto.org:25701`&lt;br /&gt;
&lt;br /&gt;
== Supervision ==&lt;br /&gt;
Uptime Kuma :&lt;br /&gt;
* Nom : Trilium Notes&lt;br /&gt;
* Type : HTTP(s)&lt;br /&gt;
* URL : https://lololand.hopto.org:25701&lt;br /&gt;
* Intervalle : 60 secondes&lt;br /&gt;
* Codes acceptés : 200-399&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* Données applicatives : /home/loic/trilium-data&lt;br /&gt;
* Quadlet : /home/loic/.config/containers/systemd/trilium.container&lt;br /&gt;
* Reverse proxy : /etc/caddy/Caddyfile&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder /home/loic/trilium-data&lt;br /&gt;
* Sauvegarder le quadlet trilium.container&lt;br /&gt;
* Sauvegarder /etc/caddy/Caddyfile avant modification&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer /home/loic/trilium-data&lt;br /&gt;
* Restaurer le quadlet trilium.container&lt;br /&gt;
* Restaurer /etc/caddy/Caddyfile si le reverse proxy doit être annulé&lt;br /&gt;
* Relancer `systemctl --user daemon-reload` puis `systemctl --user start trilium.service`&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement d&#039;image, de port, de volume, de reverse proxy ou de supervision, mettre à jour cette page et la trace centrale.&lt;br /&gt;
&lt;br /&gt;
== Trace documentaire ==&lt;br /&gt;
Cette page fait partie de [[Trace install tas]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
</feed>