diff --git a/TODO.md b/TODO.md index 0b4f2d06..a527963f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,6 @@ # Smart City Digital Twin — TODO List -> Dernière mise à jour : 2026-05-26 23:00 +> Dernière mise à jour : 2026-05-28 14:00 ## ✅ Complété | ID | Tâche | @@ -26,12 +26,13 @@ ## 🔴 En cours | ID | Tâche | Notes | |----|-------|-------| -| p1-or-restart | Redémarrer OpenRemote | PG recréé, à relancer après reclonage répertoire | +| p1-odk | Déployer ODK Central derrière Traefik | Repo cloné dans odk/central/, images locales à builder | +| p1-or-fix | OpenRemote manager sur bon réseau | Manager sur bridge au lieu de smartcity-shared → unhealthy | ## 🔴 Bloqué | ID | Tâche | Raison | |----|-------|--------| -| p1-or-map | Affichage points carte OpenRemote | En attente restart | +| p1-or-map | Affichage points carte OpenRemote | En attente fix réseau manager | | p4-ditto | Ditto.digitribe.fr | MongoDB localhost hardcodé | | p3-kepler | KeplerGL | Image Docker incomplète | @@ -44,15 +45,16 @@ | p0-chirpstack | ChirpStack: login API gRPC-REST | | p1-thingsboard | Relayer ThingsBoard (si CPU dispo) | -## 📝 Notes 2026-05-26 +## 📝 Notes 2026-05-28 +- **OpenRemote** : Manager (`gracious_mestorf`) tournait sur réseau `bridge` au lieu de `smartcity-shared` → ne pouvait pas joindre Keycloak. Recréation du container nécessaire. +- **ODK** : Repo cloné dans `odk/central/`. Images `odk-service:latest` et `odk-nginx:latest` sont locales (à builder avec les Dockerfiles du repo). Enketo secret créé dans `odk-secrets/`. Domaine prévu : `odk.digitribe.fr`. - **Pipeline données** : Simulateur → EMQX/Mosquitto/BunkerM → Telegraf → InfluxDB → Grafana ✅ -- **Grafana** : Dashboard smartcity-martinique-complete v4 — données confirmées ✅ +- **Grafana** : Dashboard smartcity-martinique-complete v7 — données confirmées ✅ - **Superset** : https://superset.digitribe.fr ✅ (UP, healthy) - **Metabase** : https://metabase.digitribe.fr ✅ (UP, healthy) - **BunkerM** : Port 1883→1900, dynsec désactivé, auth par password_file - **BunkerM Traefik** : https://bunkerm.digitribe.fr (config 27-bunkerm-web.yml corrigée) - **InfluxDB** : bucket `smartcity`, measurement `mqtt_consumer`, tag `topic` pour le type -- **OpenRemote** : Abandon pour l'instant, l'utilisateur va recloner le répertoire ## Credentials - **Contexus**: iotevadmin / Digitribe972 diff --git a/odk/docker-compose.yml b/odk/docker-compose.yml new file mode 100644 index 00000000..afa01df9 --- /dev/null +++ b/odk/docker-compose.yml @@ -0,0 +1,79 @@ +version: "3.8" + +services: + odk-db: + image: postgres:15-alpine + container_name: odk-postgres + restart: unless-stopped + environment: + POSTGRES_DB: odk + POSTGRES_USER: odk + POSTGRES_PASSWORD: odk + volumes: + - odk_postgres_data:/var/lib/postgresql/data + networks: + - odk-internal + healthcheck: + test: ["CMD-SHELL", "pg_isready -U odk"] + interval: 10s + timeout: 5s + retries: 5 + + odk-backend: + image: "ghcr.io/getodk/central-backend:2024.3.0" + container_name: odk-backend + restart: unless-stopped + depends_on: + odk-db: + condition: service_healthy + environment: + - DOMAIN=odk.digitribe.fr + - HTTPS_PORT=443 + - SYSADMIN_EMAIL=admin@digitribe.fr + - DB_HOST=odk-db + - DB_PORT=5432 + - DB_NAME=odk + - DB_USER=odk + - DB_PASSWORD=odk + volumes: + - odk_backend_data:/data + networks: + - odk-internal + - smartcity-shared + labels: + - "traefik.enable=true" + - "traefik.http.routers.odk.rule=Host(`odk.digitribe.fr`)" + - "traefik.http.routers.odk.entrypoints=websecure" + - "traefik.http.routers.odk.tls.certresolver=letsencrypt" + - "traefik.http.services.odk.loadbalancer.server.port=8383" + - "traefik.docker.network=smartcity-shared" + + odk-frontend: + image: "ghcr.io/getodk/central-frontend:2024.3.0" + container_name: odk-frontend + restart: unless-stopped + depends_on: + - odk-backend + environment: + - DOMAIN=odk.digitribe.fr + networks: + - odk-internal + labels: + - "traefik.enable=false" + + odk-pyxform: + image: "ghcr.io/getodk/central-pyxform:v4.4.1" + container_name: odk-pyxform + restart: unless-stopped + networks: + - odk-internal + +volumes: + odk_postgres_data: + odk_backend_data: + +networks: + odk-internal: + internal: true + smartcity-shared: + external: true diff --git a/snapshots/2026-05-28/full-snapshot.json b/snapshots/2026-05-28/full-snapshot.json new file mode 100644 index 00000000..0b896434 --- /dev/null +++ b/snapshots/2026-05-28/full-snapshot.json @@ -0,0 +1,58 @@ +{ + "timestamp": "2026-05-28 14:00:00", + "total_containers": 118, + "running": 103, + "exited": 9, + "restarting": 5, + "unhealthy": 1, + "key_services": { + "traefik": "Up 4 days", + "smart-city-grafana": "Up 25 hours", + "smart-city-influxdb": "Up 6 days (healthy)", + "smart-city-simulator": "Up 21 hours", + "smart-city-telegraf": "Up 21 hours", + "bunkerm-bunkerm-1": "Up 22 hours (healthy)", + "openremote-keycloak": "Up 25 hours", + "openremote-manager": "UNHEALTHY - wrong network (bridge)", + "fiware-gis-quickstart-orion-1": "Up 6 days (healthy)", + "contexus-app": "Up 4 days (unhealthy)", + "contexus-postgres": "Up 6 days (healthy)", + "contexus-redis": "Up 6 days (healthy)", + "smart-city-ditto-gateway": "Up 4 days", + "smart-city-ditto-mongodb": "Up 6 days", + "smart-city-kepler": "Up 6 days", + "postgis-smartcity": "Up 6 days (healthy)", + "geoserver_stack-geoserver-1": "Up 6 days (healthy)", + "mapstore-app": "Up 6 days", + "mapstore-postgres": "Up 6 days (healthy)", + "frost_http-web-1": "Up 6 days", + "frost_allinone-web-1": "Up 6 days", + "stellio-api-gateway": "Up 3 days", + "stellio-search-service": "Exited (255)", + "stellio-subscription-service": "Exited (255)", + "stellio-kafka": "Exited (255)", + "stellio-postgres": "Exited (255)", + "emqx_emqx_1": "Up 6 days", + "chirpstack-1": "Up 6 days", + "chirpstack-rest-api-1": "Up 6 days", + "metabase-app": "Up 19 hours (healthy)", + "metabase-postgres": "Up 19 hours (healthy)", + "thingsboard-postgres": "Up 6 days (healthy)", + "thingsboard-rabbitmq": "Up 6 days (healthy)", + "honcho-grafana-1": "Up 6 days (healthy)", + "honcho-api-1": "Restarting" + }, + "issues": [ + "OpenRemote manager on wrong network (bridge instead of smartcity-shared) — cannot reach Keycloak", + "ThingsBoard js-executors restart loop", + "Redpanda console restarting", + "Honcho API restarting", + "Contexus app unhealthy", + "Stellio services exited (postgres, kafka, search, subscription)" + ], + "notes": [ + "ODK Central repo cloned in odk/central/ — images are local (odk-service:latest, odk-nginx:latest), need building", + "Git: 8 commits already synced with Gitea (everything up-to-date)", + "System under heavy load: 118 containers, swap nearly exhausted" + ] +}