Auto-hébergement d'AfriMap Engine
AfriMap est conçu pour être auto-hébergé. Un seul docker compose up lance l'ensemble du stack. Ce guide couvre l'installation, la configuration et la mise en production.
Prérequis
| Composant | Minimum | Recommandé (production) |
|---|---|---|
| CPU | 4 cores | 8+ cores (Valhalla est CPU-intensif) |
| RAM | 8 GB | 16+ GB (Valhalla charge le graphe en mémoire) |
| Disque | 40 GB SSD | 100+ GB SSD (PostGIS + Elasticsearch + tuiles) |
| Docker | 24.0+ | Dernière version stable |
| Docker Compose | v2.20+ | Dernière version stable |
Installation rapide
# Cloner le dépôt git clone https://github.com/rellinxe27/afri-map.git cd afri-map # Copier la config d'exemple cp .env.example .env # Éditer les variables essentielles nano .env# OSM Côte d'Ivoire (~120 MB) ./data/scripts/download_osm.sh # Overture Maps pour la CI (POI, bâtiments) ./data/scripts/download_overture.sh # Construire les tuiles de routing Valhalla ./data/scripts/build_valhalla.sh# Démarrer tous les services docker compose up -d # Vérifier la santé curl http://localhost:8090/v1/health # Avec monitoring (Prometheus + Grafana) docker compose --profile monitoring up -dServices Docker
| Service | Port | Image | Rôle |
|---|---|---|---|
| gateway | 8090 | Build Go custom | API Gateway, auth, routing des requêtes |
| valhalla | 8002 | ghcr.io/valhalla/valhalla | Moteur de routing C++ |
| pelias-api | 4000 | pelias/api | Géocodeur (API) |
| martin | 3000 | ghcr.io/maplibre/martin | Serveur de tuiles vectorielles MVT |
| postgres | 5432 | postgis/postgis:16-3.4 | Base spatiale + TimescaleDB |
| redis | 6379 | redis:7-alpine | Cache, rate limit, positions temps réel |
| tts | 5500 | Build Python custom | Edge TTS (voix fr/en) |
| coqui | 5501 | Build Python custom | Coqui XTTS v2 (voix locales) |
Variables d'environnement
# ── Gateway ──────────────────────────────────── GATEWAY_PORT=8090 DATABASE_URL=postgres://afrimap:secret@postgres:5432/afrimap?sslmode=disable REDIS_URL=redis://redis:6379 VALHALLA_URL=http://valhalla:8002 PELIAS_URL=http://pelias-api:4000 MARTIN_URL=http://martin:3000 TTS_URL=http://tts:5500 COQUI_URL=http://coqui:5501 # ── Sécurité ────────────────────────────────── ADMIN_BOOTSTRAP_KEY=afm_admin_changeme PORTAL_SESSION_SECRET=changeme-in-production # ── PostgreSQL ──────────────────────────────── POSTGRES_USER=afrimap POSTGRES_PASSWORD=secret POSTGRES_DB=afrimap # ── Monitoring (optionnel) ──────────────────── GRAFANA_ADMIN_PASSWORD=changeme GF_SECURITY_ADMIN_USER=adminPipeline de données
Les scripts dans data/scripts/ gèrent le téléchargement, la transformation et l'import des données :
1. download_osm.sh
Télécharge l'extrait OSM Côte d'Ivoire depuis Geofabrik (~120 MB PBF). Exécutez-le une fois à l'installation, puis lors des mises à jour mensuelles de données.
2. download_overture.sh
Utilise DuckDB pour extraire les bâtiments, POI et adresses Overture pour la Côte d'Ivoire via un filtre bbox.
3. build_valhalla.sh
Construit les tuiles de routing Valhalla à partir du PBF OSM. Prend ~10-20 minutes pour la CI. Les tuiles sont montées dans le conteneur Valhalla.
4. import_pelias.sh
Importe les données dans Pelias (Elasticsearch). Inclut OSM, Overture et les données locales (quartiers, landmarks, marchés).
5. seed_local.sh
Charge les fichiers GeoJSON locaux (quartiers informels, landmarks, marchés) dans PostGIS. Ces données enrichissent les résultats de géocodage et de navigation.
Checklist mise en production
.env/metrics (Prometheus scraping uniquement)--profile monitoring)static/status.html) sur un CDN séparéapi.afrimap.ci, portal.afrimap.ci, status.afrimap.ci