Aller au contenu

« Trace install tas - Social Analyzer » : différence entre les versions

De Loic Wiki
Phase 2 : enrichissement documentation
Daneel (discussion | contributions)
Documentation conteneurs enrichie: runtime, paramètres, ports, volumes, relance et diagnostic
 
(Une version intermédiaire par un autre utilisateur non affichée)
Ligne 5 : Ligne 5 :


== Accès ==
== Accès ==
* Local : http://10.8.0.1:8086
* Local : http://10.8.0.1:8086/app.html
* Public : https://lololand.hopto.org:25686
* Public : https://lololand.hopto.org:25686/app.html
* Attention : la racine / peut répondre 404 ; le point d'entrée applicatif observé est /app.html


== Ports ==
== Ports ==
8086 applicatif, 4444 Selenium hub, 9002 VNC Firefox, 25686 public Caddy
* 8086 -> 9005 : interface web Social Analyzer publiée par le conteneur applicatif
* 4444 -> 4444 : Selenium Hub
* 9002 -> 5900 : VNC du noeud Firefox Selenium
* 25686 -> 8086 : publication publique via Caddy


== Exécution / runtime ==
== Exécution / runtime ==
Stack docker-compose dans /home/loic/clawd/social-analyzer/docker-compose.yml ; conteneurs social-analyzer_social-analyzer_1, social-analyzer_hub_1, web-automation_firefox
Stack podman-compose dans /home/loic/clawd/social-analyzer/docker-compose.yml ; conteneurs attendus :
* social-analyzer_social-analyzer_1 : application Node.js / interface web
* social-analyzer_hub_1 : hub Selenium
* web-automation_firefox : noeud Firefox Selenium
 
Service systemd user associé : /home/loic/.config/systemd/user/social-analyzer.service
* 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.
* WorkingDirectory=/home/loic/clawd/social-analyzer : toutes les commandes du service s'exécutent depuis ce dossier.
* ExecStart=/usr/bin/podman-compose up -d : crée/recrée et démarre la stack en arrière-plan.
  * `up` : crée et démarre les services du compose.
  * `-d` : mode détaché, le processus compose rend la main après lancement.
* ExecStop=/usr/bin/podman-compose down : arrête et supprime les conteneurs/réseaux créés par la stack.
* RemainAfterExit=yes : l'unité reste marquée active après la fin du processus oneshot.


== Chemins de configuration ==
== Chemins de configuration ==
* /home/loic/.config/systemd/user/social-analyzer.service
* /home/loic/clawd/social-analyzer/docker-compose.yml
* /home/loic/clawd/social-analyzer/docker-compose.yml
* /home/loic/clawd/social-analyzer/Dockerfile
* /home/loic/clawd/social-analyzer/package.json
* /home/loic/clawd/social-analyzer/package-lock.json
== Images et build ==
* image locale buildée : localhost/social-analyzer_social-analyzer:latest
* image hub : docker.io/selenium/hub
* image noeud Firefox : docker.io/selenium/node-firefox
Dockerfile applicatif actuel :
* `FROM node:20.18.1-alpine3.20` : base Node épinglée pour éviter les incompatibilités vues avec Node 18.15.0.
* `WORKDIR /usr/src/app` : répertoire de travail dans l'image.
* `COPY . .` : copie du contexte de build complet.
* `RUN apk update && apk add --no-cache firefox-esr && npm ci && npm install lodash && npm install --loglevel=error`
  * `apk add --no-cache firefox-esr` : installe Firefox ESR dans l'image applicative.
  * `npm ci` : installe strictement les dépendances depuis package-lock.json, de façon reproductible.
  * `npm install lodash` : ajoute explicitement lodash si requis par le projet.
  * `npm install --loglevel=error` : second passage npm plus silencieux pour finaliser les dépendances.
* `EXPOSE 9005` : documentation du port interne de l'application.
* `ENTRYPOINT [ "npm", "start", "--","--docker"]` : lance l'application en mode docker.
== Paramètres du docker-compose ==
Service `social-analyzer` :
* `build: .` : construit l'image locale à partir du Dockerfile du dossier courant.
* `ports: "8086:9005"` : publie le port 9005 du conteneur sur le port 8086 de l'hôte.
* `depends_on: hub` : demande à compose de démarrer le hub avant l'application.
* `links: hub` : alias réseau historique vers `hub`.
* `entrypoint: npm start -- --docker --grid "http://hub:4444/wd/hub"`
  * `npm start` : démarre l'application définie dans package.json.
  * `--` : transmet les arguments suivants au script npm.
  * `--docker` : active le mode conteneur.
  * `--grid "http://hub:4444/wd/hub"` : pointe l'application vers le Selenium Hub interne.
