Skip to content

Lancer le moteur (gispulse engine)

Le moteur GISPulse est un serveur FastAPI qui expose les pipelines de règles, les triggers ESB, les datasets et les WebSockets d'évènements. La commande gispulse engine le lance en mode headless — pas de SPA monté, juste l'API.

Quand utiliser gispulse engine plutôt que gispulse portal ? Quand vous n'avez pas besoin du workbench visuel : pipelines automatisés, sidecar de l'app desktop Tauri, backend pour un portail hébergé séparément, intégration tierce qui consomme l'API REST. Pour un workflow d'édition visuelle sur poste, utilisez plutôt gispulse portal.

Commande

bash
gispulse engine [OPTIONS]
OptionDéfautDescription
--port, -p0 (auto)Port d'écoute. 0 = port libre auto-détecté (utile pour sidecar Tauri).
--host127.0.0.1Hôte d'écoute. Mettre 0.0.0.0 pour exposer en LAN ou derrière un reverse proxy.
--engine, -educkdbBackend spatial : duckdb (local), postgis (serveur), hybrid (Pro, mix des deux).
--data-dir, -d~/.gispulse/dataRépertoire des datasets uploadés.
--no-browserfalseNe pas ouvrir le navigateur sur la racine de l'API.

Démarrage et mode "ready"

Au boot, gispulse engine émet une ligne JSON sur stdout pour permettre à un parent process (Tauri, supervisor, script) de récupérer port et PID :

GISPULSE_READY:{"port": 8001, "host": "127.0.0.1", "engine": "duckdb", "pid": 12345}
GISPulse at http://127.0.0.1:8001

Le format GISPULSE_READY: est stable — vous pouvez parser cette ligne dans un sidecar.

Surface API

Le moteur monte les routeurs FastAPI suivants en mode full (par défaut). Référence complète : REST API et /docs Swagger UI sur l'instance live.

EndpointMéthodeDescription
/healthGETHealthcheck — renvoie {"status": "ok"}. Utilisé par le healthcheck de gispulse portal.
/metricsGETMétriques Prometheus (text format). Activé en mode full.
/datasetsGET / POST / DELETEGestion des datasets (upload, list, delete).
/projectsGET / POSTWorkspaces multi-rules.
/scenariosGET / POSTScénarios = projet + ruleset versionné.
/rulesCRUDRègles (capabilities + paramètres).
/triggersCRUDTriggers ESB (DML watchers, webhooks).
/relationsCRUDRelations spatiales / attributaires entre layers.
/jobsGETJobs asynchrones (statut, résultat).
/capabilitiesGETListe les capabilities disponibles + schémas de paramètres.
/marketplaceGETCatalogue de capabilities tierces (Pro).
/examplesGETMode 2 portail Try-it — datasets de démo embarqués.
/stylesGET / PUTQML / SLD / breaks de classification.
/schedulesCRUDPipelines cron (Pro).
/pipelinesPOSTExécution d'un pipeline.
/sessionsPOSTSessions DuckDB éphémères.
/ws/eventsWebSocketStream live des évènements ESB.

Documentation OpenAPI live

Une fois le moteur démarré, ouvrez http://localhost:8001/docs (Swagger UI) ou http://localhost:8001/redoc (ReDoc) pour explorer la surface API exacte de la version installée.

Authentification

TierAuthentificationNotes
CommunityAucune (localhost only par défaut)OK pour usage personnel et CI.
Pro / EnterpriseAPI key (header X-API-Key) ou OIDCActivée en mode full quand GISPULSE_REQUIRE_AUTH=1.

Pour un déploiement serveur (host 0.0.0.0), toujours activer l'auth :

bash
GISPULSE_TIER=pro \
GISPULSE_REQUIRE_AUTH=1 \
GISPULSE_API_KEYS="key1,key2" \
gispulse engine --host 0.0.0.0 --port 8001

Backend duckdb vs postgis

FlagBackendCas d'usage
--engine duckdbDuckDB local + GPKG/GeoParquetMode portable, pas de DB externe, < ~10M features.
--engine postgisPostgreSQL/PostGIS distantPersistance, triggers pg_notify, multi-user. Nécessite GISPULSE_DSN.
--engine hybridDuckDB calcul + PostGIS stockage (Pro)Volumes hétérogènes, perf maximale.

Détails dans Moteurs DuckDB / PostGIS / Hybrid.

bash
# Mode PostGIS sur un Postgres en Docker
GISPULSE_DSN=postgresql://gispulse:secret@localhost:5432/gispulse \
gispulse engine --engine postgis --port 8001

Reverse proxy (Caddy / nginx)

Pour exposer le moteur en HTTPS sur un VPS, on le bind sur 127.0.0.1:8001 et on délègue le TLS au reverse proxy.

Caddy (auto-TLS Let's Encrypt)

caddy
api.example.com {
    reverse_proxy 127.0.0.1:8001
    encode gzip zstd

    # WebSocket (events bus) — Caddy gère ça nativement
    @ws {
        path /ws/*
    }
    reverse_proxy @ws 127.0.0.1:8001
}

nginx (TLS manuel)

nginx
server {
    listen 443 ssl http2;
    server_name api.example.com;

    ssl_certificate     /etc/letsencrypt/live/api.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;

        # WebSocket upgrade
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600s;
    }
}

Voir Déploiement pour la stack complète (PostGIS + Caddy + Prometheus + backups).

Cohabitation avec gispulse portal

Les deux commandes lancent le même create_app() FastAPI. La seule différence :

CommandeMount SPAAuth par défautCas d'usage
gispulse enginenonactivable via envserveur, sidecar Tauri, intégration tierce
gispulse portaloui (/portal)désactivée (localhost)poste de travail, onboarding visuel

Vous pouvez tout à fait :

  1. Lancer gispulse engine --host 0.0.0.0 sur un VPS.
  2. Lancer gispulse portal --backend=https://your.engine.example.com sur votre poste.

Le portail GH Pages se connecte alors au moteur distant — voir Lancer le portail localement.

Voir aussi

Published under AGPL-3.0 license.