Documenter le wrapper ssh de déploiement distant du Pi

This commit is contained in:
Antoine Jacquin
2026-09-19 21:28:37 +02:00
parent 3a374a3ab4
commit 52f67b8e55
2 changed files with 27 additions and 3 deletions

View File

@ -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.<module>`
- test case: `docker run --rm lidar-lidar python3 -m pytest -v --pyargs lidar_pipeline.tests.<module>::<TestClass>::<test_method>`

View File

@ -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 <hôte> [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