--- title: Datasette created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, tracking, sqlite, data-exploration, python] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Data+Analysis, https://github.com/simonw/datasette] --- # 🔍 Datasette > Explorateur web instantané pour fichiers SQLite : crée une API JSON et une UI de requête interactive pour n'importe quelle base, par Simon Willison. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [datasette.io](https://datasette.io) | | **GitHub** | [simonw/datasette](https://github.com/simonw/datasette) | | **License** | Apache-2.0 | | **Langage principal** | Python | | **Étoiles GitHub** | 846 ⭐ | | **Dernière MAJ** | 2026-05-22 | | **Catégorie** | [[cat-tracking]] | ## Description **Datasette** est un outil écrit par **Simon Willison** (célèbre blogueur et créateur de Django) qui transforme n'importe quel fichier **SQLite** en une **API JSON explorable et une interface web de requêtage**. Le principe : `datasette ma_base.db` et l'utilisateur dispose instantanément de filtres, tris, facettes, full-text search et de points d'accès REST documentés. C'est l'outil idéal pour les **journalistes de données**, les **équipes data** qui veulent partager un dataset, les **chercheurs** ou toute personne qui veut publier un extrait de base de données en quelques minutes. Datasette propose aussi un riche écosystème de **plugins** (cartographie, authentification, export CSV/JSON, visualisations Vega) et de **clis** (`sqlite-utils`) pour faciliter la vie. Pour du **self-hosting**, Datasette est ultra-léger (sert des Go de données en Mo de RAM), fonctionne derrière Nginx/Caddy/Traefik et peut être déployé via Docker, pip, ou PaaS (Cloud Run, Fly.io). La **version 1.0 alpha** publiée récemment ajoute le support de **PostgreSQL**, ce qui en fait aussi un excellent outil de requêtage ad-hoc sur une base de production. ## Installation ### Via Docker (recommandé) ```yaml version: "3.8" services: datasette: image: ghcr.io/simonw/datasette:latest container_name: datasette restart: unless-stopped ports: - "8001:8001" volumes: - ./data:/data - ./metadata.yml:/metadata.yml command: > datasette serve /data/*.db --host 0.0.0.0 --port 8001 --metadata /metadata.yml --setting default_page_size 50 --setting suggest_facets on ``` ### Installation manuelle 1. Disposer de Python 3.10+ et pip 2. Installer : `pip install datasette datasette-cluster-map datasette-auth-github` 3. Créer un répertoire `data/` et y déposer vos `.db` SQLite 4. Écrire un `metadata.yml` pour configurer titres, sources, licences 5. Lancer : `datasette serve data/*.db --host 0.0.0.0 --port 8001` 6. Pour la production : installer `gunicorn` ou utiliser `caddy` comme reverse proxy ## Configuration - Configurer un fichier **metadata.yml** (titre du site, sources des données, descriptions de tables) - Activer l'**authentification** via plugin (GitHub OAuth, mot de passe, ou token Bearer) - Limiter l'accès à certaines tables avec des **permissions granulaires** - Brancher des **plugins** : `datasette-cluster-map`, `datasette-vega`, `datasette-export` - Définir des **facettes** et **sort defaults** par table pour faciliter la navigation - Activer le **mode immutable** pour éviter les écritures non souhaitées sur des données sensibles - Exposer l'**API JSON** derrière un reverse proxy avec rate limiting (Caddy / Traefik) ## Alternatives ### Open source - **Apache Superset** — BI complet mais plus lourd à mettre en œuvre - **Metabase** — alternative populaire, PostgreSQL natif, charts - **Nocodb** — Airtable-like, multi-bases - **Directus** — headless CMS sur base SQL, API auto-générée - **CKAN** — portail open data institutionnel ### Propriétaires - **Retool** — UI builder low-code avec sources multiples - **Airtable** — no-code avec vues kanban/form - **Tableau Public** — dataviz mais non self-hosted - **Google Data Studio** — équivalent Google ## Sécurité - **Ne jamais** exposer une base SQLite mutable en écriture à Internet - Préférer le mode **immutable** pour les données publiques/partagées - Activer un **plugin d'authentification** dès qu'il y a des données non publiques - Restreindre l'accès par **IP source** (CrowdSec, fail2ban) ou via VPN (WireGuard) - Activer **HTTPS** (Traefik + Let's Encrypt) - Sauvegarder les `.db` régulièrement (un simple `cp` suffit, ou `litestream` pour la réplication continue) - Auditer les **plugins** installés : ils s'exécutent dans le même process que vos données ## Ressources - [Site officiel](https://datasette.io) - [Documentation](https://docs.datasette.io) - [Blog de Simon Willison](https://simonwillison.net) - **sqlite-utils** : [github.com/simonw/sqlite-utils](https://github.com/simonw/sqlite-utils) - [Liste de plugins](https://datasette.io/plugins) ## Pages Liées - [[cat-tracking]] - [[recettes-docker-compose]] - [[cat-data-analysis]]