From 52f67b8e55ff60371b2b963567f6e9c8658a20e0 Mon Sep 17 00:00:00 2001 From: Antoine Jacquin Date: Sat, 19 Sep 2026 21:28:37 +0200 Subject: [PATCH] =?UTF-8?q?Documenter=20le=20wrapper=20ssh=20de=20d=C3=A9p?= =?UTF-8?q?loiement=20distant=20du=20Pi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 2 +- docs/DEPLOY_WEBAPP.md | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index bb44ca7..039b14d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ - build webapp légère (Raspberry Pi, déploiement 2 machines — cf. `docs/DEPLOY_WEBAPP.md`): `docker compose -f docker-compose.webapp.yml up -d --build` (image `Dockerfile.webapp`, sans PDAL/GPU) - build générateur de tuiles (machine de traitement): `docker compose -f docker-compose.worker.yml up -d --build` (service `worker`, API pour les webapp distantes) - simulation locale du mode deux machines : `docker compose -f docker-compose.local-2m.yml up -d --build` — worker GPU sur :8974 + webapp légère sur :8973 avec son PROPRE cache `output-webapp/` peuplé à la demande depuis le worker. Permet de rebuild l'interface sans toucher au worker, et réciproquement. Résolution 0,2 m uniquement (GENERATE_RESOLUTIONS). -- stack webapp (machine légère): `./serve-webapp.sh [start|stop|restart|status|sync|logs]`, config dans `webapp.env` (modèle `webapp.env.example`, ignoré par git) ; mise à jour = `git pull` puis `restart` (rebuild inclus). Le script pilote `docker compose` et charge automatiquement `docker-compose.webapp.override.yml` s'il existe — utilisable sur le Pi de prod (192.168.3.10) : labels Traefik `lidar.example.fr` + volume réel `/srv/lidar/output` de l'override préservés. +- stack webapp (machine légère): `./serve-webapp.sh [start|stop|restart|status|sync|logs]`, config dans `webapp.env` (modèle `webapp.env.example`, ignoré par git) ; mise à jour = `git pull` puis `restart` (rebuild inclus). Le script pilote `docker compose` et charge automatiquement `docker-compose.webapp.override.yml` s'il existe — utilisable sur le Pi de prod (192.168.3.10) : labels Traefik `lidar.example.fr` + volume réel `/srv/lidar/output` de l'override préservés. Mise à jour distante du Pi depuis ce poste : `ssh` (checkout `/srv/lidar_rendu`, procédure dans `docs/DEPLOY_WEBAPP.md` §2). - test all: `./run.sh --test` (rebuild automatique de l'image avant les tests ; en `docker run` direct, rebuild manuellement d'abord) - test file: `docker run --rm lidar-lidar python3 -m pytest -v --pyargs lidar_pipeline.tests.` - test case: `docker run --rm lidar-lidar python3 -m pytest -v --pyargs lidar_pipeline.tests.::::` diff --git a/docs/DEPLOY_WEBAPP.md b/docs/DEPLOY_WEBAPP.md index f39e568..c497cc2 100644 --- a/docs/DEPLOY_WEBAPP.md +++ b/docs/DEPLOY_WEBAPP.md @@ -96,8 +96,32 @@ manuellement si besoin. Avec `serve-webapp.sh` et `run.sh`, la clé SSH de l'hôte (`~/.ssh`, clé + known_hosts) est montée automatiquement en lecture seule dans le conteneur ; avec `docker compose`, le montage équivalent est à décommenter dans -`docker-compose.webapp.yml` (voir l'option c ci-dessous). Le wrapper local -`ssh` (agent forwarding) simplifie ces connexions. +`docker-compose.webapp.yml` (voir l'option c ci-dessous). + +#### Wrapper `ssh` (déploiement depuis le poste de pilotage) + +Le poste de pilotage (agent Crush) interdit l'appel `ssh` direct : le wrapper +`ssh`, créé une fois (puis `chmod +x ssh`), +fournit l'accès autorisé avec transfert d'agent (`-A`) — les `git pull` +distants utilisent la clé locale — et refuse toute interaction (BatchMode) : + +```bash +#!/bin/bash +set -euo pipefail +HOST="${1:-192.168.3.10}" # machine webapp par défaut (le Pi) +shift || true +exec ssh -A -o BatchMode=yes -o ConnectTimeout=5 \ + -o StrictHostKeyChecking=accept-new "$HOST" "$@" +``` + +Usage : `ssh` (Pi par défaut), `ssh [commande]`. Mise à jour +complète du Pi (checkout git en `/srv/lidar_rendu`, avec +l'override Traefik — jamais `serve-webapp.sh` en prod) : + +```bash +ssh 192.168.3.10 "cd /srv/lidar_rendu && git pull && \ + docker compose -f docker-compose.webapp.yml -f docker-compose.webapp.override.yml up -d --build" +``` ### 3. Configurer et lancer