Files
lidar_rendu/docker-compose.webapp.yml
Antoine Jacquin 23969c9e14 Add Leaflet interactive map, tile generator compose, auto-sync cache, deploy docs
index.py rewritten as a continuous Leaflet map: rotated L93 tiles, stackable
visualization layers (per-layer opacity, drag-reorder persisted in
localStorage), tile info panel, live rebuild after each tile during a run.
Leaflet is vendored in assets/vendor/ so the map works fully offline;
georeferencing falls back rasterio -> pyproj -> affine so the lightweight
webapp (no GDAL) is supported.

docker-compose.worker.yml adds the tile generator service (full image + GPU)
that remote webapps call via LIDAR_GENERATION_URL, plus a one-shot process
profile. webapp.py gains LIDAR_AUTO_SYNC_SECONDS periodic cache refresh and
LIDAR_REGEN_CIDR restricting generation to the local network. run.sh
--serve-webapp now mounts ~/.ssh read-only so the rsync sync works.

docs/DEPLOY_WEBAPP.md completed for Raspberry Pi deployment: prerequisites,
git clone install, SSH key setup, first sync, update procedure and
troubleshooting.
2026-09-04 21:36:14 +02:00

49 lines
2.4 KiB
YAML

# Webapp légère pour Raspberry Pi — cf. docs/DEPLOY_WEBAPP.md.
#
# La carte et les vignettes sont servies localement ; la génération de tuiles
# (téléchargement IGN + traitement PDAL/GPU) est déléguée à la machine de
# traitement = service `worker` du docker-compose.worker.yml de cette machine.
#
# docker compose -f docker-compose.webapp.yml up -d --build
# docker compose -f docker-compose.webapp.yml logs -f webapp
services:
webapp:
build:
context: .
dockerfile: Dockerfile.webapp
image: lidar-webapp
container_name: lidar-webapp
init: true
user: "1000:1000"
ports:
- "8973:8973"
volumes:
# Copie locale des tuiles traitées, synchronisée par LIDAR_SYNC_CMD
- ./output:/data/output
# Clé SSH du rsync vers la machine de traitement (LIDAR_SYNC_CMD)
# - ~/.ssh:/home/lidar/.ssh:ro
# Configuration SSH (known_hosts) si nécessaire
# - ~/.ssh/config:/home/lidar/.ssh/config:ro
environment:
- TZ=Europe/Paris
- LIDAR_OUTPUT_DIR=/data/output
# Adresse du backend de génération des tuiles (machine de traitement,
# service `worker` de son docker-compose.worker.yml) — à définir :
# LIDAR_GENERATION_URL=http://<ip-machine-puissante>:8973
# Sans cette variable : consultation autonome du cache local, aucune
# génération possible depuis l'interface.
# - LIDAR_GENERATION_URL=http://192.168.1.50:8973
# Jeton partagé si LIDAR_API_TOKEN est défini sur la machine de traitement
# - LIDAR_REMOTE_TOKEN=change-moi
# Ramène les tuiles traitées + sidecars DTM (les vignettes sont
# régénérées localement par /api/sync, ne pas les synchroniser)
# - LIDAR_SYNC_CMD=rsync -a --delete --exclude=*.tif --exclude=.generation* --exclude=index_thumbs --exclude=index_subtiles lidar@192.168.1.50:/srv/lidar/output/ /data/output/
# Cache local auto-entretenu : resynchronisation + vignettes toutes les
# N secondes (0/défaut = seulement à la demande, bouton ↻ ou /api/sync)
# - LIDAR_AUTO_SYNC_SECONDS=600
# Réseau autorisé à lancer les générations depuis la carte (défaut
# 192.168.1.0/24 ; chaîne vide = restriction levée). Les autres clients
# consultent la carte en lecture seule (boutons masqués, API 403).
# - LIDAR_REGEN_CIDR=192.168.1.0/24
restart: unless-stopped