Service `hub` :
* `image: docker.io/selenium/hub`
* `ports: "4444:4444"` : expose le hub Selenium sur l'hôte.
* variables :
  * `GRID_MAX_SESSION=16` : limite haute de sessions Selenium simultanées.
  * `GRID_BROWSER_TIMEOUT=6000` : timeout navigateur côté grid.
  * `GRID_TIMEOUT=6000` : timeout global grid.
Service `firefox` :
* `image: docker.io/selenium/node-firefox`
* `container_name: web-automation_firefox` : fixe un nom de conteneur stable.
* `depends_on: hub` : démarre après le hub.
* variables :
  * `SE_EVENT_BUS_HOST=hub` : hôte du bus Selenium.
  * `SE_EVENT_BUS_PUBLISH_PORT=4442` : port de publication du bus.
  * `SE_EVENT_BUS_SUBSCRIBE_PORT=4443` : port d'abonnement du bus.
  * `SE_NODE_MAX_SESSIONS=${CPU_CORES:-2}` : nombre de sessions Firefox, avec valeur par défaut 2 si CPU_CORES n'est pas défini.
* `volumes: /dev/shm:/dev/shm` : partage la mémoire partagée de l'hôte pour limiter les crashs navigateur.
* `ports: "9002:5900"` : expose le VNC Firefox.
* `links: hub` : alias réseau historique vers `hub`.


== Volumes / persistance ==
== Volumes / persistance ==
* /dev/shm monté dans le noeud Firefox
* /dev/shm -> /dev/shm dans le conteneur Firefox
* Pas de volume persistant applicatif identifié pour l'interface elle-même dans cette passe
* Le contexte de build local (/home/loic/clawd/social-analyzer) fait partie de l'état à sauvegarder


== Dépendances ==
== Dépendances ==
* hub Selenium
* hub Selenium
* node-firefox Selenium
* node-firefox Selenium
* image locale buildée depuis le code source du dossier social-analyzer
* Caddy 25686 -> 8086
* Caddy 25686 -> 8086
== Procédure de relance / diagnostic ==
Relance standard :
* `systemctl --user restart social-analyzer.service`
Vérifications utiles :
* `systemctl --user status social-analyzer.service --no-pager -l`
* `podman ps --all | grep -i 'social-analyzer\|web-automation_firefox'`
* `podman logs --tail 80 social-analyzer_social-analyzer_1`
* `curl -I http://127.0.0.1:8086/app.html`
Explication des commandes :
* `systemctl --user` : agit sur les services systemd utilisateur rootless.
* `status --no-pager -l` : évite le pager interactif et affiche les lignes complètes.
* `podman ps --all` : montre aussi les conteneurs arrêtés, utile pour repérer les fantômes.
* `podman logs --tail 80` : limite la sortie aux dernières lignes pertinentes.
* `curl -I` : teste uniquement les en-têtes HTTP, sans télécharger toute la page.


== Remarques ==
== Remarques ==
Le service Homepage pointait historiquement aussi vers 8085 pour Social Analyser, alors que la stack courante expose 8086. Cette divergence doit être surveillée et corrigée si nécessaire.
* Incident observé puis corrigé : état Podman rootless incohérent avec noms de conteneurs réservés mais conteneurs introuvables.
* 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.
* 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.
* Le point d'entrée utile est /app.html, pas forcément /.
 
== Données / emplacements à sauvegarder ==
* /home/loic/.config/systemd/user/social-analyzer.service
* /home/loic/clawd/social-analyzer/docker-compose.yml
* /home/loic/clawd/social-analyzer/Dockerfile
* /home/loic/clawd/social-analyzer/package.json
* /home/loic/clawd/social-analyzer/package-lock.json
* plus largement le dossier /home/loic/clawd/social-analyzer si le contexte de build a été modifié
 
== Sauvegarde ==
* Sauvegarder le service systemd user et l'intégralité du dossier /home/loic/clawd/social-analyzer.
* Si des variables d'environnement ou fichiers .env sont ajoutés plus tard, les inclure explicitement.
* En cas de rebuild important, conserver aussi le hash/image de référence si besoin d'un rollback rapide.
 
