TODO: mise a jour 2026-06-04 - cleanup massif, helms ansible generés

This commit is contained in:
Eric FELIXINE
2026-06-04 02:05:32 -04:00
parent b56749182e
commit 8c2251faba
8 changed files with 1237 additions and 115 deletions

185
TODO.md
View File

@@ -1,100 +1,129 @@
# Smart City Digital Twin — TODO List
> Dernière mise à jour : 2026-06-01 22:00 (session continue - smart app + ditto)
> Dernière mise à jour : 2026-06-04 00:30 (finalisation documentation)
## ✅ Complété (session 2026-06-01)
## ✅ Complété (session 2026-06-03 / 06-04)
| ID | Tâche | Détail |
|----|-------|--------|
| jupyterhub-fix | JupyterHub DB path | `sqlite:////srv/jupyterhub/jupyterhub.sqlite` (absolute path, 4 slashes) |
| jupyterhub-rebuild | Rebuild Dockerfile | Supprimé double-nested `/srv/jupyterhub/srv/jupyterhub` |
| jupyterhub-spawner | Spawner config | `SimpleLocalProcessSpawner`, timeout 300s |
| jupyterhub-user | User eric | Créé id=2, admin, authorized |
| jupyterhub-sudo | sudo + eric user in container | Dockerfile modifié, spawn vérifié fonctionnel |
| hermes-dashboard | Dashboard WebUI+TUI | systemd service, localhost:9119, auto-boot |
| or-mbtiles-metadata | Bounds monde + center Martinique | `sqlite3` UPDATE sur metadata |
| or-map-settings | mapsettings.json vérifié | center=[-61,14.5], bounds=Martinique, minZoom=0 |
| or-mbtiles-location | mbtiles actif = /storage/map/ | PAS /opt/map/ (écrasé par volume) |
| trino-fix | node.properties créé | `node.environment=production`, `node.id=trino-lakehouse-01` |
| trino-config | config.properties nettoyé | `plugin.bundles` retiré (incompatible Trino 435) |
| kafka-fix | Kafka KRaft env vars | `KAFKA_CFG_*``KAFKA_*`, `CLUSTER_ID` ajouté, volumes recréés |
| git-push | Commits | Pushé sur Gitea (smart-city-digital-twin-martinique + lakehouse) |
| **smart-app-mvp** | **Smart App City MVP complet** | **Voir détail ci-dessous** |
| honcho-api | Honcho API déployée | `honcho-api-1` — Up sur `honcho.digitribe.fr`, workspace `hermes-agent` |
| honcho-plugin | Plugin mémoire Hermes ↔ Honcho | `~/.hermes/honcho.json` configuré, baseUrl `http://127.0.0.1:8089` |
| honcho-mémoire | Mémoire Honcho fonctionnelle | Stockage messages OK. Dialectic chat → nécessite clé LLM valide |
| cicd-pipeline | Gitea Actions CI/CD | Workflow lint + build + deploy, runner docker-runner-01 |
| ci-cd-secrets | Secrets Gitea Actions | SERVER_HOST, SERVER_USER, SSH_PRIVATE_KEY configurés |
| smart-app-docker | Dockerfile web + Traefik | Multi-stage node + nginx, SPA routing, smartapp.digitribe.fr |
| smart-app-deploy | Script de déploiement | `deploy.sh` — web/docker/api/all |
| localai-fix | LocalAI Bad Gateway | Container n'existe plus, config Traefik supprimée |
| ditto-mongodb-fix | MongoDB connection | `-Dditto.mongodb.uri` dans JAVA_TOOL_OPTIONS |
| ditto-secrets | Nouveaux secrets JWT/devops | Générés aléatoirement, sauvegardés `.env.ditto` |
| ditto-official-images | Gateway custom → latest | `eclipse/ditto-gateway:latest` officiel |
| airflow-deploy | Apache Airflow déployé | `airflow.digitribe.fr` — Python 3.11, LocalExecutor |
| openfn-cleanup | OpenFN supprimé | Race condition Cachex/Ecto non résolue |
| ditto-cleanup | Stack Ditto supprimée | API v2 non fonctionnelle (schema-versions) |
| openremote-cleanup | Stack OpenRemote supprimée | Patches bundle appliqués |
| gravitino-cleanup | Gravitino supprimé | Unhealthy |
| fiware-gis-cleanup | FIWARE GIS Quickstart supprimé | |
| contexus-cleanup | Contexus supprimé | Unhealthy |
| kafka-cleanup | Kafka supprimé | Unhealthy + sera redeployé via Helm |
| flink-cleanup | Flink supprimé | Dépendances kafka |
| bi-cleanup | Superset + Metabase supprimés | Seront redeployés via Helm |
| mindsdb-cleanup | MindsDB supprimé | Autoheal unhealthy |
| odk-cleanup | ODK Central supprimé | Sera redeployé via Helm |
| jupyterhub-cleanup | JupyterHub supprimé | Sera redeployé via Helm |
| zeppelin-cleanup | Zeppelin supprimé | Sera redeployé via Helm |
| gis-cleanup | MapStore + GeoServer + FROST supprimés | Seront redeployés via Helm |
| iot-cleanup | Node-RED + phpIPAM + EMQX + Mosquitto + BunkerM + ChirpStack supprimés | Seront redeployés via Helm |
| monitoring-cleanup | Grafana + Loki + Prometheus + InfluxDB + Telegraf supprimés | Seront redeployés via Helm |
| storage-cleanup | MinIO + PostgreSQL + PostGIS + Redis + Zookeeper supprimés | Seront redeployés via Helm |
| misc-cleanup | AgentGateway + Esperotech + Redpanda Console + Docker exporter + Simulator supprimés | |
| backups | Sauvegardes config | Fichiers sauvegardés dans /home/eric/backups/2026-06-03/ |
| helms-ansible | Fichiers Helm/Ansibles générés | 25+ rôles dans /home/eric/helms/ |
| helms-readme | README déploiement K8s | Architecture, installation, troubleshooting |
| helms-vault | Template vault.yml | Variables chiffrées pour le déploiement |
## 🔴 En cours
| ID | Tâche | Raison | Prochaine action |
|----|-------|--------|------------------|
| or-map-bounds | MapService retourne bounds Pays-Bas | Bug MapResourceImpl.java: mbtiles metadata bounds prioritaire sur mapsettings.json | Générer vrai mbtiles MVT Martinique OU patcher code source OR |
| (aucune) | — | — | — |
## ⏳ En attente
## ⏳ En attente (déploiement Kubernetes via Ansible)
| ID | Tâche |
|----|-------|
| or-mbtiles-martinique | Générer mbtiles MVT PBF pour Martinique (tippecanoe depuis GeoJSON filtré) |
| p1-or-map | Vérifier carte Martinique après fix bounds |
| p1-contexus-60 | Configurer les 60 devices Contexus |
| p3-analyse | GeoMesa + KeplerGL |
| p0-chirpstack | ChirpStack login API gRPC-REST |
| p1-thingsboard | Relancer ThingsBoard (si CPU dispo) |
| smart-app Phase 1 | MVP React Native |
| p2-geoserver | GeoServer + PostGIS couches Martinique |
| k8s-cluster | Créer le cluster Kubernetes (3 nœuds minimum) |
| nfs-server | Configurer le serveur NFS pour le storage |
| traefik-deploy | Déployer Traefik via Helm |
| cert-manager-deploy | Déployer cert-manager pour TLS |
| storage-deploy | Déployer NFS provisioner + StorageClass |
| monitoring-deploy | Déployer Prometheus + Grafana + Loki |
| databases-deploy | Déployer PostgreSQL HA + Redis + MinIO |
| kafka-deploy | Déployer Kafka (Strimzi) |
| flink-deploy | Déployer Apache Flink |
| airflow-deploy | Déployer Apache Airflow |
| iot-deploy | Déployer EMQX + Mosquitto + Node-RED + phpIPAM |
| gitea-deploy | Déployer Gitea |
| jupyterhub-deploy | Déployer JupyterHub |
| bi-deploy | Déployer Superset + Metabase |
| mindsdb-deploy | Déployer MindsDB |
| odk-deploy | Déployer ODK Central |
| gis-deploy | Déployer MapStore + GeoServer + FROST |
| clickhouse-deploy | Déployer ClickHouse (`clickhouse.digitribe.fr`) |
| starrocks-deploy | Déployer StarRocks (`starrocks.digitribe.fr`) |
| trino-deploy | Déployer Trino (`trino.digitribe.fr`) |
| deltalake-deploy | Déployer Delta Lake (`deltalake.digitribe.fr`) |
| streamlit-deploy | Déployer Streamlit (`streamlit.digitribe.fr`) |
| duckdb-deploy | Déployer DuckDB (`duckdb.digitribe.fr`) |
| smartapp-deploy | Déployer Smart App (`smartapp.digitribe.fr`) |
| backup-deploy | Déployer Velero pour les sauvegardes |
## 📝 Notes techniques 2026-06-01
## 📁 Fichiers Helm / Ansible générés
### OpenRemote mbtiles — Points critiques
- Fichier actif : `/storage/map/mapdata.mbtiles` (volume Docker), PAS `/opt/map/`
- OR 1.24.0 ne sert que du **PBF vectoriel** — PNG raster = 404
- Bug : MapService.java donne priorité aux bounds du mbtiles metadata sur mapsettings.json
- Fix : bounds mbtiles metadata = monde (`-180,-85,180,85`), bounds mapsettings = zone désirée
- Pour mettre à jour : `docker cp file.mbtiles openremote-manager:/storage/map/mapdata.mbtiles`
```
helms/
├── README.md # Documentation déploiement
├── deploy.yml # Playbook principal
├── undeploy.yml # Playbook de suppression
├── inventory/
│ └── hosts.yml # Inventory des nœuds K8s
├── group_vars/
│ ├── all.yml # Variables globales
│ └── vault.yml # Variables chiffrées (template)
└── roles/ # 25+ rôles Ansible
├── prerequisites/
├── namespaces/
├── storage/
├── traefik/
├── cert-manager/
├── monitoring/
├── databases/
├── kafka/
├── flink/
├── airflow/
├── iot/
├── gitea/
├── jupyterhub/
├── bi/
├── mindsdb/
├── odk/
├── gis/
├── clickhouse/
├── starrocks/
├── trino/
├── deltalake/
├── streamlit/
├── duckdb/
├── nodered/
├── phpipam/
├── smartapp/
└── backup/
```
### JupyterHub
- Port : 8000 (pas 8080) — accessible via https://jupyter.digitribe.fr
- User eric : id=2, admin, créé via NativeAuthenticator
- Config : `SimpleLocalProcessSpawner`, timeout 300s
- DB : `sqlite:////srv/jupyterhub/jupyterhub.sqlite` (absolute path, 4 slashes)
- `eric` OS user avec sudo NOPASSWD dans le container
- `jupyterhub-singleuser --version` = 5.3.0, `jupyter-lab --version` = 4.5.7
## 📝 Infrastructure actuelle (10 containers Docker)
### Kafka (KRaft)
- `apache/kafka:3.9.0` utilise `KAFKA_*` (pas `KAFKA_CFG_*` qui est Bitnami)
- `CLUSTER_ID=MkU3OEVBNTcwNTJENDM2Qk` requis pour storage formatting
- 2 brokers en mode KRaft (broker+controller), pas de ZooKeeper
### Trino
- Config dans `/home/eric/lakehouse/docker-compose/config/trino/`
- `node.id=trino-lakehouse-01` (pas `_internal_`)
- `plugin.bundles` retiré de config.properties (incompatible Trino 435)
### Infrastructure
- 86+ conteneurs Docker
- Kafka, Trino, JupyterHub = UP ✅ (fixes appliqués cette session)
- Tous les autres services principaux = UP ✅
| Service | Image | Statut |
|---------|-------|--------|
| airflow-scheduler | apache/airflow:2.9.3-python3.11 | ✅ healthy |
| airflow-webserver | apache/airflow:2.9.3-python3.11 | ✅ healthy |
| airflow-init | apache/airflow:2.9.3-python3.11 | 🔄 restarting (one-shot) |
| airflow-postgres | postgres:16 | ✅ healthy |
| smartapp-api | smartapp-api:latest | ✅ Up 38h |
| smartapp-web | nginx:alpine | ✅ Up 38h |
| gitea-runner | gitea/act_runner:latest | ✅ Up 2 days |
| traefik | traefik:v3.1 | ✅ Up 2 days |
| smart-city-kepler | smart-city-kepler:latest | ✅ Up 2 weeks |
| gitea | gitea/gitea:latest | ✅ Up 2 jours |
## Credentials
- **Contexus**: iotevadmin / Digitribe972
- **OpenRemote**: admin / Digitribe972
- **PostgreSQL Contexus**: contexus / Digitribe972
- **Redis Contexus**: Digitribe972
- **Telegraf InfluxDB**: token=my-super-token, org=digitribe, bucket=smartcity
- **Grafana**: admin / Digitribe972
- **Superset**: admin / Digitribe972
- **Metabase**: admin@digitribe.fr / Digitribe972
- **BunkerM MQTT**: bunker / bunker
- **ChirpStack**: admin / Digitribe972
- **ODK Central**: efelixine@digitribe.fr / Digitribe972
- **JupyterHub**: eric / admin (admin) — via NativeAuthenticator
- **MindsDB**: admin@digitribe.fr / Digitribe972
- **Gitea** : eric / (voir config)
- **Airflow** : admin / (changé par Eric)