|
|
| Ligne 5 : |
Ligne 5 : |
|
| |
|
| == Accès == | | == Accès == |
| * Local : http://10.8.0.1:8086/app.html | | * Local : http://10.8.0.1:8086 |
| * Public : https://lololand.hopto.org:25686/app.html | | * Public : https://lololand.hopto.org:25686 |
| * Attention : la racine / peut répondre 404 ; le point d'entrée applicatif observé est /app.html
| |
|
| |
|
| == Ports == | | == Ports == |
| * 8086 -> 9005 : interface web Social Analyzer publiée par le conteneur applicatif
| | 8086 local, 25686 public ; Selenium Hub sur 4444 |
| * 4444 -> 4444 : Selenium Hub
| |
| * 9002 -> 5900 : VNC du noeud Firefox Selenium
| |
| * 25686 -> 8086 : publication publique via Caddy
| |
|
| |
|
| == Exécution / runtime == | | == Exécution / runtime == |
| Stack podman-compose dans /home/loic/clawd/social-analyzer/docker-compose.yml ; conteneurs attendus : | | Stack social-analyzer avec Selenium hub et conteneur principal |
| * 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
| | == Installation / configuration == |
| * 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.
| | S'appuie sur des conteneurs annexes Selenium. |
| * 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 == | | == Remarques == |
| * Incident observé puis corrigé : état Podman rootless incohérent avec noms de conteneurs réservés mais conteneurs introuvables.
| | Le service Homepage doit être corrigé : Social Analyzer est bien sur 8086. Le port 8085 correspond à un ancien lien CyberBro et non à Social Analyzer. |
| * 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 == | | == Trace documentaire == |
| Cette page fait partie de [[Trace install tas]]. | | Cette page fait partie de [[trace install tas]]. |
Trace install tas - Social Analyzer
Rôle
OSINT / analyse de profils sociaux.
Accès
Ports
8086 local, 25686 public ; Selenium Hub sur 4444
Exécution / runtime
Stack social-analyzer avec Selenium hub et conteneur principal
Installation / configuration
S'appuie sur des conteneurs annexes Selenium.
Remarques
Le service Homepage doit être corrigé : Social Analyzer est bien sur 8086. Le port 8085 correspond à un ancien lien CyberBro et non à Social Analyzer.
Trace documentaire
Cette page fait partie de trace install tas.