---
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]]
