<?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-09-22T13:39:14Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=242</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=242"/>
		<updated>2026-09-09T20:46:42Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documenter l accès VPN OpenHands dans la trace 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;
* [[Trace install tas - SGLang]]&lt;br /&gt;
* [[Trace install tas - DeepSeek Harness (DSH)]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
&lt;br /&gt;
Les ports locaux et publics ci-dessous sont alignés sur les publications et reverse-proxy observés dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt; le 14 août 2026. Un port local peut rester fermé lorsqu’un service est arrêté ou en échec.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Port public Caddy !! Domaine / accès !! Rôle / état&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8085 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track frontend || 8103 || 25681 || dt.lololand.org || Frontend ; répond HTTP 200&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track API || 8092 || 25692 || lololand.hopto.org:25692 || Backend ; service arrêté sur base H2 corrompue&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 || lololand.hopto.org:25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| CyberBro || 8102 || 25685 || cyberbro.lololand.org || Analyse / visualisation&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || social-analyzer.lololand.org || OSINT ; racine HTTP 404 mais service répond&lt;br /&gt;
|-&lt;br /&gt;
| Greenbone OpenVAS || 9392 || 25687 || lololand.hopto.org:25687 || Scanner ; GSA non disponible pendant la relance&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale + UI || 8089 / 8090 || 25689 || headscale.lololand.org || Contrôle réseau privé + interface&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation ; corrigé et HTTP 200&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 || paperless.lololand.org || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || karakeep.lololand.org || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware ; état applicatif sain&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || lololand.hopto.org:25697 || 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 AMD || 11434 || 25434 || ollama.lololand.org || API LLM protégée&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;
| Gitea || 8105 || 25702 || gitea.lololand.org || Forge Git&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1110 / 1143 / 1465 / 1587 / 1993 / 1995 / 14190 / 18080 / 18443 || aucun déclaré par Caddy || mail.lololand.org / lololand.org || Serveur mail&lt;br /&gt;
|-&lt;br /&gt;
| Hermes Agent || 8642 || aucun || accès local || Agent IA outillé&lt;br /&gt;
|-&lt;br /&gt;
| DeepSeek Harness (DSH) || 3080 || aucun || accès local || Interface Web d’agent de codage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== État de vérification — 14 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Firewall :&#039;&#039;&#039; les entrées sont maintenues fermées temporairement pendant l’audit et les corrections. La règle active nftables nécessite une vérification root pour être détaillée.&lt;br /&gt;
* &#039;&#039;&#039;Nextcloud :&#039;&#039;&#039; le service et la base sont actifs ; &amp;lt;code&amp;gt;php occ status&amp;lt;/code&amp;gt; indique Nextcloud 34.0.2, maintenance désactivée et aucune mise à niveau de base en attente. Le HTTP local redirige vers l’URL canonique HTTPS.&lt;br /&gt;
* &#039;&#039;&#039;Dependency-Track :&#039;&#039;&#039; le frontend 8103 répond ; l’API 8092 est indisponible. Les journaux indiquent une corruption H2 (&amp;lt;code&amp;gt;MVStoreException: Chunk 102363 not found&amp;lt;/code&amp;gt;). Le volume a été sauvegardé avant toute tentative de correction.&lt;br /&gt;
* &#039;&#039;&#039;Social Analyzer :&#039;&#039;&#039; le conteneur et le port 8086 répondent ; la racine renvoie HTTP 404, ce qui indique une route applicative absente plutôt qu’un port fermé.&lt;br /&gt;
* &#039;&#039;&#039;Greenbone OpenVAS :&#039;&#039;&#039; la relance a été tentée sans suppression de volumes. La pile reste en initialisation avec des dépendances de flux en état unhealthy ; 9392 n’est pas encore disponible.&lt;br /&gt;
* &#039;&#039;&#039;CyberChef :&#039;&#039;&#039; corrigé. L’image écoute sur 8080 dans le conteneur, alors que le Quadlet publiait 8091 vers 80 ; le mapping est maintenant 8091:8080 et le test local renvoie HTTP 200.&lt;br /&gt;
* &#039;&#039;&#039;Tailscale :&#039;&#039;&#039; le client système est installé et actif. Sa suppression nécessite les privilèges root ; Headscale est un service distinct et n’a pas été supprimé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les actions ayant modifié des services ou fichiers ont conservé une sauvegarde préalable dans &amp;lt;code&amp;gt;/home/loic/backups/&amp;lt;/code&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DeepSeek Harness (DSH) ==&lt;br /&gt;
&lt;br /&gt;
DSH est déployé sur &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt; en Podman rootless avec l’image locale&lt;br /&gt;
&amp;lt;code&amp;gt;localhost/deepseek-harness:0.1.0-rc.7&amp;lt;/code&amp;gt;. L’unité Quadlet génère&lt;br /&gt;
&amp;lt;code&amp;gt;deepseek-harness.service&amp;lt;/code&amp;gt;, qui écoute uniquement sur&lt;br /&gt;
&amp;lt;code&amp;gt;127.0.0.1:3080&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Commande :&#039;&#039;&#039; &amp;lt;code&amp;gt;dsh web --host 127.0.0.1 --port 3080 --no-open&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Automatisation :&#039;&#039;&#039; &amp;lt;code&amp;gt;deepseek-harness-autostart.service&amp;lt;/code&amp;gt;, unité systemd utilisateur activée dans &amp;lt;code&amp;gt;default.target&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Démarrage :&#039;&#039;&#039; &amp;lt;code&amp;gt;systemctl --user start deepseek-harness-autostart.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Arrêt :&#039;&#039;&#039; &amp;lt;code&amp;gt;systemctl --user stop deepseek-harness.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Contrôle :&#039;&#039;&#039; &amp;lt;code&amp;gt;curl -fsS http://127.0.0.1:3080/&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;podman ps --filter name=deepseek-harness&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Exploitation détaillée :&#039;&#039;&#039; [[Trace install tas - DeepSeek Harness (DSH)]].&lt;br /&gt;
&lt;br /&gt;
== ngrok ==&lt;br /&gt;
&lt;br /&gt;
ngrok fournit un tunnel HTTPS public vers le point d’entrée Caddy local.&lt;br /&gt;
Le domaine fixe est configuré dans le service utilisateur&lt;br /&gt;
&amp;lt;code&amp;gt;ngrok-8080.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Commande : &amp;lt;code&amp;gt;ngrok http --url=https://noella-oxidizable-nonsuppositively.ngrok-free.dev 8099 --config /home/loic/.config/ngrok/ngrok.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Automatisation : unité systemd utilisateur, activée dans &amp;lt;code&amp;gt;default.target&amp;lt;/code&amp;gt;, avec redémarrage automatique après panne.&lt;br /&gt;
* Démarrage : &amp;lt;code&amp;gt;systemctl --user start ngrok-8080.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Arrêt : &amp;lt;code&amp;gt;systemctl --user stop ngrok-8080.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Exploitation détaillée : [[Trace install tas - ngrok]]&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;br /&gt;
&lt;br /&gt;
== État d’exploitation actuel — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
L&#039;exploitation courante repose sur &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;, avec Caddy comme reverse proxy public. Les sources de vérité sont :&lt;br /&gt;
&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/&amp;lt;/code&amp;gt;&lt;br /&gt;
* systemd utilisateur : &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Caddy : &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Index thématique des pages : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ports hôte &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt; sont réservés et ne doivent pas être publiés par un conteneur. Les pages spécifiques MediaWiki, Immich et Ollama ont été actualisées pour refléter leurs unités Quadlet et leurs chemins de données actuels.&lt;br /&gt;
&lt;br /&gt;
== Gitea ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Gitea]] : service Git exécuté par Podman rootless + Quadlet.&lt;br /&gt;
* Image Gitea versionnée : &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Image PostgreSQL versionnée : &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Accès local : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; ; URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; ; accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le mot de passe PostgreSQL est fourni par le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; et ne figure plus dans les Quadlets.&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-15 — PostgreSQL, SBOM et tableau de bord ==&lt;br /&gt;
* Dependency-Track utilise PostgreSQL neuf ; voir [[Trace install tas - Dependency-Track PostgreSQL et SBOM]].&lt;br /&gt;
* Trivy et OSV-Scanner ont alimenté les projets SBOM du serveur tas ; voir [[Trace install tas - OSV-Scanner]].&lt;br /&gt;
* Homarr est disponible localement sur 8106 avec les signets des services et les widgets Beszel ; voir [[Trace install tas - Homarr]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-20 — SGLang Qwen3.8 W8A8 ==&lt;br /&gt;
* Le service [[Trace install tas - SGLang|SGLang]] est maintenant actif sur la RX 7900 XTX avec une image ROCm dédiée à &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Modèle : &amp;lt;code&amp;gt;qwen3.8-27b-w8a8&amp;lt;/code&amp;gt;, contexte 32 768, API locale &amp;lt;code&amp;gt;127.0.0.1:30000/v1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Quadlet rootless : &amp;lt;code&amp;gt;sglang.service&amp;lt;/code&amp;gt; ; conteneur &amp;lt;code&amp;gt;sglang-qwen38-w8a8&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le test déterministe &amp;lt;code&amp;gt;17 + 25&amp;lt;/code&amp;gt; renvoie &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; avant et après redémarrage.&lt;br /&gt;
* Le profil consomme environ 22,5 Go de VRAM ; éviter de charger simultanément un gros modèle Ollama.&lt;br /&gt;
&lt;br /&gt;
== Dify — 2026-09-09 ==&lt;br /&gt;
* [[Trace install tas - Dify]] : Dify Community Edition 1.17.0 en Podman rootless, frontend local 8107, URL préparée https://dify.lololand.org, mise à jour hebdomadaire par dify-update.timer.&lt;br /&gt;
&lt;br /&gt;
== OpenHands — 2026-09-09 ==&lt;br /&gt;
&lt;br /&gt;
OpenHands est installé via le Quadlet rootless &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/openhands.container&amp;lt;/code&amp;gt;, avec l&#039;interface locale sur &amp;lt;code&amp;gt;127.0.0.1:8108&amp;lt;/code&amp;gt;. Sa sandbox personnalisée contient OpenCode CLI et Trivy, et rejoint le réseau &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt; pour accéder à Dify. Voir [[Trace install tas - OpenHands]].&lt;br /&gt;
&lt;br /&gt;
== OpenHands — accès VPN — 2026-09-09 ==&lt;br /&gt;
&lt;br /&gt;
OpenHands est maintenant publié sur &amp;lt;code&amp;gt;10.8.0.1:8108&amp;lt;/code&amp;gt;, l’adresse de l’interface VPN, tout en conservant &amp;lt;code&amp;gt;127.0.0.1:8108&amp;lt;/code&amp;gt; pour l’accès local. L’adresse LAN &amp;lt;code&amp;gt;192.168.1.55:8108&amp;lt;/code&amp;gt; reste volontairement non publiée.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_OpenHands&amp;diff=241</id>
		<title>Trace install tas - OpenHands</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_OpenHands&amp;diff=241"/>
		<updated>2026-09-09T20:46:42Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajouter l accès VPN OpenHands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - OpenHands =&lt;br /&gt;
&lt;br /&gt;
== État ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Déployé et validé le 9 septembre 2026&#039;&#039;&#039; sur tas.&lt;br /&gt;
&lt;br /&gt;
* Service : &amp;lt;code&amp;gt;openhands.service&amp;lt;/code&amp;gt;, Quadlet Podman rootless systemd utilisateur.&lt;br /&gt;
* Interface locale : &amp;lt;code&amp;gt;http://127.0.0.1:8108&amp;lt;/code&amp;gt; (hôte uniquement).&lt;br /&gt;
* Interface VPN : &amp;lt;code&amp;gt;http://10.8.0.1:8108&amp;lt;/code&amp;gt;.&lt;br /&gt;
* URL publique prévue : &amp;lt;code&amp;gt;https://openhands.lololand.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Données : &amp;lt;code&amp;gt;/home/loic/.openhands&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Workspace : &amp;lt;code&amp;gt;/home/loic/openhands/workspace&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Runtime et outils ==&lt;br /&gt;
&lt;br /&gt;
Le runtime est construit depuis l’image officielle &amp;lt;code&amp;gt;ghcr.io/openhands/agent-server:1.26.0-python&amp;lt;/code&amp;gt; dans l’image locale &amp;lt;code&amp;gt;localhost/openhands-runtime-tools:1.26.0-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* OpenCode CLI &amp;lt;code&amp;gt;1.14.48&amp;lt;/code&amp;gt;, configuré sans secret vers Ollama.&lt;br /&gt;
* Trivy &amp;lt;code&amp;gt;0.74.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Ollama : &amp;lt;code&amp;gt;http://host.containers.internal:11434&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Dify : &amp;lt;code&amp;gt;http://docker_nginx_1&amp;lt;/code&amp;gt; via le réseau Podman &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Les sandboxes rejoignent &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;SANDBOX_ADDITIONAL_NETWORKS&amp;lt;/code&amp;gt;. Un test équivalent a confirmé HTTP 200 vers Dify et Ollama, ainsi que la disponibilité d’OpenCode et Trivy.&lt;br /&gt;
&lt;br /&gt;
== Mises à jour ==&lt;br /&gt;
&lt;br /&gt;
Le timer &amp;lt;code&amp;gt;openhands-update.timer&amp;lt;/code&amp;gt; détecte automatiquement les dernières versions publiées de Trivy et OpenCode, reconstruit l’image runtime avec &amp;lt;code&amp;gt;--pull=always&amp;lt;/code&amp;gt; puis redémarre le service chaque dimanche vers 05:00. L’image UI porte aussi &amp;lt;code&amp;gt;AutoUpdate=registry&amp;lt;/code&amp;gt;. Les versions détectées sont enregistrées dans le journal systemd.&lt;br /&gt;
&lt;br /&gt;
== Caddy ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;caddy&amp;quot;&amp;gt;&lt;br /&gt;
openhands.lololand.org {&lt;br /&gt;
    reverse_proxy 127.0.0.1:8108&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retour arrière ==&lt;br /&gt;
&lt;br /&gt;
Le Quadlet et la documentation précédents sont sauvegardés sous &amp;lt;code&amp;gt;/home/loic/backups/openhands-20260909-175838/&amp;lt;/code&amp;gt;. Les credentials OpenCode de l’hôte et les clés OpenRouter ne sont pas montés dans le runtime.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_OpenHands&amp;diff=240</id>
		<title>Trace install tas - OpenHands</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_OpenHands&amp;diff=240"/>
		<updated>2026-09-09T19:39:19Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Automatiser les mises à jour Trivy et OpenCode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - OpenHands =&lt;br /&gt;
&lt;br /&gt;
== État ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Déployé et validé le 9 septembre 2026&#039;&#039;&#039; sur tas.&lt;br /&gt;
&lt;br /&gt;
* Service : &amp;lt;code&amp;gt;openhands.service&amp;lt;/code&amp;gt;, Quadlet Podman rootless systemd utilisateur.&lt;br /&gt;
* Interface locale : &amp;lt;code&amp;gt;http://127.0.0.1:8108&amp;lt;/code&amp;gt;.&lt;br /&gt;
* URL publique prévue : &amp;lt;code&amp;gt;https://openhands.lololand.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Données : &amp;lt;code&amp;gt;/home/loic/.openhands&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Workspace : &amp;lt;code&amp;gt;/home/loic/openhands/workspace&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Runtime et outils ==&lt;br /&gt;
&lt;br /&gt;
Le runtime est construit depuis l’image officielle &amp;lt;code&amp;gt;ghcr.io/openhands/agent-server:1.26.0-python&amp;lt;/code&amp;gt; dans l’image locale &amp;lt;code&amp;gt;localhost/openhands-runtime-tools:1.26.0-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* OpenCode CLI &amp;lt;code&amp;gt;1.14.48&amp;lt;/code&amp;gt;, configuré sans secret vers Ollama.&lt;br /&gt;
* Trivy &amp;lt;code&amp;gt;0.74.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Ollama : &amp;lt;code&amp;gt;http://host.containers.internal:11434&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Dify : &amp;lt;code&amp;gt;http://docker_nginx_1&amp;lt;/code&amp;gt; via le réseau Podman &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Les sandboxes rejoignent &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;SANDBOX_ADDITIONAL_NETWORKS&amp;lt;/code&amp;gt;. Un test équivalent a confirmé HTTP 200 vers Dify et Ollama, ainsi que la disponibilité d’OpenCode et Trivy.&lt;br /&gt;
&lt;br /&gt;
== Mises à jour ==&lt;br /&gt;
&lt;br /&gt;
Le timer &amp;lt;code&amp;gt;openhands-update.timer&amp;lt;/code&amp;gt; détecte automatiquement les dernières versions publiées de Trivy et OpenCode, reconstruit l’image runtime avec &amp;lt;code&amp;gt;--pull=always&amp;lt;/code&amp;gt; puis redémarre le service chaque dimanche vers 05:00. L’image UI porte aussi &amp;lt;code&amp;gt;AutoUpdate=registry&amp;lt;/code&amp;gt;. Les versions détectées sont enregistrées dans le journal systemd.&lt;br /&gt;
&lt;br /&gt;
== Caddy ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;caddy&amp;quot;&amp;gt;&lt;br /&gt;
openhands.lololand.org {&lt;br /&gt;
    reverse_proxy 127.0.0.1:8108&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retour arrière ==&lt;br /&gt;
&lt;br /&gt;
Le Quadlet et la documentation précédents sont sauvegardés sous &amp;lt;code&amp;gt;/home/loic/backups/openhands-20260909-175838/&amp;lt;/code&amp;gt;. Les credentials OpenCode de l’hôte et les clés OpenRouter ne sont pas montés dans le runtime.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=239</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=239"/>
		<updated>2026-09-09T16:01:21Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajouter OpenHands à la trace 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;
* [[Trace install tas - SGLang]]&lt;br /&gt;
* [[Trace install tas - DeepSeek Harness (DSH)]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
&lt;br /&gt;
Les ports locaux et publics ci-dessous sont alignés sur les publications et reverse-proxy observés dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt; le 14 août 2026. Un port local peut rester fermé lorsqu’un service est arrêté ou en échec.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Port public Caddy !! Domaine / accès !! Rôle / état&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8085 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track frontend || 8103 || 25681 || dt.lololand.org || Frontend ; répond HTTP 200&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track API || 8092 || 25692 || lololand.hopto.org:25692 || Backend ; service arrêté sur base H2 corrompue&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 || lololand.hopto.org:25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| CyberBro || 8102 || 25685 || cyberbro.lololand.org || Analyse / visualisation&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || social-analyzer.lololand.org || OSINT ; racine HTTP 404 mais service répond&lt;br /&gt;
|-&lt;br /&gt;
| Greenbone OpenVAS || 9392 || 25687 || lololand.hopto.org:25687 || Scanner ; GSA non disponible pendant la relance&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale + UI || 8089 / 8090 || 25689 || headscale.lololand.org || Contrôle réseau privé + interface&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation ; corrigé et HTTP 200&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 || paperless.lololand.org || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || karakeep.lololand.org || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware ; état applicatif sain&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || lololand.hopto.org:25697 || 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 AMD || 11434 || 25434 || ollama.lololand.org || API LLM protégée&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;
| Gitea || 8105 || 25702 || gitea.lololand.org || Forge Git&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1110 / 1143 / 1465 / 1587 / 1993 / 1995 / 14190 / 18080 / 18443 || aucun déclaré par Caddy || mail.lololand.org / lololand.org || Serveur mail&lt;br /&gt;
|-&lt;br /&gt;
| Hermes Agent || 8642 || aucun || accès local || Agent IA outillé&lt;br /&gt;
|-&lt;br /&gt;
| DeepSeek Harness (DSH) || 3080 || aucun || accès local || Interface Web d’agent de codage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== État de vérification — 14 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Firewall :&#039;&#039;&#039; les entrées sont maintenues fermées temporairement pendant l’audit et les corrections. La règle active nftables nécessite une vérification root pour être détaillée.&lt;br /&gt;
* &#039;&#039;&#039;Nextcloud :&#039;&#039;&#039; le service et la base sont actifs ; &amp;lt;code&amp;gt;php occ status&amp;lt;/code&amp;gt; indique Nextcloud 34.0.2, maintenance désactivée et aucune mise à niveau de base en attente. Le HTTP local redirige vers l’URL canonique HTTPS.&lt;br /&gt;
* &#039;&#039;&#039;Dependency-Track :&#039;&#039;&#039; le frontend 8103 répond ; l’API 8092 est indisponible. Les journaux indiquent une corruption H2 (&amp;lt;code&amp;gt;MVStoreException: Chunk 102363 not found&amp;lt;/code&amp;gt;). Le volume a été sauvegardé avant toute tentative de correction.&lt;br /&gt;
* &#039;&#039;&#039;Social Analyzer :&#039;&#039;&#039; le conteneur et le port 8086 répondent ; la racine renvoie HTTP 404, ce qui indique une route applicative absente plutôt qu’un port fermé.&lt;br /&gt;
* &#039;&#039;&#039;Greenbone OpenVAS :&#039;&#039;&#039; la relance a été tentée sans suppression de volumes. La pile reste en initialisation avec des dépendances de flux en état unhealthy ; 9392 n’est pas encore disponible.&lt;br /&gt;
* &#039;&#039;&#039;CyberChef :&#039;&#039;&#039; corrigé. L’image écoute sur 8080 dans le conteneur, alors que le Quadlet publiait 8091 vers 80 ; le mapping est maintenant 8091:8080 et le test local renvoie HTTP 200.&lt;br /&gt;
* &#039;&#039;&#039;Tailscale :&#039;&#039;&#039; le client système est installé et actif. Sa suppression nécessite les privilèges root ; Headscale est un service distinct et n’a pas été supprimé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les actions ayant modifié des services ou fichiers ont conservé une sauvegarde préalable dans &amp;lt;code&amp;gt;/home/loic/backups/&amp;lt;/code&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DeepSeek Harness (DSH) ==&lt;br /&gt;
&lt;br /&gt;
DSH est déployé sur &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt; en Podman rootless avec l’image locale&lt;br /&gt;
&amp;lt;code&amp;gt;localhost/deepseek-harness:0.1.0-rc.7&amp;lt;/code&amp;gt;. L’unité Quadlet génère&lt;br /&gt;
&amp;lt;code&amp;gt;deepseek-harness.service&amp;lt;/code&amp;gt;, qui écoute uniquement sur&lt;br /&gt;
&amp;lt;code&amp;gt;127.0.0.1:3080&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Commande :&#039;&#039;&#039; &amp;lt;code&amp;gt;dsh web --host 127.0.0.1 --port 3080 --no-open&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Automatisation :&#039;&#039;&#039; &amp;lt;code&amp;gt;deepseek-harness-autostart.service&amp;lt;/code&amp;gt;, unité systemd utilisateur activée dans &amp;lt;code&amp;gt;default.target&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Démarrage :&#039;&#039;&#039; &amp;lt;code&amp;gt;systemctl --user start deepseek-harness-autostart.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Arrêt :&#039;&#039;&#039; &amp;lt;code&amp;gt;systemctl --user stop deepseek-harness.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Contrôle :&#039;&#039;&#039; &amp;lt;code&amp;gt;curl -fsS http://127.0.0.1:3080/&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;podman ps --filter name=deepseek-harness&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Exploitation détaillée :&#039;&#039;&#039; [[Trace install tas - DeepSeek Harness (DSH)]].&lt;br /&gt;
&lt;br /&gt;
== ngrok ==&lt;br /&gt;
&lt;br /&gt;
ngrok fournit un tunnel HTTPS public vers le point d’entrée Caddy local.&lt;br /&gt;
Le domaine fixe est configuré dans le service utilisateur&lt;br /&gt;
&amp;lt;code&amp;gt;ngrok-8080.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Commande : &amp;lt;code&amp;gt;ngrok http --url=https://noella-oxidizable-nonsuppositively.ngrok-free.dev 8099 --config /home/loic/.config/ngrok/ngrok.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Automatisation : unité systemd utilisateur, activée dans &amp;lt;code&amp;gt;default.target&amp;lt;/code&amp;gt;, avec redémarrage automatique après panne.&lt;br /&gt;
* Démarrage : &amp;lt;code&amp;gt;systemctl --user start ngrok-8080.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Arrêt : &amp;lt;code&amp;gt;systemctl --user stop ngrok-8080.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Exploitation détaillée : [[Trace install tas - ngrok]]&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;br /&gt;
&lt;br /&gt;
== État d’exploitation actuel — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
L&#039;exploitation courante repose sur &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;, avec Caddy comme reverse proxy public. Les sources de vérité sont :&lt;br /&gt;
&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/&amp;lt;/code&amp;gt;&lt;br /&gt;
* systemd utilisateur : &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Caddy : &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Index thématique des pages : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ports hôte &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt; sont réservés et ne doivent pas être publiés par un conteneur. Les pages spécifiques MediaWiki, Immich et Ollama ont été actualisées pour refléter leurs unités Quadlet et leurs chemins de données actuels.&lt;br /&gt;
&lt;br /&gt;
== Gitea ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Gitea]] : service Git exécuté par Podman rootless + Quadlet.&lt;br /&gt;
* Image Gitea versionnée : &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Image PostgreSQL versionnée : &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Accès local : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; ; URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; ; accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le mot de passe PostgreSQL est fourni par le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; et ne figure plus dans les Quadlets.&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-15 — PostgreSQL, SBOM et tableau de bord ==&lt;br /&gt;
* Dependency-Track utilise PostgreSQL neuf ; voir [[Trace install tas - Dependency-Track PostgreSQL et SBOM]].&lt;br /&gt;
* Trivy et OSV-Scanner ont alimenté les projets SBOM du serveur tas ; voir [[Trace install tas - OSV-Scanner]].&lt;br /&gt;
* Homarr est disponible localement sur 8106 avec les signets des services et les widgets Beszel ; voir [[Trace install tas - Homarr]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-20 — SGLang Qwen3.8 W8A8 ==&lt;br /&gt;
* Le service [[Trace install tas - SGLang|SGLang]] est maintenant actif sur la RX 7900 XTX avec une image ROCm dédiée à &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Modèle : &amp;lt;code&amp;gt;qwen3.8-27b-w8a8&amp;lt;/code&amp;gt;, contexte 32 768, API locale &amp;lt;code&amp;gt;127.0.0.1:30000/v1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Quadlet rootless : &amp;lt;code&amp;gt;sglang.service&amp;lt;/code&amp;gt; ; conteneur &amp;lt;code&amp;gt;sglang-qwen38-w8a8&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le test déterministe &amp;lt;code&amp;gt;17 + 25&amp;lt;/code&amp;gt; renvoie &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; avant et après redémarrage.&lt;br /&gt;
* Le profil consomme environ 22,5 Go de VRAM ; éviter de charger simultanément un gros modèle Ollama.&lt;br /&gt;
&lt;br /&gt;
== Dify — 2026-09-09 ==&lt;br /&gt;
* [[Trace install tas - Dify]] : Dify Community Edition 1.17.0 en Podman rootless, frontend local 8107, URL préparée https://dify.lololand.org, mise à jour hebdomadaire par dify-update.timer.&lt;br /&gt;
&lt;br /&gt;
== OpenHands — 2026-09-09 ==&lt;br /&gt;
&lt;br /&gt;
OpenHands est installé via le Quadlet rootless &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/openhands.container&amp;lt;/code&amp;gt;, avec l&#039;interface locale sur &amp;lt;code&amp;gt;127.0.0.1:8108&amp;lt;/code&amp;gt;. Sa sandbox personnalisée contient OpenCode CLI et Trivy, et rejoint le réseau &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt; pour accéder à Dify. Voir [[Trace install tas - OpenHands]].&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_OpenHands&amp;diff=238</id>
		<title>Trace install tas - OpenHands</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_OpenHands&amp;diff=238"/>
		<updated>2026-09-09T16:00:59Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documenter l installation OpenHands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - OpenHands =&lt;br /&gt;
&lt;br /&gt;
== État ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Déployé et validé le 9 septembre 2026&#039;&#039;&#039; sur tas.&lt;br /&gt;
&lt;br /&gt;
* Service : &amp;lt;code&amp;gt;openhands.service&amp;lt;/code&amp;gt;, Quadlet Podman rootless systemd utilisateur.&lt;br /&gt;
* Interface locale : &amp;lt;code&amp;gt;http://127.0.0.1:8108&amp;lt;/code&amp;gt;.&lt;br /&gt;
* URL publique prévue : &amp;lt;code&amp;gt;https://openhands.lololand.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Données : &amp;lt;code&amp;gt;/home/loic/.openhands&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Workspace : &amp;lt;code&amp;gt;/home/loic/openhands/workspace&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Runtime et outils ==&lt;br /&gt;
&lt;br /&gt;
Le runtime est construit depuis l’image officielle &amp;lt;code&amp;gt;ghcr.io/openhands/agent-server:1.26.0-python&amp;lt;/code&amp;gt; dans l’image locale &amp;lt;code&amp;gt;localhost/openhands-runtime-tools:1.26.0-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* OpenCode CLI &amp;lt;code&amp;gt;1.14.48&amp;lt;/code&amp;gt;, configuré sans secret vers Ollama.&lt;br /&gt;
* Trivy &amp;lt;code&amp;gt;0.74.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Ollama : &amp;lt;code&amp;gt;http://host.containers.internal:11434&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Dify : &amp;lt;code&amp;gt;http://docker_nginx_1&amp;lt;/code&amp;gt; via le réseau Podman &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Les sandboxes rejoignent &amp;lt;code&amp;gt;dify_default&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;SANDBOX_ADDITIONAL_NETWORKS&amp;lt;/code&amp;gt;. Un test équivalent a confirmé HTTP 200 vers Dify et Ollama, ainsi que la disponibilité d’OpenCode et Trivy.&lt;br /&gt;
&lt;br /&gt;
== Mises à jour ==&lt;br /&gt;
&lt;br /&gt;
Le timer &amp;lt;code&amp;gt;openhands-update.timer&amp;lt;/code&amp;gt; reconstruit l’image runtime avec &amp;lt;code&amp;gt;--pull=always&amp;lt;/code&amp;gt; puis redémarre le service chaque dimanche vers 05:00. L’image UI porte aussi &amp;lt;code&amp;gt;AutoUpdate=registry&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Caddy ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;caddy&amp;quot;&amp;gt;&lt;br /&gt;
openhands.lololand.org {&lt;br /&gt;
    reverse_proxy 127.0.0.1:8108&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retour arrière ==&lt;br /&gt;
&lt;br /&gt;
Le Quadlet et la documentation précédents sont sauvegardés sous &amp;lt;code&amp;gt;/home/loic/backups/openhands-20260909-175838/&amp;lt;/code&amp;gt;. Les credentials OpenCode de l’hôte et les clés OpenRouter ne sont pas montés dans le runtime.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=237</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=237"/>
		<updated>2026-09-09T10:00:44Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajouter Dify à la trace 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;
* [[Trace install tas - SGLang]]&lt;br /&gt;
* [[Trace install tas - DeepSeek Harness (DSH)]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
&lt;br /&gt;
Les ports locaux et publics ci-dessous sont alignés sur les publications et reverse-proxy observés dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt; le 14 août 2026. Un port local peut rester fermé lorsqu’un service est arrêté ou en échec.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Port public Caddy !! Domaine / accès !! Rôle / état&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8085 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track frontend || 8103 || 25681 || dt.lololand.org || Frontend ; répond HTTP 200&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track API || 8092 || 25692 || lololand.hopto.org:25692 || Backend ; service arrêté sur base H2 corrompue&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 || lololand.hopto.org:25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| CyberBro || 8102 || 25685 || cyberbro.lololand.org || Analyse / visualisation&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || social-analyzer.lololand.org || OSINT ; racine HTTP 404 mais service répond&lt;br /&gt;
|-&lt;br /&gt;
| Greenbone OpenVAS || 9392 || 25687 || lololand.hopto.org:25687 || Scanner ; GSA non disponible pendant la relance&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale + UI || 8089 / 8090 || 25689 || headscale.lololand.org || Contrôle réseau privé + interface&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation ; corrigé et HTTP 200&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 || paperless.lololand.org || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || karakeep.lololand.org || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware ; état applicatif sain&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || lololand.hopto.org:25697 || 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 AMD || 11434 || 25434 || ollama.lololand.org || API LLM protégée&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;
| Gitea || 8105 || 25702 || gitea.lololand.org || Forge Git&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1110 / 1143 / 1465 / 1587 / 1993 / 1995 / 14190 / 18080 / 18443 || aucun déclaré par Caddy || mail.lololand.org / lololand.org || Serveur mail&lt;br /&gt;
|-&lt;br /&gt;
| Hermes Agent || 8642 || aucun || accès local || Agent IA outillé&lt;br /&gt;
|-&lt;br /&gt;
| DeepSeek Harness (DSH) || 3080 || aucun || accès local || Interface Web d’agent de codage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== État de vérification — 14 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Firewall :&#039;&#039;&#039; les entrées sont maintenues fermées temporairement pendant l’audit et les corrections. La règle active nftables nécessite une vérification root pour être détaillée.&lt;br /&gt;
* &#039;&#039;&#039;Nextcloud :&#039;&#039;&#039; le service et la base sont actifs ; &amp;lt;code&amp;gt;php occ status&amp;lt;/code&amp;gt; indique Nextcloud 34.0.2, maintenance désactivée et aucune mise à niveau de base en attente. Le HTTP local redirige vers l’URL canonique HTTPS.&lt;br /&gt;
* &#039;&#039;&#039;Dependency-Track :&#039;&#039;&#039; le frontend 8103 répond ; l’API 8092 est indisponible. Les journaux indiquent une corruption H2 (&amp;lt;code&amp;gt;MVStoreException: Chunk 102363 not found&amp;lt;/code&amp;gt;). Le volume a été sauvegardé avant toute tentative de correction.&lt;br /&gt;
* &#039;&#039;&#039;Social Analyzer :&#039;&#039;&#039; le conteneur et le port 8086 répondent ; la racine renvoie HTTP 404, ce qui indique une route applicative absente plutôt qu’un port fermé.&lt;br /&gt;
* &#039;&#039;&#039;Greenbone OpenVAS :&#039;&#039;&#039; la relance a été tentée sans suppression de volumes. La pile reste en initialisation avec des dépendances de flux en état unhealthy ; 9392 n’est pas encore disponible.&lt;br /&gt;
* &#039;&#039;&#039;CyberChef :&#039;&#039;&#039; corrigé. L’image écoute sur 8080 dans le conteneur, alors que le Quadlet publiait 8091 vers 80 ; le mapping est maintenant 8091:8080 et le test local renvoie HTTP 200.&lt;br /&gt;
* &#039;&#039;&#039;Tailscale :&#039;&#039;&#039; le client système est installé et actif. Sa suppression nécessite les privilèges root ; Headscale est un service distinct et n’a pas été supprimé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les actions ayant modifié des services ou fichiers ont conservé une sauvegarde préalable dans &amp;lt;code&amp;gt;/home/loic/backups/&amp;lt;/code&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DeepSeek Harness (DSH) ==&lt;br /&gt;
&lt;br /&gt;
DSH est déployé sur &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt; en Podman rootless avec l’image locale&lt;br /&gt;
&amp;lt;code&amp;gt;localhost/deepseek-harness:0.1.0-rc.7&amp;lt;/code&amp;gt;. L’unité Quadlet génère&lt;br /&gt;
&amp;lt;code&amp;gt;deepseek-harness.service&amp;lt;/code&amp;gt;, qui écoute uniquement sur&lt;br /&gt;
&amp;lt;code&amp;gt;127.0.0.1:3080&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Commande :&#039;&#039;&#039; &amp;lt;code&amp;gt;dsh web --host 127.0.0.1 --port 3080 --no-open&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Automatisation :&#039;&#039;&#039; &amp;lt;code&amp;gt;deepseek-harness-autostart.service&amp;lt;/code&amp;gt;, unité systemd utilisateur activée dans &amp;lt;code&amp;gt;default.target&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Démarrage :&#039;&#039;&#039; &amp;lt;code&amp;gt;systemctl --user start deepseek-harness-autostart.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Arrêt :&#039;&#039;&#039; &amp;lt;code&amp;gt;systemctl --user stop deepseek-harness.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Contrôle :&#039;&#039;&#039; &amp;lt;code&amp;gt;curl -fsS http://127.0.0.1:3080/&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;podman ps --filter name=deepseek-harness&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Exploitation détaillée :&#039;&#039;&#039; [[Trace install tas - DeepSeek Harness (DSH)]].&lt;br /&gt;
&lt;br /&gt;
== ngrok ==&lt;br /&gt;
&lt;br /&gt;
ngrok fournit un tunnel HTTPS public vers le point d’entrée Caddy local.&lt;br /&gt;
Le domaine fixe est configuré dans le service utilisateur&lt;br /&gt;
&amp;lt;code&amp;gt;ngrok-8080.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Commande : &amp;lt;code&amp;gt;ngrok http --url=https://noella-oxidizable-nonsuppositively.ngrok-free.dev 8099 --config /home/loic/.config/ngrok/ngrok.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Automatisation : unité systemd utilisateur, activée dans &amp;lt;code&amp;gt;default.target&amp;lt;/code&amp;gt;, avec redémarrage automatique après panne.&lt;br /&gt;
* Démarrage : &amp;lt;code&amp;gt;systemctl --user start ngrok-8080.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Arrêt : &amp;lt;code&amp;gt;systemctl --user stop ngrok-8080.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Exploitation détaillée : [[Trace install tas - ngrok]]&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;br /&gt;
&lt;br /&gt;
== État d’exploitation actuel — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
L&#039;exploitation courante repose sur &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;, avec Caddy comme reverse proxy public. Les sources de vérité sont :&lt;br /&gt;
&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/&amp;lt;/code&amp;gt;&lt;br /&gt;
* systemd utilisateur : &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Caddy : &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Index thématique des pages : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ports hôte &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt; sont réservés et ne doivent pas être publiés par un conteneur. Les pages spécifiques MediaWiki, Immich et Ollama ont été actualisées pour refléter leurs unités Quadlet et leurs chemins de données actuels.&lt;br /&gt;
&lt;br /&gt;
== Gitea ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Gitea]] : service Git exécuté par Podman rootless + Quadlet.&lt;br /&gt;
* Image Gitea versionnée : &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Image PostgreSQL versionnée : &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Accès local : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; ; URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; ; accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le mot de passe PostgreSQL est fourni par le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; et ne figure plus dans les Quadlets.&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-15 — PostgreSQL, SBOM et tableau de bord ==&lt;br /&gt;
* Dependency-Track utilise PostgreSQL neuf ; voir [[Trace install tas - Dependency-Track PostgreSQL et SBOM]].&lt;br /&gt;
* Trivy et OSV-Scanner ont alimenté les projets SBOM du serveur tas ; voir [[Trace install tas - OSV-Scanner]].&lt;br /&gt;
* Homarr est disponible localement sur 8106 avec les signets des services et les widgets Beszel ; voir [[Trace install tas - Homarr]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-20 — SGLang Qwen3.8 W8A8 ==&lt;br /&gt;
* Le service [[Trace install tas - SGLang|SGLang]] est maintenant actif sur la RX 7900 XTX avec une image ROCm dédiée à &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Modèle : &amp;lt;code&amp;gt;qwen3.8-27b-w8a8&amp;lt;/code&amp;gt;, contexte 32 768, API locale &amp;lt;code&amp;gt;127.0.0.1:30000/v1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Quadlet rootless : &amp;lt;code&amp;gt;sglang.service&amp;lt;/code&amp;gt; ; conteneur &amp;lt;code&amp;gt;sglang-qwen38-w8a8&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le test déterministe &amp;lt;code&amp;gt;17 + 25&amp;lt;/code&amp;gt; renvoie &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; avant et après redémarrage.&lt;br /&gt;
* Le profil consomme environ 22,5 Go de VRAM ; éviter de charger simultanément un gros modèle Ollama.&lt;br /&gt;
&lt;br /&gt;
== Dify — 2026-09-09 ==&lt;br /&gt;
* [[Trace install tas - Dify]] : Dify Community Edition 1.17.0 en Podman rootless, frontend local 8107, URL préparée https://dify.lololand.org, mise à jour hebdomadaire par dify-update.timer.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Dify&amp;diff=236</id>
		<title>Trace install tas - Dify</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Dify&amp;diff=236"/>
		<updated>2026-09-09T10:00:44Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documenter le déploiement Dify sur tas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Dify =&lt;br /&gt;
&lt;br /&gt;
== État ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Déployé et validé le 9 septembre 2026&#039;&#039;&#039; sur tas avec Dify Community Edition &#039;&#039;&#039;1.17.0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Runtime : Podman rootless sous l’utilisateur &amp;lt;code&amp;gt;loic&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Service : &amp;lt;code&amp;gt;dify.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Mise à jour : &amp;lt;code&amp;gt;dify-update.timer&amp;lt;/code&amp;gt;, hebdomadaire, avec &amp;lt;code&amp;gt;podman-compose pull&amp;lt;/code&amp;gt; puis &amp;lt;code&amp;gt;up -d&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Répertoire runtime : &amp;lt;code&amp;gt;/home/loic/dify&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/dify.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Artefacts Nextcloud : &amp;lt;code&amp;gt;minidev/dify/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Architecture et ports ==&lt;br /&gt;
&lt;br /&gt;
La stack officielle comprend API, web, workers, PostgreSQL, Redis, Weaviate,&lt;br /&gt;
plugin daemon, agent backend, sandboxes et proxies SSRF.&lt;br /&gt;
&lt;br /&gt;
* Frontend local : &amp;lt;code&amp;gt;127.0.0.1:8107&amp;lt;/code&amp;gt;.&lt;br /&gt;
* HTTPS Dify interne : &amp;lt;code&amp;gt;127.0.0.1:8443&amp;lt;/code&amp;gt;.&lt;br /&gt;
* URL préparée : &amp;lt;code&amp;gt;https://dify.lololand.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Caddy doit relayer vers &amp;lt;code&amp;gt;127.0.0.1:8107&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Les données persistantes sont dans &amp;lt;code&amp;gt;/home/loic/dify/docker/volumes/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Bloc Caddy à copier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;caddy&amp;quot;&amp;gt;&lt;br /&gt;
dify.lololand.org {&lt;br /&gt;
    reverse_proxy 127.0.0.1:8107&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modèles ==&lt;br /&gt;
&lt;br /&gt;
Ollama est joignable depuis le conteneur API par&lt;br /&gt;
&amp;lt;code&amp;gt;http://host.containers.internal:11434&amp;lt;/code&amp;gt; ; le test API local a répondu&lt;br /&gt;
HTTP 200. OpenRouter se configure via le fournisseur OpenAI-compatible avec la&lt;br /&gt;
base &amp;lt;code&amp;gt;https://openrouter.ai/api/v1&amp;lt;/code&amp;gt;. La clé OpenRouter est saisie dans&lt;br /&gt;
l’interface Dify et ne figure ni dans les fichiers, ni dans le wiki.&lt;br /&gt;
&lt;br /&gt;
== Contrôle et sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user status dify.service dify-update.timer&lt;br /&gt;
curl -I http://127.0.0.1:8107/install&lt;br /&gt;
podman ps --format &#039;{{.Names}}\t{{.Status}}&#039; | grep &#039;^docker_&#039;&lt;br /&gt;
podman exec docker_db_postgres_1 pg_dump -U postgres -d dify --format=custom &amp;gt; dify.dump&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas utiliser &amp;lt;code&amp;gt;podman-compose down -v&amp;lt;/code&amp;gt;. La sauvegarde PostgreSQL&lt;br /&gt;
créée pendant l’installation est conservée dans&lt;br /&gt;
&amp;lt;code&amp;gt;/home/loic/backups/dify-20260909-115516/&amp;lt;/code&amp;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=221</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=221"/>
		<updated>2026-08-18T19:38:54Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Ajouter la trace SGLang ROCm&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;
&lt;br /&gt;
Les ports locaux et publics ci-dessous sont alignés sur les publications et reverse-proxy observés dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt; le 14 août 2026. Un port local peut rester fermé lorsqu’un service est arrêté ou en échec.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Port public Caddy !! Domaine / accès !! Rôle / état&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8085 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track frontend || 8103 || 25681 || dt.lololand.org || Frontend ; répond HTTP 200&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track API || 8092 || 25692 || lololand.hopto.org:25692 || Backend ; service arrêté sur base H2 corrompue&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 || lololand.hopto.org:25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| CyberBro || 8102 || 25685 || cyberbro.lololand.org || Analyse / visualisation&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || social-analyzer.lololand.org || OSINT ; racine HTTP 404 mais service répond&lt;br /&gt;
|-&lt;br /&gt;
| Greenbone OpenVAS || 9392 || 25687 || lololand.hopto.org:25687 || Scanner ; GSA non disponible pendant la relance&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale + UI || 8089 / 8090 || 25689 || headscale.lololand.org || Contrôle réseau privé + interface&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation ; corrigé et HTTP 200&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 || paperless.lololand.org || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || karakeep.lololand.org || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware ; état applicatif sain&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || lololand.hopto.org:25697 || 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 AMD || 11434 || 25434 || ollama.lololand.org || API LLM protégée&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;
| Gitea || 8105 || 25702 || gitea.lololand.org || Forge Git&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1110 / 1143 / 1465 / 1587 / 1993 / 1995 / 14190 / 18080 / 18443 || aucun déclaré par Caddy || mail.lololand.org / lololand.org || Serveur mail&lt;br /&gt;
|-&lt;br /&gt;
| Hermes Agent || 8642 || aucun || accès local || Agent IA outillé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== État de vérification — 14 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Firewall :&#039;&#039;&#039; les entrées sont maintenues fermées temporairement pendant l’audit et les corrections. La règle active nftables nécessite une vérification root pour être détaillée.&lt;br /&gt;
* &#039;&#039;&#039;Nextcloud :&#039;&#039;&#039; le service et la base sont actifs ; &amp;lt;code&amp;gt;php occ status&amp;lt;/code&amp;gt; indique Nextcloud 34.0.2, maintenance désactivée et aucune mise à niveau de base en attente. Le HTTP local redirige vers l’URL canonique HTTPS.&lt;br /&gt;
* &#039;&#039;&#039;Dependency-Track :&#039;&#039;&#039; le frontend 8103 répond ; l’API 8092 est indisponible. Les journaux indiquent une corruption H2 (&amp;lt;code&amp;gt;MVStoreException: Chunk 102363 not found&amp;lt;/code&amp;gt;). Le volume a été sauvegardé avant toute tentative de correction.&lt;br /&gt;
* &#039;&#039;&#039;Social Analyzer :&#039;&#039;&#039; le conteneur et le port 8086 répondent ; la racine renvoie HTTP 404, ce qui indique une route applicative absente plutôt qu’un port fermé.&lt;br /&gt;
* &#039;&#039;&#039;Greenbone OpenVAS :&#039;&#039;&#039; la relance a été tentée sans suppression de volumes. La pile reste en initialisation avec des dépendances de flux en état unhealthy ; 9392 n’est pas encore disponible.&lt;br /&gt;
* &#039;&#039;&#039;CyberChef :&#039;&#039;&#039; corrigé. L’image écoute sur 8080 dans le conteneur, alors que le Quadlet publiait 8091 vers 80 ; le mapping est maintenant 8091:8080 et le test local renvoie HTTP 200.&lt;br /&gt;
* &#039;&#039;&#039;Tailscale :&#039;&#039;&#039; le client système est installé et actif. Sa suppression nécessite les privilèges root ; Headscale est un service distinct et n’a pas été supprimé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les actions ayant modifié des services ou fichiers ont conservé une sauvegarde préalable dans &amp;lt;code&amp;gt;/home/loic/backups/&amp;lt;/code&amp;gt;.&#039;&#039;&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\n\n== État d’exploitation actuel — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
L&#039;exploitation courante repose sur &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;, avec Caddy comme reverse proxy public. Les sources de vérité sont :&lt;br /&gt;
&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/&amp;lt;/code&amp;gt;&lt;br /&gt;
* systemd utilisateur : &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Caddy : &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Index thématique des pages : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ports hôte &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt; sont réservés et ne doivent pas être publiés par un conteneur. Les pages spécifiques MediaWiki, Immich et Ollama ont été actualisées pour refléter leurs unités Quadlet et leurs chemins de données actuels.&lt;br /&gt;
&lt;br /&gt;
== Gitea ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Gitea]] : service Git exécuté par Podman rootless + Quadlet.&lt;br /&gt;
* Image Gitea versionnée : &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Image PostgreSQL versionnée : &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Accès local : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; ; URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; ; accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le mot de passe PostgreSQL est fourni par le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; et ne figure plus dans les Quadlets.\n\n== Mise à jour 2026-08-15 — PostgreSQL, SBOM et tableau de bord ==\n* Dependency-Track utilise PostgreSQL neuf ; voir [[Trace install tas - Dependency-Track PostgreSQL et SBOM]].\n* Trivy et OSV-Scanner ont alimenté les projets SBOM du serveur tas ; voir [[Trace install tas - OSV-Scanner]].\n* Homarr est disponible localement sur 8106 avec les signets des services et les widgets Beszel ; voir [[Trace install tas - Homarr]].\n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jour 2026-08-18 — SGLang ==&lt;br /&gt;
* Le Quadlet SGLang, l’image ROCm et le modèle Qwen2.5-Coder-32B-Instruct-AWQ ont été préparés ; voir [[Trace install tas - SGLang]].&lt;br /&gt;
* Le modèle est conservé sur &amp;lt;code&amp;gt;/media/loic/nem/sglang&amp;lt;/code&amp;gt; et le port prévu est &amp;lt;code&amp;gt;127.0.0.1:30000&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le service reste arrêté : l’image &amp;lt;code&amp;gt;lmsysorg/sglang:v0.5.17-rocm700-mi30x&amp;lt;/code&amp;gt; détecte la RX 7900 XTX mais échoue sur &amp;lt;code&amp;gt;HIP error: invalid device function&amp;lt;/code&amp;gt; dès une opération PyTorch GPU élémentaire. Une image compilée pour &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt; est nécessaire.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_SGLang&amp;diff=220</id>
		<title>Trace install tas - SGLang</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_SGLang&amp;diff=220"/>
		<updated>2026-08-18T19:38:53Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documenter le déploiement SGLang ROCm et le blocage gfx1100&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Projet|SGLang}}&lt;br /&gt;
== SGLang ROCm — déploiement préparé ==&lt;br /&gt;
&lt;br /&gt;
{{Encadré|couleur=orange|titre=État au 18 août 2026|contenu=Le Quadlet, l&#039;image et le modèle sont installés, mais le service est arrêté : l&#039;image SGLang ROCm testée ne fournit pas les kernels PyTorch nécessaires à la Radeon RX 7900 XTX (gfx1100).}}&lt;br /&gt;
&lt;br /&gt;
=== Composants ===&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/sglang.container&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unité : &amp;lt;code&amp;gt;sglang.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Image : &amp;lt;code&amp;gt;docker.io/lmsysorg/sglang:v0.5.17-rocm700-mi30x&amp;lt;/code&amp;gt;&lt;br /&gt;
* Modèle : &amp;lt;code&amp;gt;Qwen/Qwen2.5-Coder-32B-Instruct-AWQ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Poids : &amp;lt;code&amp;gt;/media/loic/nem/sglang/models/Qwen2.5-Coder-32B-Instruct-AWQ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Taille des cinq safetensors : environ 19 Gio binaires, soit un peu plus de 20 Go décimaux&lt;br /&gt;
* Port prévu : &amp;lt;code&amp;gt;127.0.0.1:30000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Volume conteneur : &amp;lt;code&amp;gt;/models&amp;lt;/code&amp;gt;&lt;br /&gt;
* GPU ciblé : Radeon RX 7900 XTX, 24 Gio, &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Procédure appliquée ===&lt;br /&gt;
# Vérification de Podman rootless, de la VRAM et de l&#039;espace disponible.&lt;br /&gt;
# Création du répertoire persistant &amp;lt;code&amp;gt;/media/loic/nem/sglang&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Import de l&#039;image ROCm SGLang et création du Quadlet.&lt;br /&gt;
# Téléchargement vérifiable du dépôt public Qwen avec reprise automatique.&lt;br /&gt;
# Test d&#039;accès aux périphériques AMD : SGLang voit bien la Radeon RX 7900 XTX.&lt;br /&gt;
# Test de chargement réel du modèle.&lt;br /&gt;
&lt;br /&gt;
=== Blocage identifié ===&lt;br /&gt;
Le test minimal suivant échoue dans l&#039;image actuelle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
torch.ones(1, device=&amp;quot;cuda&amp;quot;)&lt;br /&gt;
HIP error: invalid device function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;image &amp;lt;code&amp;gt;mi30x&amp;lt;/code&amp;gt; détecte le GPU mais sa pile PyTorch/ROCm est compilée pour la famille Instinct. Les tentatives &amp;lt;code&amp;gt;HSA_OVERRIDE_GFX_VERSION=10.3.0&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;11.0.0&amp;lt;/code&amp;gt; n&#039;ont pas rendu le service fonctionnel : AITER refuse &amp;lt;code&amp;gt;gfx1030&amp;lt;/code&amp;gt;, tandis que &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt; reproduit l&#039;erreur HIP. Le problème est donc une incompatibilité de kernels, pas un manque de VRAM ni un fichier de modèle incomplet.&lt;br /&gt;
&lt;br /&gt;
Le service est laissé arrêté pour éviter un redémarrage en boucle. Il pourra reprendre avec une image SGLang/PyTorch compilée pour &amp;lt;code&amp;gt;gfx1100&amp;lt;/code&amp;gt;, ou avec une image dédiée construite depuis une base ROCm Radeon. Le modèle et le Quadlet ne doivent pas être supprimés.&lt;br /&gt;
&lt;br /&gt;
=== Contrôles et reprise ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user status sglang.service --no-pager&lt;br /&gt;
systemctl --user start sglang.service&lt;br /&gt;
curl -fsS http://127.0.0.1:30000/health&lt;br /&gt;
podman logs sglang&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sauvegardes ===&lt;br /&gt;
* Déploiement : &amp;lt;code&amp;gt;/home/loic/backups/sglang-20260818T204121+0200/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Quadlet avant le dernier test GPU : &amp;lt;code&amp;gt;sglang.container.before-gfx-override&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sauvegardes des pages MediaWiki avant publication : sous-répertoire &amp;lt;code&amp;gt;wiki/&amp;lt;/code&amp;gt; du dossier ci-dessus&lt;br /&gt;
&lt;br /&gt;
=== Références ===&lt;br /&gt;
* [https://github.com/sgl-project/sglang/blob/main/docs/platforms/amd_gpu.md SGLang — AMD GPU]&lt;br /&gt;
* [https://github.com/sgl-project/sglang/issues/30599 Suivi officiel de l&#039;activation Radeon RDNA3/RDNA4]&lt;br /&gt;
* [https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct-AWQ Qwen2.5-Coder-32B-Instruct-AWQ]&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Ollama&amp;diff=209</id>
		<title>Trace install tas - Ollama</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Ollama&amp;diff=209"/>
		<updated>2026-08-13T22:48:57Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documentation mise à jour Ollama ROCm et client&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Ollama =&lt;br /&gt;
&lt;br /&gt;
== Rôle ==&lt;br /&gt;
API locale de modèles LLM avec deux instances distinctes :&lt;br /&gt;
* une instance AMD/ROCm sur la Radeon RX 7900&lt;br /&gt;
* une instance NVIDIA/CUDA sur la GeForce RTX 3070&lt;br /&gt;
&lt;br /&gt;
== Accès ==&lt;br /&gt;
=== Instance AMD / ROCm ===&lt;br /&gt;
* Local : http://10.8.0.1:11434&lt;br /&gt;
* Depuis le terminal local : `OLLAMA_HOST=http://127.0.0.1:11434`&lt;br /&gt;
* Public : https://lololand.hopto.org:25434&lt;br /&gt;
&lt;br /&gt;
=== Instance NVIDIA / CUDA ===&lt;br /&gt;
* Local : http://10.8.0.1:11435&lt;br /&gt;
* Depuis le terminal local : `OLLAMA_HOST=http://127.0.0.1:11435`&lt;br /&gt;
* Pas d&#039;exposition publique dédiée documentée à ce stade&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* 11434/tcp : serveur Ollama AMD / ROCm&lt;br /&gt;
* 11435/tcp : serveur Ollama NVIDIA / CUDA&lt;br /&gt;
* 25434/tcp : proxy public Caddy vers l&#039;instance AMD/ROCm, protégé par basicauth&lt;br /&gt;
&lt;br /&gt;
== Exécution / runtime ==&lt;br /&gt;
=== AMD / ROCm ===&lt;br /&gt;
* Service systemd user généré : `ollama-rocm.service`&lt;br /&gt;
* Conteneur : `ollama_roc`&lt;br /&gt;
* Image : `docker.io/ollama/ollama:rocm`&lt;br /&gt;
* Devices : `/dev/kfd`, `/dev/dri`&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA / CUDA ===&lt;br /&gt;
* Service systemd user généré : `ollama-nvidia.service`&lt;br /&gt;
* Conteneur : `ollama_nv`&lt;br /&gt;
* Image : `docker.io/ollama/ollama:latest`&lt;br /&gt;
* Intégration GPU : Podman + NVIDIA Container Toolkit + CDI&lt;br /&gt;
* Device CDI utilisé : `nvidia.com/gpu=all`&lt;br /&gt;
&lt;br /&gt;
== Chemins de configuration ==&lt;br /&gt;
* `/home/loic/.config/containers/systemd/ollama-rocm.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/ollama-nvidia.container`&lt;br /&gt;
* `/etc/caddy/Caddyfile`&lt;br /&gt;
* `/home/loic/.bashrc` (alias CLI)&lt;br /&gt;
* `/home/loic/upgrade/ollama-dual-gpu-plan.md`&lt;br /&gt;
&lt;br /&gt;
== Volumes / persistance ==&lt;br /&gt;
* Stockage modèles partagé entre les deux instances : `/media/loic/nem/ollama`&lt;br /&gt;
* Montage conteneur : `/media/loic/nem/ollama -&amp;gt; /root/.ollama`&lt;br /&gt;
&lt;br /&gt;
== Dépendances ==&lt;br /&gt;
* Caddy 25434 -&amp;gt; 11434 avec basicauth pour l&#039;instance AMD/ROCm&lt;br /&gt;
* NVIDIA driver 580 open pour la RTX 3070&lt;br /&gt;
* NVIDIA Container Toolkit&lt;br /&gt;
* CDI NVIDIA généré dans `/var/run/cdi/nvidia.yaml`&lt;br /&gt;
* clients comme Open WebUI&lt;br /&gt;
&lt;br /&gt;
== Remarques ==&lt;br /&gt;
* L&#039;instance NVIDIA n&#039;a fonctionné correctement qu&#039;après mise en place de NVIDIA Container Toolkit et CDI.&lt;br /&gt;
* Le stockage de modèles est partagé entre les deux serveurs pour éviter les doublons disque.&lt;br /&gt;
* Par prudence, éviter les `ollama pull` simultanés sur les deux instances.&lt;br /&gt;
* Faire préférentiellement les opérations d&#039;écriture (`pull`, `rm`, création de modèles) sur une seule instance à la fois.&lt;br /&gt;
* Le proxy public documenté actuellement cible uniquement l&#039;instance AMD/ROCm.&lt;br /&gt;
&lt;br /&gt;
== Utilisation CLI ==&lt;br /&gt;
=== Sélection explicite du serveur ===&lt;br /&gt;
Pour cibler un serveur particulier depuis le terminal local, utiliser `OLLAMA_HOST`.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11434 ollama list&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11434 ollama run qwen3&lt;br /&gt;
&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11435 ollama list&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11435 ollama run qwen3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alias shell ===&lt;br /&gt;
Alias ajoutés dans `/home/loic/.bashrc` :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alias ollama-amd=&#039;OLLAMA_HOST=http://127.0.0.1:11434 ollama&#039;&lt;br /&gt;
alias ollama-nvidia=&#039;OLLAMA_HOST=http://127.0.0.1:11435 ollama&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ollama-amd list&lt;br /&gt;
ollama-amd run qwen3&lt;br /&gt;
&lt;br /&gt;
ollama-nvidia list&lt;br /&gt;
ollama-nvidia run qwen3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemples de tests ==&lt;br /&gt;
=== Test basique de disponibilité ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://127.0.0.1:11434/api/tags&lt;br /&gt;
curl http://127.0.0.1:11435/api/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Questions de test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11434 ollama run qwen3 &amp;quot;Donne-moi un résumé en 3 phrases de la différence entre ROCm et CUDA.&amp;quot;&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11435 ollama run qwen3 &amp;quot;Donne-moi un résumé en 3 phrases de la différence entre ROCm et CUDA.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11434 ollama run qwen3 &amp;quot;Écris un haïku sur les GPU.&amp;quot;&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11435 ollama run qwen3 &amp;quot;Écris un haïku sur les GPU.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérifier le GPU utilisé côté NVIDIA ===&lt;br /&gt;
Les logs de `ollama-nvidia.service` doivent montrer une détection CUDA du type :&lt;br /&gt;
* `library=CUDA`&lt;br /&gt;
* `description=&amp;quot;NVIDIA GeForce RTX 3070&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
== Supervision / diagnostic ==&lt;br /&gt;
=== État des services ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl --user status ollama-rocm.service&lt;br /&gt;
systemctl --user status ollama-nvidia.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Journaux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl --user -u ollama-rocm.service -n 100 --no-pager&lt;br /&gt;
journalctl --user -u ollama-nvidia.service -n 100 --no-pager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérifier la carte NVIDIA ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nvidia-smi&lt;br /&gt;
watch -n 1 nvidia-smi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérifier que CDI voit le GPU ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nvidia-ctk cdi list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conteneurs actifs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
podman ps | grep -E &#039;ollama_roc|ollama_nv&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contrôler la réponse API ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://127.0.0.1:11434/api/tags&lt;br /&gt;
curl http://127.0.0.1:11435/api/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Données / emplacements à sauvegarder ==&lt;br /&gt;
* `/media/loic/nem/ollama`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/ollama-rocm.container`&lt;br /&gt;
* `/home/loic/.config/containers/systemd/ollama-nvidia.container`&lt;br /&gt;
* `/etc/caddy/Caddyfile`&lt;br /&gt;
* `/home/loic/.bashrc`&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde ==&lt;br /&gt;
* Sauvegarder le répertoire de modèles partagé `/media/loic/nem/ollama`.&lt;br /&gt;
* Sauvegarder les deux services systemd user Ollama.&lt;br /&gt;
* Sauvegarder la configuration Caddy liée à `25434`.&lt;br /&gt;
&lt;br /&gt;
== Restauration ==&lt;br /&gt;
* Restaurer `/media/loic/nem/ollama`.&lt;br /&gt;
* Restaurer les fichiers systemd user `ollama.service` et `ollama-nvidia.service`.&lt;br /&gt;
* Recharger systemd user puis relancer les services :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user restart ollama-rocm.service&lt;br /&gt;
systemctl --user restart ollama-nvidia.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifier ensuite `curl http://127.0.0.1:11434/api/tags` et `curl http://127.0.0.1:11435/api/tags`.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procédure de mise à jour — ROCm et client CLI ==&lt;br /&gt;
&lt;br /&gt;
La procédure ci-dessous met à jour uniquement l’instance AMD/ROCm. Elle ne redémarre pas &amp;lt;code&amp;gt;ollama-nvidia.service&amp;lt;/code&amp;gt; et ne modifie pas les modèles.&lt;br /&gt;
&lt;br /&gt;
=== Mise à jour du conteneur ROCm ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Sauvegarder la définition Quadlet avant modification éventuelle&lt;br /&gt;
STAMP=$(date +%Y%m%d-%H%M%S)&lt;br /&gt;
mkdir -p /home/loic/backups/ollama&lt;br /&gt;
cp -p /home/loic/.config/containers/systemd/ollama-rocm.container \&lt;br /&gt;
  /home/loic/backups/ollama/ollama-rocm.container.before-update-${STAMP}.bak&lt;br /&gt;
&lt;br /&gt;
# Télécharger l’image flottante ROCm puis recréer le conteneur&lt;br /&gt;
podman pull docker.io/ollama/ollama:rocm&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user restart ollama-rocm.service&lt;br /&gt;
&lt;br /&gt;
# Contrôler le service et la version API&lt;br /&gt;
systemctl --user is-active ollama-rocm.service&lt;br /&gt;
podman ps --filter name=ollama_roc&lt;br /&gt;
curl -fsS http://127.0.0.1:11434/api/version&lt;br /&gt;
curl -fsS http://127.0.0.1:11434/api/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le 14 août 2026, cette procédure a fait passer l’API ROCm de &amp;lt;code&amp;gt;0.32.0&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;0.32.9&amp;lt;/code&amp;gt;. Le journal confirme la détection ROCm de la Radeon RX 7900 XTX.&lt;br /&gt;
&lt;br /&gt;
=== Mise à jour du client CLI utilisateur ===&lt;br /&gt;
&lt;br /&gt;
Le binaire système &amp;lt;code&amp;gt;/usr/bin/ollama&amp;lt;/code&amp;gt; était une installation root en version client &amp;lt;code&amp;gt;0.30.7&amp;lt;/code&amp;gt;. Comme l’accès sudo n’était pas disponible, le client officiel a été installé dans &amp;lt;code&amp;gt;/home/loic/.local/bin&amp;lt;/code&amp;gt;, qui est prioritaire dans le &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Télécharger l’archive officielle Linux AMD64&lt;br /&gt;
TMP=$(mktemp -d)&lt;br /&gt;
trap &#039;rm -rf &amp;quot;$TMP&amp;quot;&#039; EXIT&lt;br /&gt;
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst \&lt;br /&gt;
  -o &amp;quot;$TMP/ollama.tar.zst&amp;quot;&lt;br /&gt;
zstd -d &amp;quot;$TMP/ollama.tar.zst&amp;quot; -o &amp;quot;$TMP/ollama.tar&amp;quot;&lt;br /&gt;
tar -xf &amp;quot;$TMP/ollama.tar&amp;quot; -C &amp;quot;$TMP&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Installer le client pour l’utilisateur courant&lt;br /&gt;
mkdir -p /home/loic/.local/bin&lt;br /&gt;
install -m 0755 &amp;quot;$TMP/bin/ollama&amp;quot; /home/loic/.local/bin/ollama&lt;br /&gt;
hash -r&lt;br /&gt;
&lt;br /&gt;
# Vérifier la résolution et la version&lt;br /&gt;
command -v ollama&lt;br /&gt;
ollama --version&lt;br /&gt;
&lt;br /&gt;
# Tester le client contre l’instance AMD&lt;br /&gt;
OLLAMA_HOST=http://127.0.0.1:11434 ollama list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat vérifié : &amp;lt;code&amp;gt;/home/loic/.local/bin/ollama&amp;lt;/code&amp;gt;, client version &amp;lt;code&amp;gt;0.32.9&amp;lt;/code&amp;gt;, aligné avec l’API ROCm.&lt;br /&gt;
&lt;br /&gt;
Pour remplacer également le binaire système, après validation et avec un compte root :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cp -p /usr/bin/ollama /home/loic/backups/ollama/ollama-client.system.before-update-$(date +%Y%m%d-%H%M%S).bin&lt;br /&gt;
sudo install -o root -g root -m 0755 /home/loic/.local/bin/ollama /usr/bin/ollama&lt;br /&gt;
/usr/bin/ollama --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Retour arrière ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Revenir à l’image actuellement utilisée avant le pull : utiliser son digest&lt;br /&gt;
podman image ls --digests docker.io/ollama/ollama&lt;br /&gt;
&lt;br /&gt;
# Restaurer le Quadlet si nécessaire, puis relancer&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user restart ollama-rocm.service&lt;br /&gt;
&lt;br /&gt;
# Désactiver le client utilisateur pour revenir au client système&lt;br /&gt;
mv /home/loic/.local/bin/ollama /home/loic/.local/bin/ollama.disabled&lt;br /&gt;
hash -r&lt;br /&gt;
/usr/bin/ollama --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintenance documentaire ==&lt;br /&gt;
Lors d&#039;un changement de port, de proxy public, de stockage des modèles, de pilote GPU, de toolkit NVIDIA, d&#039;alias shell ou d&#039;architecture AMD/NVIDIA, 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]].\n\n== État Quadlet confirmé — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
Les deux instances Ollama sont définies par Quadlet :&lt;br /&gt;
&lt;br /&gt;
* ROCm : &amp;lt;code&amp;gt;ollama-rocm.service&amp;lt;/code&amp;gt;, conteneur &amp;lt;code&amp;gt;ollama_roc&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;11434&amp;lt;/code&amp;gt;, image &amp;lt;code&amp;gt;docker.io/ollama/ollama:rocm&amp;lt;/code&amp;gt;, API vérifiée en version &amp;lt;code&amp;gt;0.32.9&amp;lt;/code&amp;gt; le 14 août 2026&lt;br /&gt;
* NVIDIA : &amp;lt;code&amp;gt;ollama-nvidia.service&amp;lt;/code&amp;gt;, conteneur &amp;lt;code&amp;gt;ollama_nv&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;11435&amp;lt;/code&amp;gt;, image &amp;lt;code&amp;gt;docker.io/ollama/ollama:latest&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fichiers : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/ollama-rocm.container&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;ollama-nvidia.container&amp;lt;/code&amp;gt;&lt;br /&gt;
* Modèles partagés : &amp;lt;code&amp;gt;/media/loic/nem/ollama&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’API ROCm répond en version &amp;lt;code&amp;gt;0.32.9&amp;lt;/code&amp;gt; après mise à jour du conteneur le 14 août 2026. Le tag &amp;lt;code&amp;gt;:rocm&amp;lt;/code&amp;gt; est flottant ; pour figer une version, comparer son digest à un tag versionné tel que &amp;lt;code&amp;gt;:0.32.3-rocm&amp;lt;/code&amp;gt; puis modifier le Quadlet.&lt;br /&gt;
&lt;br /&gt;
L&#039;instance NVIDIA reste dépendante de la cohérence entre le pilote noyau, les bibliothèques NVIDIA, le toolkit et le CDI.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=208</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=208"/>
		<updated>2026-08-13T22:41:24Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Restauration et mise à jour des ports selon 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;
* [[Trace install tas - Stalwart]]&lt;br /&gt;
* [[Trace install tas - Hermes Agent]]&lt;br /&gt;
&lt;br /&gt;
== Vue synthétique ==&lt;br /&gt;
&lt;br /&gt;
Les ports locaux et publics ci-dessous sont alignés sur les publications et reverse-proxy observés dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt; le 14 août 2026. Un port local peut rester fermé lorsqu’un service est arrêté ou en échec.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Brique !! Local !! Port public Caddy !! Domaine / accès !! Rôle / état&lt;br /&gt;
|-&lt;br /&gt;
| Open WebUI || 8085 || 25680 || owui.lololand.org || Interface LLM&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track frontend || 8103 || 25681 || dt.lololand.org || Frontend ; répond HTTP 200&lt;br /&gt;
|-&lt;br /&gt;
| Dependency-Track API || 8092 || 25692 || lololand.hopto.org:25692 || Backend ; service arrêté sur base H2 corrompue&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 || lololand.hopto.org:25684 || Speech-to-text&lt;br /&gt;
|-&lt;br /&gt;
| CyberBro || 8102 || 25685 || cyberbro.lololand.org || Analyse / visualisation&lt;br /&gt;
|-&lt;br /&gt;
| Social Analyzer || 8086 || 25686 || social-analyzer.lololand.org || OSINT ; racine HTTP 404 mais service répond&lt;br /&gt;
|-&lt;br /&gt;
| Greenbone OpenVAS || 9392 || 25687 || lololand.hopto.org:25687 || Scanner ; GSA non disponible pendant la relance&lt;br /&gt;
|-&lt;br /&gt;
| Immich || 8088 || 25688 || immich.lololand.org || Gestion photo&lt;br /&gt;
|-&lt;br /&gt;
| Headscale + UI || 8089 / 8090 || 25689 || headscale.lololand.org || Contrôle réseau privé + interface&lt;br /&gt;
|-&lt;br /&gt;
| CyberChef || 8091 || 25691 || cyberchef.lololand.org || Outils de transformation ; corrigé et HTTP 200&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 || paperless.lololand.org || GED / OCR&lt;br /&gt;
|-&lt;br /&gt;
| Karakeep || 8095 || 25695 || karakeep.lololand.org || Gestion de bookmarks&lt;br /&gt;
|-&lt;br /&gt;
| Nextcloud || 8096 || 25696 || nextcloud.lololand.org || Fichiers / groupware ; état applicatif sain&lt;br /&gt;
|-&lt;br /&gt;
| Homepage || 8097 || 25697 || lololand.hopto.org:25697 || 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 AMD || 11434 || 25434 || ollama.lololand.org || API LLM protégée&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;
| Gitea || 8105 || 25702 || gitea.lololand.org || Forge Git&lt;br /&gt;
|-&lt;br /&gt;
| Stalwart || 1025 / 1110 / 1143 / 1465 / 1587 / 1993 / 1995 / 14190 / 18080 / 18443 || aucun déclaré par Caddy || mail.lololand.org / lololand.org || Serveur mail&lt;br /&gt;
|-&lt;br /&gt;
| Hermes Agent || 8642 || aucun || accès local || Agent IA outillé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== État de vérification — 14 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Firewall :&#039;&#039;&#039; les entrées sont maintenues fermées temporairement pendant l’audit et les corrections. La règle active nftables nécessite une vérification root pour être détaillée.&lt;br /&gt;
* &#039;&#039;&#039;Nextcloud :&#039;&#039;&#039; le service et la base sont actifs ; &amp;lt;code&amp;gt;php occ status&amp;lt;/code&amp;gt; indique Nextcloud 34.0.2, maintenance désactivée et aucune mise à niveau de base en attente. Le HTTP local redirige vers l’URL canonique HTTPS.&lt;br /&gt;
* &#039;&#039;&#039;Dependency-Track :&#039;&#039;&#039; le frontend 8103 répond ; l’API 8092 est indisponible. Les journaux indiquent une corruption H2 (&amp;lt;code&amp;gt;MVStoreException: Chunk 102363 not found&amp;lt;/code&amp;gt;). Le volume a été sauvegardé avant toute tentative de correction.&lt;br /&gt;
* &#039;&#039;&#039;Social Analyzer :&#039;&#039;&#039; le conteneur et le port 8086 répondent ; la racine renvoie HTTP 404, ce qui indique une route applicative absente plutôt qu’un port fermé.&lt;br /&gt;
* &#039;&#039;&#039;Greenbone OpenVAS :&#039;&#039;&#039; la relance a été tentée sans suppression de volumes. La pile reste en initialisation avec des dépendances de flux en état unhealthy ; 9392 n’est pas encore disponible.&lt;br /&gt;
* &#039;&#039;&#039;CyberChef :&#039;&#039;&#039; corrigé. L’image écoute sur 8080 dans le conteneur, alors que le Quadlet publiait 8091 vers 80 ; le mapping est maintenant 8091:8080 et le test local renvoie HTTP 200.&lt;br /&gt;
* &#039;&#039;&#039;Tailscale :&#039;&#039;&#039; le client système est installé et actif. Sa suppression nécessite les privilèges root ; Headscale est un service distinct et n’a pas été supprimé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les actions ayant modifié des services ou fichiers ont conservé une sauvegarde préalable dans &amp;lt;code&amp;gt;/home/loic/backups/&amp;lt;/code&amp;gt;.&#039;&#039;&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\n\n== État d’exploitation actuel — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
L&#039;exploitation courante repose sur &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;, avec Caddy comme reverse proxy public. Les sources de vérité sont :&lt;br /&gt;
&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/&amp;lt;/code&amp;gt;&lt;br /&gt;
* systemd utilisateur : &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Caddy : &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Index thématique des pages : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ports hôte &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt; sont réservés et ne doivent pas être publiés par un conteneur. Les pages spécifiques MediaWiki, Immich et Ollama ont été actualisées pour refléter leurs unités Quadlet et leurs chemins de données actuels.&lt;br /&gt;
&lt;br /&gt;
== Gitea ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Gitea]] : service Git exécuté par Podman rootless + Quadlet.&lt;br /&gt;
* Image Gitea versionnée : &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Image PostgreSQL versionnée : &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Accès local : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; ; URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; ; accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le mot de passe PostgreSQL est fourni par le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; et ne figure plus dans les Quadlets.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=207</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=207"/>
		<updated>2026-08-13T22:40:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Mise à jour des ports selon Caddy et état de vérification&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=Configurationphysique&amp;diff=206</id>
		<title>Configurationphysique</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Configurationphysique&amp;diff=206"/>
		<updated>2026-08-13T22:40:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Mise à jour de la carte mère et du type de RAM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuration physique =&lt;br /&gt;
&lt;br /&gt;
Cette page décrit la configuration matérielle relevée sur le serveur &#039;&#039;&#039;tas&#039;&#039;&#039;. Les valeurs peuvent évoluer après une intervention matérielle ou une mise à niveau ; la date du dernier relevé est indiquée ci-dessous.&lt;br /&gt;
&lt;br /&gt;
== Identification de la machine ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Élément !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Nom d’hôte || &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Constructeur || Micro-Star International Co., Ltd.&lt;br /&gt;
|-&lt;br /&gt;
| Carte mère || MSI MAG B660M MORTAR WIFI DDR4 (MS-7D42)&lt;br /&gt;
|-&lt;br /&gt;
| Système d’exploitation || Ubuntu 24.04.4 LTS&lt;br /&gt;
|-&lt;br /&gt;
| Architecture || x86_64&lt;br /&gt;
|-&lt;br /&gt;
| Noyau || Linux 6.8.0-137-generic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Processeur et mémoire ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Processeur :&#039;&#039;&#039; Intel Core i7-12700 de 12e génération.&lt;br /&gt;
* &#039;&#039;&#039;Cœurs / threads :&#039;&#039;&#039; 12 cœurs, 20 processeurs logiques.&lt;br /&gt;
* &#039;&#039;&#039;Fréquence maximale annoncée :&#039;&#039;&#039; 4,9 GHz.&lt;br /&gt;
* &#039;&#039;&#039;Mémoire vive reconnue :&#039;&#039;&#039; 96 Gio de RAM de type DDR4.&lt;br /&gt;
* &#039;&#039;&#039;Mémoire swap :&#039;&#039;&#039; 2 Gio.&lt;br /&gt;
&lt;br /&gt;
== Processeurs graphiques ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GPU !! Informations relevées&lt;br /&gt;
|-&lt;br /&gt;
| AMD || Radeon RX 7900 XT / XTX / 7900M, contrôleur Navi 31&lt;br /&gt;
|-&lt;br /&gt;
| NVIDIA || GeForce RTX 3070 LHR, 8 Gio de VRAM, pilote 580.173.02&lt;br /&gt;
|-&lt;br /&gt;
| Vidéo intégrée || Intel Alder Lake-S GT1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La machine dispose donc d’un GPU AMD et d’un GPU NVIDIA utilisables séparément selon les charges. La présence de la RTX 3070 et le fonctionnement du pilote NVIDIA ont été vérifiés avec &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Stockage physique et montages ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Périphérique !! Modèle !! Capacité brute !! Point de montage / usage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; || SanDisk SSD PLUS 1000GB || 931,5 Gio || Système (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) et partition EFI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt; || Seagate Exos ST16000NM001G-2KK103 || 14,6 Tio || &amp;lt;code&amp;gt;/media/loic/D0_16To&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/sdc&amp;lt;/code&amp;gt; || Seagate Barracuda ST8000DM004-2CX188 || 7,3 Tio || &amp;lt;code&amp;gt;/mnt/sdd1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/nvme0n1&amp;lt;/code&amp;gt; || Samsung SSD 990 PRO with Heatsink 4TB || 3,6 Tio || &amp;lt;code&amp;gt;/media/loic/nem&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Systèmes de fichiers relevés ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sda3&amp;lt;/code&amp;gt; : ext4, monté sur &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sda2&amp;lt;/code&amp;gt; : vfat, monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt; : ext4, monté sur &amp;lt;code&amp;gt;/media/loic/D0_16To&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdc1&amp;lt;/code&amp;gt; : ext2, monté sur &amp;lt;code&amp;gt;/mnt/sdd1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/nvme0n1&amp;lt;/code&amp;gt; : ext4, monté sur &amp;lt;code&amp;gt;/media/loic/nem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Relevé ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dernier relevé :&#039;&#039;&#039; 14 août 2026.&lt;br /&gt;
* &#039;&#039;&#039;Commandes utilisées :&#039;&#039;&#039; &amp;lt;code&amp;gt;hostnamectl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lscpu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;free -h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Les valeurs de capacité affichées par le système sont exprimées en unités binaires (Gio/Tio), tandis que les modèles de disques utilisent souvent des capacités commerciales en Go/To.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Administration]]&lt;br /&gt;
[[Catégorie:Architecture]]&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Accueil&amp;diff=205</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Accueil&amp;diff=205"/>
		<updated>2026-08-13T22:16:38Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Référencement de la configuration physique depuis Accueil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bienvenue sur le Wiki documentaire de tas =&lt;br /&gt;
&lt;br /&gt;
Ce wiki centralise la documentation technique, la traçabilité d&#039;installation et les modèles d&#039;architecture du serveur &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 🏗️ Architecture et Installation ==&lt;br /&gt;
Cette section regroupe la cartographie du système et le suivi des déploiements.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Trace install tas]]&#039;&#039;&#039; : Le point d&#039;entrée principal recensant toutes les briques logicielles installées (Nextcloud, MediaWiki, Open WebUI, Ollama, etc.), leurs rôles et leurs ports.&lt;br /&gt;
* &#039;&#039;&#039;[[Architecture logicielle de tas]]&#039;&#039;&#039; : La cartographie logique décrivant l&#039;exposition des services via Caddy et les interactions entre composants.&lt;br /&gt;
* &#039;&#039;&#039;[[configurationphysique|Configuration physique]]&#039;&#039;&#039; : Les caractéristiques matérielles, les GPU et les volumes de stockage du serveur tas.&lt;br /&gt;
* &#039;&#039;&#039;[[Installation conteneurisée standard sur tas]]&#039;&#039;&#039; : Les règles et bonnes pratiques pour déployer de nouveaux services (Podman, systemd, Caddy).&lt;br /&gt;
* &#039;&#039;&#039;[[Schéma d&#039;architecture cliquable de tas]]&#039;&#039;&#039; : Une vue visuelle et interactive de l&#039;infrastructure.&lt;br /&gt;
* &#039;&#039;&#039;[[Tests de représentations d&#039;architecture de tas]]&#039;&#039;&#039; : Différentes approches visuelles (couches, mindmap, accès publics) pour cartographier le serveur.&lt;br /&gt;
&lt;br /&gt;
== 📊 Modélisation et Diagrammes ==&lt;br /&gt;
Le wiki est configuré pour générer dynamiquement différents types de diagrammes (Mermaid, PlantUML, BPMN, D2, Graphviz).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Index des modèles de schémas]]&#039;&#039;&#039; : Le catalogue complet de tous les exemples de diagrammes disponibles.&lt;br /&gt;
* &#039;&#039;&#039;[[Déploiement Mermaid PlantUML BPMN JS]]&#039;&#039;&#039; : La documentation technique expliquant comment le support de ces diagrammes a été intégré au wiki.&lt;br /&gt;
&lt;br /&gt;
=== Outils de modélisation intégrés ===&lt;br /&gt;
* &#039;&#039;&#039;Mermaid&#039;&#039;&#039; : Pour les diagrammes rapides (flowchart, séquence, Gantt, mindmap...).&lt;br /&gt;
* &#039;&#039;&#039;D2&#039;&#039;&#039; et &#039;&#039;&#039;Graphviz&#039;&#039;&#039; : Pour les schémas d&#039;architecture physique et logicielle.&lt;br /&gt;
* &#039;&#039;&#039;PlantUML&#039;&#039;&#039; : Pour l&#039;UML et les diagrammes techniques.&lt;br /&gt;
* &#039;&#039;&#039;BPMN JS&#039;&#039;&#039; : Pour les workflows et processus métiers natifs.&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Administration ==&lt;br /&gt;
* [https://lololand.hopto.org:25697 Homepage] : Le portail des services.&lt;br /&gt;
* Les modifications de configuration d&#039;infrastructure doivent toujours être reportées dans [[Trace install tas]].\n\n== Index d&#039;exploitation de tas ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Index de la documentation de tas]]&#039;&#039;&#039; : index thématique des pages, liens HTML et fichiers locaux associés.&lt;br /&gt;
* Source locale de l&#039;index : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* Source locale de la documentation MediaWiki : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Configurationphysique&amp;diff=204</id>
		<title>Configurationphysique</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Configurationphysique&amp;diff=204"/>
		<updated>2026-08-13T22:16:20Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Création de la page de configuration physique&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Configuration physique =&lt;br /&gt;
&lt;br /&gt;
Cette page décrit la configuration matérielle relevée sur le serveur &#039;&#039;&#039;tas&#039;&#039;&#039;. Les valeurs peuvent évoluer après une intervention matérielle ou une mise à niveau ; la date du dernier relevé est indiquée ci-dessous.&lt;br /&gt;
&lt;br /&gt;
== Identification de la machine ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Élément !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Nom d’hôte || &amp;lt;code&amp;gt;tas&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Constructeur || Micro-Star International Co., Ltd.&lt;br /&gt;
|-&lt;br /&gt;
| Modèle de carte mère / système || &amp;lt;code&amp;gt;MS-7D42&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Système d’exploitation || Ubuntu 24.04.4 LTS&lt;br /&gt;
|-&lt;br /&gt;
| Architecture || x86_64&lt;br /&gt;
|-&lt;br /&gt;
| Noyau || Linux 6.8.0-137-generic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Processeur et mémoire ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Processeur :&#039;&#039;&#039; Intel Core i7-12700 de 12e génération.&lt;br /&gt;
* &#039;&#039;&#039;Cœurs / threads :&#039;&#039;&#039; 12 cœurs, 20 processeurs logiques.&lt;br /&gt;
* &#039;&#039;&#039;Fréquence maximale annoncée :&#039;&#039;&#039; 4,9 GHz.&lt;br /&gt;
* &#039;&#039;&#039;Mémoire vive reconnue :&#039;&#039;&#039; 96 Gio.&lt;br /&gt;
* &#039;&#039;&#039;Mémoire swap :&#039;&#039;&#039; 2 Gio.&lt;br /&gt;
&lt;br /&gt;
== Processeurs graphiques ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GPU !! Informations relevées&lt;br /&gt;
|-&lt;br /&gt;
| AMD || Radeon RX 7900 XT / XTX / 7900M, contrôleur Navi 31&lt;br /&gt;
|-&lt;br /&gt;
| NVIDIA || GeForce RTX 3070 LHR, 8 Gio de VRAM, pilote 580.173.02&lt;br /&gt;
|-&lt;br /&gt;
| Vidéo intégrée || Intel Alder Lake-S GT1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La machine dispose donc d’un GPU AMD et d’un GPU NVIDIA utilisables séparément selon les charges. La présence de la RTX 3070 et le fonctionnement du pilote NVIDIA ont été vérifiés avec &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Stockage physique et montages ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Périphérique !! Modèle !! Capacité brute !! Point de montage / usage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; || SanDisk SSD PLUS 1000GB || 931,5 Gio || Système (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) et partition EFI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt; || Seagate Exos ST16000NM001G-2KK103 || 14,6 Tio || &amp;lt;code&amp;gt;/media/loic/D0_16To&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/sdc&amp;lt;/code&amp;gt; || Seagate Barracuda ST8000DM004-2CX188 || 7,3 Tio || &amp;lt;code&amp;gt;/mnt/sdd1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/dev/nvme0n1&amp;lt;/code&amp;gt; || Samsung SSD 990 PRO with Heatsink 4TB || 3,6 Tio || &amp;lt;code&amp;gt;/media/loic/nem&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Systèmes de fichiers relevés ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sda3&amp;lt;/code&amp;gt; : ext4, monté sur &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sda2&amp;lt;/code&amp;gt; : vfat, monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt; : ext4, monté sur &amp;lt;code&amp;gt;/media/loic/D0_16To&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdc1&amp;lt;/code&amp;gt; : ext2, monté sur &amp;lt;code&amp;gt;/mnt/sdd1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/nvme0n1&amp;lt;/code&amp;gt; : ext4, monté sur &amp;lt;code&amp;gt;/media/loic/nem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Relevé ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dernier relevé :&#039;&#039;&#039; 14 août 2026.&lt;br /&gt;
* &#039;&#039;&#039;Commandes utilisées :&#039;&#039;&#039; &amp;lt;code&amp;gt;hostnamectl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lscpu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;free -h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Les valeurs de capacité affichées par le système sont exprimées en unités binaires (Gio/Tio), tandis que les modèles de disques utilisent souvent des capacités commerciales en Go/To.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Administration]]&lt;br /&gt;
[[Catégorie:Architecture]]&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Gitea&amp;diff=203</id>
		<title>Trace install tas - Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Gitea&amp;diff=203"/>
		<updated>2026-08-04T14:09:30Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Rendre la gestion du mot de passe PostgreSQL instructive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Gitea =&lt;br /&gt;
&lt;br /&gt;
Gitea fournit le service Git local de &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Accès et exposition ==&lt;br /&gt;
&lt;br /&gt;
* URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Publication locale : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; vers le port conteneur &amp;lt;code&amp;gt;3000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Le serveur SSH interne de Gitea est désactivé ; la surface publiée est HTTP/HTTPS.&lt;br /&gt;
&lt;br /&gt;
== Runtime ==&lt;br /&gt;
&lt;br /&gt;
Le runtime est &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Application : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/gitea.container&amp;lt;/code&amp;gt;&lt;br /&gt;
* PostgreSQL : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/postgresql-gitea.container&amp;lt;/code&amp;gt;&lt;br /&gt;
* Réseau : &amp;lt;code&amp;gt;gitea-net&amp;lt;/code&amp;gt;, assuré par &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/gitea-network.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Données Gitea : volume Podman &amp;lt;code&amp;gt;gitea_data&amp;lt;/code&amp;gt; monté sur &amp;lt;code&amp;gt;/data&amp;lt;/code&amp;gt;&lt;br /&gt;
* Cache Gitea : volume Podman &amp;lt;code&amp;gt;gitea_cache&amp;lt;/code&amp;gt; monté sur &amp;lt;code&amp;gt;/cache&amp;lt;/code&amp;gt;&lt;br /&gt;
* Données PostgreSQL : &amp;lt;code&amp;gt;/media/loic/nem/gitea/postgres&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reverse proxy : bloc Gitea dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Images actuellement utilisées et tags versionnés :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Secret PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Les Quadlets ne contiennent plus la valeur du mot de passe. Les deux conteneurs utilisent le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;POSTGRES_PASSWORD&amp;lt;/code&amp;gt; pour PostgreSQL et &amp;lt;code&amp;gt;GITEA__database__PASSWD&amp;lt;/code&amp;gt; pour Gitea.&lt;br /&gt;
&lt;br /&gt;
La valeur n&#039;est jamais publiée dans cette documentation. Pour vérifier uniquement la présence du secret :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman secret inspect gitea-postgres-password&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer ou remplacer le secret sans l&#039;écrire dans un Quadlet :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
read -r -s -p &#039;Mot de passe PostgreSQL Gitea: &#039; GITEA_DB_PASSWORD&lt;br /&gt;
printf &#039;\n&#039;&lt;br /&gt;
printf &#039;%s&#039; &amp;quot;$GITEA_DB_PASSWORD&amp;quot; | podman secret create --replace gitea-postgres-password -&lt;br /&gt;
unset GITEA_DB_PASSWORD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visualiser la valeur actuelle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;podman secret inspect&amp;lt;/code&amp;gt; affiche les métadonnées du secret, mais pas sa valeur. Pour la récupérer localement, on peut l&#039;injecter temporairement dans un conteneur et l&#039;afficher dans le terminal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman run --rm \&lt;br /&gt;
  --secret gitea-postgres-password,type=env,target=GITEA_DB_PASSWORD \&lt;br /&gt;
  docker.io/library/postgres:17.10 \&lt;br /&gt;
  sh -c &#039;printf &amp;quot;%s\n&amp;quot; &amp;quot;$GITEA_DB_PASSWORD&amp;quot;&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande ne modifie ni PostgreSQL ni Gitea, mais révèle le mot de passe à l&#039;écran. Ne pas l&#039;utiliser dans une session partagée, une capture d&#039;écran ou une commande enregistrée.&lt;br /&gt;
&lt;br /&gt;
=== Modifier le mot de passe ===&lt;br /&gt;
&lt;br /&gt;
Le mot de passe doit être identique dans le rôle PostgreSQL &amp;lt;code&amp;gt;gitea&amp;lt;/code&amp;gt; et dans le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;POSTGRES_PASSWORD&amp;lt;/code&amp;gt; ne modifie pas un rôle déjà initialisé : il n&#039;est utilisé qu&#039;à la création initiale du répertoire de données.&lt;br /&gt;
&lt;br /&gt;
La méthode recommandée génère un mot de passe hexadécimal et modifie le rôle SQL avant de remplacer le secret :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
new_password=&amp;quot;$(openssl rand -hex 32)&amp;quot;&lt;br /&gt;
printf &amp;quot;ALTER ROLE gitea PASSWORD &#039;%s&#039;;\n&amp;quot; &amp;quot;$new_password&amp;quot; \&lt;br /&gt;
  | podman exec -i gitea-db psql -U gitea -d gitea -v ON_ERROR_STOP=1 -f -&lt;br /&gt;
printf &#039;%s&#039; &amp;quot;$new_password&amp;quot; | podman secret create --replace gitea-postgres-password -&lt;br /&gt;
unset new_password&lt;br /&gt;
systemctl --user restart gitea.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier ensuite :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman exec gitea-db pg_isready -U gitea -d gitea&lt;br /&gt;
systemctl --user is-active postgresql-gitea.service gitea.service&lt;br /&gt;
curl -fsS -o /dev/null -w &#039;%{http_code}\\n&#039; http://127.0.0.1:8105/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas modifier uniquement le secret Podman ou uniquement le rôle SQL : les deux valeurs doivent rester synchronisées.&lt;br /&gt;
&lt;br /&gt;
== Étapes de configuration ==&lt;br /&gt;
&lt;br /&gt;
# Créer le réseau &amp;lt;code&amp;gt;gitea-net&amp;lt;/code&amp;gt; et le maintenir par &amp;lt;code&amp;gt;gitea-network.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Créer le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Démarrer PostgreSQL avec le volume persistant et le secret injecté dans &amp;lt;code&amp;gt;POSTGRES_PASSWORD&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Démarrer Gitea avec le même secret injecté dans &amp;lt;code&amp;gt;GITEA__database__PASSWD&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Configurer Gitea pour PostgreSQL sur &amp;lt;code&amp;gt;gitea-db:5432&amp;lt;/code&amp;gt;, avec la base et l&#039;utilisateur &amp;lt;code&amp;gt;gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Publier le port HTTP local &amp;lt;code&amp;gt;8105&amp;lt;/code&amp;gt; via Caddy vers &amp;lt;code&amp;gt;gitea.lololand.org&amp;lt;/code&amp;gt; et le port externe &amp;lt;code&amp;gt;25702&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Vérifier systemd, PostgreSQL, la réponse HTTP locale et la réponse publique.&lt;br /&gt;
&lt;br /&gt;
== Commandes de vérification ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user is-active gitea-network.service postgresql-gitea.service gitea.service&lt;br /&gt;
podman exec gitea-db pg_isready -U gitea -d gitea&lt;br /&gt;
podman exec gitea gitea --version&lt;br /&gt;
podman exec gitea-db postgres --version&lt;br /&gt;
curl -fsS -o /dev/null -w &#039;%{http_code}\\n&#039; http://127.0.0.1:8105/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde et retour arrière ==&lt;br /&gt;
&lt;br /&gt;
Le backup de la modification du 4 août 2026 est dans :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/home/loic/backups/gitea-quadlet-hardening-20260804T102558+0200/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restaurer les Quadlets depuis ce dossier, exécuter &amp;lt;code&amp;gt;systemctl --user daemon-reload&amp;lt;/code&amp;gt;, puis redémarrer PostgreSQL et Gitea dans cet ordre. Ne pas supprimer le volume PostgreSQL lors d&#039;un retour arrière.&lt;br /&gt;
&lt;br /&gt;
== Vérifications du 4 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* Gitea &amp;lt;code&amp;gt;1.27.1&amp;lt;/code&amp;gt; actif.&lt;br /&gt;
* PostgreSQL &amp;lt;code&amp;gt;17.10&amp;lt;/code&amp;gt; actif et &amp;lt;code&amp;gt;pg_isready&amp;lt;/code&amp;gt; positif.&lt;br /&gt;
* HTTP local : &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.&lt;br /&gt;
* HTTP public sur &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Aucun mot de passe en clair dans les deux Quadlets Gitea/PostgreSQL.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Gitea&amp;diff=202</id>
		<title>Trace install tas - Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.lololand.org/index.php?title=Trace_install_tas_-_Gitea&amp;diff=202"/>
		<updated>2026-08-04T08:33:41Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Créer la documentation de configuration Gitea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trace install tas - Gitea =&lt;br /&gt;
&lt;br /&gt;
Gitea fournit le service Git local de &#039;&#039;&#039;tas&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Accès et exposition ==&lt;br /&gt;
&lt;br /&gt;
* URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Publication locale : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; vers le port conteneur &amp;lt;code&amp;gt;3000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Le serveur SSH interne de Gitea est désactivé ; la surface publiée est HTTP/HTTPS.&lt;br /&gt;
&lt;br /&gt;
== Runtime ==&lt;br /&gt;
&lt;br /&gt;
Le runtime est &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Application : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/gitea.container&amp;lt;/code&amp;gt;&lt;br /&gt;
* PostgreSQL : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/postgresql-gitea.container&amp;lt;/code&amp;gt;&lt;br /&gt;
* Réseau : &amp;lt;code&amp;gt;gitea-net&amp;lt;/code&amp;gt;, assuré par &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/gitea-network.service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Données Gitea : volume Podman &amp;lt;code&amp;gt;gitea_data&amp;lt;/code&amp;gt; monté sur &amp;lt;code&amp;gt;/data&amp;lt;/code&amp;gt;&lt;br /&gt;
* Cache Gitea : volume Podman &amp;lt;code&amp;gt;gitea_cache&amp;lt;/code&amp;gt; monté sur &amp;lt;code&amp;gt;/cache&amp;lt;/code&amp;gt;&lt;br /&gt;
* Données PostgreSQL : &amp;lt;code&amp;gt;/media/loic/nem/gitea/postgres&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reverse proxy : bloc Gitea dans &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Images actuellement utilisées et tags versionnés :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Secret PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Les Quadlets ne contiennent plus la valeur du mot de passe. Les deux conteneurs utilisent le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;POSTGRES_PASSWORD&amp;lt;/code&amp;gt; pour PostgreSQL et &amp;lt;code&amp;gt;GITEA__database__PASSWD&amp;lt;/code&amp;gt; pour Gitea.&lt;br /&gt;
&lt;br /&gt;
La valeur n&#039;est jamais publiée dans cette documentation. Pour vérifier uniquement la présence du secret :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
podman secret inspect gitea-postgres-password&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer ou remplacer le secret sans l&#039;écrire dans un Quadlet :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
read -r -s -p &#039;Mot de passe PostgreSQL Gitea: &#039; GITEA_DB_PASSWORD&lt;br /&gt;
printf &#039;\\n&#039;&lt;br /&gt;
printf &#039;%s&#039; &amp;quot;$GITEA_DB_PASSWORD&amp;quot; | podman secret create --replace gitea-postgres-password -&lt;br /&gt;
unset GITEA_DB_PASSWORD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mot de passe du rôle PostgreSQL doit correspondre au secret avant de redémarrer Gitea. Une rotation doit donc être effectuée avec une commande SQL locale contrôlée, puis le secret doit être remplacé et Gitea redémarré.&lt;br /&gt;
&lt;br /&gt;
== Étapes de configuration ==&lt;br /&gt;
&lt;br /&gt;
# Créer le réseau &amp;lt;code&amp;gt;gitea-net&amp;lt;/code&amp;gt; et le maintenir par &amp;lt;code&amp;gt;gitea-network.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Créer le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Démarrer PostgreSQL avec le volume persistant et le secret injecté dans &amp;lt;code&amp;gt;POSTGRES_PASSWORD&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Démarrer Gitea avec le même secret injecté dans &amp;lt;code&amp;gt;GITEA__database__PASSWD&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Configurer Gitea pour PostgreSQL sur &amp;lt;code&amp;gt;gitea-db:5432&amp;lt;/code&amp;gt;, avec la base et l&#039;utilisateur &amp;lt;code&amp;gt;gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Publier le port HTTP local &amp;lt;code&amp;gt;8105&amp;lt;/code&amp;gt; via Caddy vers &amp;lt;code&amp;gt;gitea.lololand.org&amp;lt;/code&amp;gt; et le port externe &amp;lt;code&amp;gt;25702&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Vérifier systemd, PostgreSQL, la réponse HTTP locale et la réponse publique.&lt;br /&gt;
&lt;br /&gt;
== Commandes de vérification ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user is-active gitea-network.service postgresql-gitea.service gitea.service&lt;br /&gt;
podman exec gitea-db pg_isready -U gitea -d gitea&lt;br /&gt;
podman exec gitea gitea --version&lt;br /&gt;
podman exec gitea-db postgres --version&lt;br /&gt;
curl -fsS -o /dev/null -w &#039;%{http_code}\\n&#039; http://127.0.0.1:8105/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sauvegarde et retour arrière ==&lt;br /&gt;
&lt;br /&gt;
Le backup de la modification du 4 août 2026 est dans :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/home/loic/backups/gitea-quadlet-hardening-20260804T102558+0200/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restaurer les Quadlets depuis ce dossier, exécuter &amp;lt;code&amp;gt;systemctl --user daemon-reload&amp;lt;/code&amp;gt;, puis redémarrer PostgreSQL et Gitea dans cet ordre. Ne pas supprimer le volume PostgreSQL lors d&#039;un retour arrière.&lt;br /&gt;
&lt;br /&gt;
== Vérifications du 4 août 2026 ==&lt;br /&gt;
&lt;br /&gt;
* Gitea &amp;lt;code&amp;gt;1.27.1&amp;lt;/code&amp;gt; actif.&lt;br /&gt;
* PostgreSQL &amp;lt;code&amp;gt;17.10&amp;lt;/code&amp;gt; actif et &amp;lt;code&amp;gt;pg_isready&amp;lt;/code&amp;gt; positif.&lt;br /&gt;
* HTTP local : &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.&lt;br /&gt;
* HTTP public sur &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Aucun mot de passe en clair dans les deux Quadlets Gitea/PostgreSQL.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<entry>
		<id>https://wiki.lololand.org/index.php?title=Trace_install_tas&amp;diff=201</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=201"/>
		<updated>2026-08-04T08:33:40Z</updated>

		<summary type="html">&lt;p&gt;Daneel : Documenter Gitea, tags versionnés et secrets Quadlet&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\n\n== État d’exploitation actuel — 2026-07-25 ==&lt;br /&gt;
&lt;br /&gt;
L&#039;exploitation courante repose sur &#039;&#039;&#039;Podman rootless + Quadlet + systemd utilisateur&#039;&#039;&#039;, avec Caddy comme reverse proxy public. Les sources de vérité sont :&lt;br /&gt;
&lt;br /&gt;
* Quadlet : &amp;lt;code&amp;gt;/home/loic/.config/containers/systemd/&amp;lt;/code&amp;gt;&lt;br /&gt;
* systemd utilisateur : &amp;lt;code&amp;gt;/home/loic/.config/systemd/user/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Caddy : &amp;lt;code&amp;gt;/etc/caddy/Caddyfile&amp;lt;/code&amp;gt;&lt;br /&gt;
* Documentation locale : &amp;lt;code&amp;gt;/home/loic/mediawiki/docs/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Index thématique des pages : &amp;lt;code&amp;gt;/home/loic/clawd/wiki-mediawiki-index.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ports hôte &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt; sont réservés et ne doivent pas être publiés par un conteneur. Les pages spécifiques MediaWiki, Immich et Ollama ont été actualisées pour refléter leurs unités Quadlet et leurs chemins de données actuels.&lt;br /&gt;
&lt;br /&gt;
== Gitea ==&lt;br /&gt;
&lt;br /&gt;
* [[Trace install tas - Gitea]] : service Git exécuté par Podman rootless + Quadlet.&lt;br /&gt;
* Image Gitea versionnée : &amp;lt;code&amp;gt;docker.io/gitea/gitea:1.27.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Image PostgreSQL versionnée : &amp;lt;code&amp;gt;docker.io/library/postgres:17.10&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Accès local : &amp;lt;code&amp;gt;127.0.0.1:8105&amp;lt;/code&amp;gt; ; URL canonique : &amp;lt;code&amp;gt;https://gitea.lololand.org/&amp;lt;/code&amp;gt; ; accès externe alternatif : &amp;lt;code&amp;gt;https://lololand.hopto.org:25702/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Le mot de passe PostgreSQL est fourni par le secret Podman &amp;lt;code&amp;gt;gitea-postgres-password&amp;lt;/code&amp;gt; et ne figure plus dans les Quadlets.&lt;/div&gt;</summary>
		<author><name>Daneel</name></author>
	</entry>
	<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>