== Restauration ==
* Restaurer le dossier /home/loic/clawd/social-analyzer et /home/loic/.config/systemd/user/social-analyzer.service.
* Rebuilder ensuite l'image locale avec `podman-compose build --no-cache` si le cache est suspect ou si l'image manque.
* Redémarrer avec `systemctl --user restart social-analyzer.service`.
* Vérifier ensuite `podman ps`, les logs applicatifs et `http://127.0.0.1:8086/app.html`.


== Maintenance documentaire ==
== Maintenance documentaire ==
Lors d'une évolution de la stack Selenium, du port exposé ou de la route Caddy, mettre à jour cette page et Homepage.
Lors d'une évolution de la stack Selenium, du Dockerfile, du port exposé, du point d'entrée HTTP ou de la route Caddy, mettre à jour cette page et Homepage.


== Trace documentaire ==
== Trace documentaire ==
Cette page fait partie de [[Trace install tas]].
Cette page fait partie de [[Trace install tas]].

Dernière version du 12 avril 2026 à 18:57

Trace install tas - Social Analyzer

Rôle

OSINT / analyse de profils sociaux.

Accès

Ports

  • 8086 -> 9005 : interface web Social Analyzer publiée par le conteneur applicatif
  • 4444 -> 4444 : Selenium Hub
  • 9002 -> 5900 : VNC du noeud Firefox Selenium
  • 25686 -> 8086 : publication publique via Caddy

Exécution / runtime

Stack podman-compose dans /home/loic/clawd/social-analyzer/docker-compose.yml ; conteneurs attendus :

  • social-analyzer_social-analyzer_1 : application Node.js / interface web
  • social-analyzer_hub_1 : hub Selenium
  • web-automation_firefox : noeud Firefox Selenium

Service systemd user associé : /home/loic/.config/systemd/user/social-analyzer.service

  • 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.
  • WorkingDirectory=/home/loic/clawd/social-analyzer : toutes les commandes du service s'exécutent depuis ce dossier.
  • ExecStart=/usr/bin/podman-compose up -d : crée/recrée et démarre la stack en arrière-plan.
 * `up` : crée et démarre les services du compose.
 * `-d` : mode détaché, le processus compose rend la main après lancement.
  • ExecStop=/usr/bin/podman-compose down : arrête et supprime les conteneurs/réseaux créés par la stack.
  • RemainAfterExit=yes : l'unité reste marquée active après la fin du processus oneshot.

Chemins de configuration

  • /home/loic/.config/systemd/user/social-analyzer.service
  • /home/loic/clawd/social-analyzer/docker-compose.yml
  • /home/loic/clawd/social-analyzer/Dockerfile
  • /home/loic/clawd/social-analyzer/package.json
  • /home/loic/clawd/social-analyzer/package-lock.json

Images et build

  • image locale buildée : localhost/social-analyzer_social-analyzer:latest
  • image hub : docker.io/selenium/hub
  • image noeud Firefox : docker.io/selenium/node-firefox

Dockerfile applicatif actuel :

  • `FROM node:20.18.1-alpine3.20` : base Node épinglée pour éviter les incompatibilités vues avec Node 18.15.0.
  • `WORKDIR /usr/src/app` : répertoire de travail dans l'image.
  • `COPY . .` : copie du contexte de build complet.
  • `RUN apk update && apk add --no-cache firefox-esr && npm ci && npm install lodash && npm install --loglevel=error`
 * `apk add --no-cache firefox-esr` : installe Firefox ESR dans l'image applicative.
 * `npm ci` : installe strictement les dépendances depuis package-lock.json, de façon reproductible.
 * `npm install lodash` : ajoute explicitement lodash si requis par le projet.
 * `npm install --loglevel=error` : second passage npm plus silencieux pour finaliser les dépendances.
  • `EXPOSE 9005` : documentation du port interne de l'application.
  • `ENTRYPOINT [ "npm", "start", "--","--docker"]` : lance l'application en mode docker.

Paramètres du docker-compose

Service `social-analyzer` :

  • `build: .` : construit l'image locale à partir du Dockerfile du dossier courant.
  • `ports: "8086:9005"` : publie le port 9005 du conteneur sur le port 8086 de l'hôte.
  • `depends_on: hub` : demande à compose de démarrer le hub avant l'application.
  • `links: hub` : alias réseau historique vers `hub`.
  • `entrypoint: npm start -- --docker --grid "http://hub:4444/wd/hub"`
 * `npm start` : démarre l'application définie dans package.json.
 * `--` : transmet les arguments suivants au script npm.
 * `--docker` : active le mode conteneur.
 * `--grid "http://hub:4444/wd/hub"` : pointe l'application vers le Selenium Hub interne.

