# Smart City Digital Twin — Documentation Infrastructure

> Dernière mise à jour : 2026-05-17 20:00

## Architecture Géospatiale

### Services déployés

| Service | URL | Statut | Credentials |
|---------|-----|--------|-------------|
| GeoServer | https://geoserver.digitribe.fr | ✅ UP | admin / Digitribe972 |
| PostGIS dédié | postgis-smartcity:5432 | ✅ UP | smartcity / SmartCity972 |
| MapStore | https://mapstore.digitribe.fr | ✅ UP | - |

### GeoServer

#### Workspace: `Digitribe`
- **Data Store**: `postgis-smartcity` → PostgreSQL/PostGIS dédié
- **Couche**: `sensors` — 55 capteurs IoT importés depuis OpenRemote
- **WMS/WFS**: Activés via le plugin GeoMesa (à installer)

#### Données importées
55 capteurs IoT depuis OpenRemote (table `openremote.asset`, type `IOTSensor`) :
- Types : traffic, airquality, parking, noise, weather, light
- Coordonnées GPS : lat/lon (EPSG:4326)
- Table PostGIS : `public.sensors` (id, name, type, location, attributes)

### PostGIS dédié
- **Conteneur**: postgis-smartcity
- **Image**: postgis/postgis:15-3.4
- **Port host**: 5433
- **Base**: smartcity
- **Schéma**: public
- **Table sensors**: 55 lignes, index GIST sur location

### MapStore
- **URL**: https://mapstore.digitribe.fr
- **CORS**: GeoServer ajouté
- **Couche GeoServer**: sensors accessible via WMS

## Services Bloqués

### OpenRemote Agents MQTT
- **Problème**: API REST retourne 403 malgré tous les tokens Keycloak
- **Cause**: OpenRemote a son propre système d'authorization indépendant
- **Solution**: Se connecter manuellement via un navigateur réel

### Ditto Digital Twin
- **Problème**: MongoDB localhost hardcodé dans le JAR Ditto 3.8.12
- **Cause**: Les variables d'environnement MONGO_HOST ne sont pas reconnues
- **Solution**: Modifier le JAR ou utiliser un hostname localhost → MongoDB

### Prometheus + Grafana
- **Problème**: Réseau interne inaccessible depuis le conteneur Prometheus
- **Solution**: Reconfigurer le réseau ou utiliser les endpoints exposés

### GeoMesa + KeplerGL
- **GeoMesa**: Installation complexe (Maven, binaires pré-construits nécessaires)
- **KeplerGL**: Image Docker incomplète, build npm trop long
- **Solution**: Prévoir une session dédiée pour l'installation

## Fichiers de configuration

- `docker-compose.postgis.yml` — PostGIS dédié
- `docker-compose.kepler.yml` — KeplerGL (non fonctionnel)
- `docker-compose.ditto.yml` — Ditto (MongoDB à corriger)
- `traefik-config/dynamic/routes.yml` — GeoServer ajouté au CORS MapStore

## Prochaines étapes
1. GeoMesa : télécharger les binaires pré-construits (geomesa-gt-postgis)
2. KeplerGL : build Docker multi-stage ou image officielle
3. OpenRemote : connexion manuelle via navigateur réel
4. Ditto : corriger la config MongoDB