Service `hub` :

  • `image: docker.io/selenium/hub`
  • `ports: "4444:4444"` : expose le hub Selenium sur l'hôte.
  • variables :
 * `GRID_MAX_SESSION=16` : limite haute de sessions Selenium simultanées.
 * `GRID_BROWSER_TIMEOUT=6000` : timeout navigateur côté grid.
 * `GRID_TIMEOUT=6000` : timeout global grid.

Service `firefox` :

  • `image: docker.io/selenium/node-firefox`
  • `container_name: web-automation_firefox` : fixe un nom de conteneur stable.
  • `depends_on: hub` : démarre après le hub.
  • variables :
 * `SE_EVENT_BUS_HOST=hub` : hôte du bus Selenium.
 * `SE_EVENT_BUS_PUBLISH_PORT=4442` : port de publication du bus.
 * `SE_EVENT_BUS_SUBSCRIBE_PORT=4443` : port d'abonnement du bus.
 * `SE_NODE_MAX_SESSIONS=${CPU_CORES:-2}` : nombre de sessions Firefox, avec valeur par défaut 2 si CPU_CORES n'est pas défini.
  • `volumes: /dev/shm:/dev/shm` : partage la mémoire partagée de l'hôte pour limiter les crashs navigateur.
  • `ports: "9002:5900"` : expose le VNC Firefox.
  • `links: hub` : alias réseau historique vers `hub`.

Volumes / persistance

  • /dev/shm -> /dev/shm dans le conteneur Firefox
  • Pas de volume persistant applicatif identifié pour l'interface elle-même dans cette passe
  • Le contexte de build local (/home/loic/clawd/social-analyzer) fait partie de l'état à sauvegarder

Dépendances

  • hub Selenium
  • node-firefox Selenium
  • image locale buildée depuis le code source du dossier social-analyzer
  • Caddy 25686 -> 8086

Procédure de relance / diagnostic

Relance standard :

  • `systemctl --user restart social-analyzer.service`

Vérifications utiles :

  • `systemctl --user status social-analyzer.service --no-pager -l`
  • `podman ps --all | grep -i 'social-analyzer\|web-automation_firefox'`
  • `podman logs --tail 80 social-analyzer_social-analyzer_1`
  • `curl -I http://127.0.0.1:8086/app.html`

Explication des commandes :

  • `systemctl --user` : agit sur les services systemd utilisateur rootless.
  • `status --no-pager -l` : évite le pager interactif et affiche les lignes complètes.
  • `podman ps --all` : montre aussi les conteneurs arrêtés, utile pour repérer les fantômes.
  • `podman logs --tail 80` : limite la sortie aux dernières lignes pertinentes.
  • `curl -I` : teste uniquement les en-têtes HTTP, sans télécharger toute la page.

Remarques

  • Incident observé puis corrigé : état Podman rootless incohérent avec noms de conteneurs réservés mais conteneurs introuvables.
  • 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.
  • 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.
  • Le point d'entrée utile est /app.html, pas forcément /.

Données / emplacements à sauvegarder

  • /home/loic/.config/systemd/user/social-analyzer.service
  • /home/loic/clawd/social-analyzer/docker-compose.yml
  • /home/loic/clawd/social-analyzer/Dockerfile
  • /home/loic/clawd/social-analyzer/package.json
  • /home/loic/clawd/social-analyzer/package-lock.json
  • plus largement le dossier /home/loic/clawd/social-analyzer si le contexte de build a été modifié

Sauvegarde

  • Sauvegarder le service systemd user et l'intégralité du dossier /home/loic/clawd/social-analyzer.
  • Si des variables d'environnement ou fichiers .env sont ajoutés plus tard, les inclure explicitement.
  • En cas de rebuild important, conserver aussi le hash/image de référence si besoin d'un rollback rapide.

Restauration

  • Restaurer le dossier /home/loic/clawd/social-analyzer et /home/loic/.config/systemd/user/social-analyzer.service.
  • Rebuilder ensuite l'image locale avec `podman-compose build --no-cache` si le cache est suspect ou si l'image manque.
  • Redémarrer avec `systemctl --user restart social-analyzer.service`.
  • Vérifier ensuite `podman ps`, les logs applicatifs et `http://127.0.0.1:8086/app.html`.

Maintenance documentaire

Lors d'une évolution de la stack Selenium, du Dockerfile, du port exposé, du point d'entrée HTTP ou de la route Caddy, mettre à jour cette page et Homepage.

Trace documentaire

Cette page fait partie de Trace install tas.