8.5 KiB
title: Grist created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, database, low-code, spreadsheet, python, postgres, sqlite, analytics, bi, apache] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Database, https://github.com/gristlabs/grist-core]
🗄️ Grist
Le tableur relationnel open source : la puissance des colonnes calculées, des références entre tables, des formules Python-like, et un modèle relationnel complet. L'Excel pour les gens qui structurent vraiment leurs données.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | getgrist.com |
| GitHub | gristlabs/grist-core |
| License | Apache-2.0 |
| Langage | Python (backend) + TypeScript (UI) |
| Étoiles GitHub | 11k ⭐ |
| Dernière MAJ | 2026-06-05 |
| Catégorie | cat-database |
📝 Description
Grist est un tableur relationnel : à mi-chemin entre Excel, Airtable et une vraie base de données. Là où Airtable permet d'avoir plusieurs "tables" liées, Grist pousse le concept jusqu'au bout : vraies foreign keys, vrais types de colonnes, vraies contraintes, le tout dans une UI de tableur familière.
L'ingrédient magique de Grist ce sont ses formules Python-like : on peut écrire du code proche de Python directement dans une cellule, avec accès aux colonnes des autres tables, des fonctions de chaîne, des conditions, des boucles, et même des fonctions custom en Python. C'est ce qui fait la différence avec Airtable : on a la souplesse d'un tableur avec la rigueur d'une base de données.
🛠️ Cas d'usage typiques
- ✅ Suivi de budget personnel / familial avec multi-devises et rolling forecasts
- ✅ Inventaire avec relations (fournisseurs → produits → commandes)
- ✅ CRM léger pour freelance (contacts → opportunités → factures)
- ✅ Planification de projet avec dépendances et Gantt
- ✅ Bases de connaissances structurées
- ✅ Dashboards avec graphiques intégrés (bar, line, pie, scatter…)
- ✅ ETL rapide : importer des CSV, les transformer via formules, exporter
- ✅ Collaboration multi-utilisateurs avec ACL fines
🎯 Différenciateurs clés
- ✅ Modèle relationnel natif : foreign keys, lookups, références entre tables
- ✅ Formules Python-like : on peut littéralement écrire
if x > 0: return y * 1.2dans une colonne - ✅ Custom widgets : créer ses propres visualisations
- ✅ API complète : REST + Python SDK
- ✅ ACL par table, par ligne, par colonne (un vrai row-level security)
- ✅ Import/Export : CSV, XLSX, JSON, SQLite dump
- ✅ Self-hosted : Docker simple, ou natif Python
- ✅ Versioning : chaque modification est versionnée, on peut rollback
- ✅ Templating : partager un document comme template reproductible
- ✅ Embeds : intégrer une vue Grist dans une page web (iframe ou widget JS)
Public cible : homelabs qui veulent remplacer Excel/Google Sheets, petites structures qui n'ont pas besoin d'un ERP complet, analystes qui veulent prototyper rapidement.
🚀 Installation
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
grist:
image: gristlabs/grist:latest
container_name: grist
restart: unless-stopped
environment:
GRIST_HOST: "0.0.0.0"
GRIST_PORT: 8484
GRIST_DOMAIN: "grist.example.com"
GRIST_SINGLE_ORG: "homelab"
GRIST_FORCE_LOGIN: "true"
# Optionnel : authentification via OIDC/SAML
# GRIST_OAUTH_ID: "..."
# GRIST_OAUTH_SECRET: "..."
# GRIST_OAUTH_HOST: "https://grist.example.com"
# GRIST_OAUTH_IDP_ISSUER: "https://authentik.example.com/application/o/grist/"
# Type de BDD : sqllite (par défaut) ou postgres
TYPE: "sqllite"
SQLITE_PATH: "/persist/home.sqlite"
ports:
- "8484:8484"
volumes:
- grist-data:/persist
labels:
- "traefik.enable=true"
- "traefik.http.routers.grist.rule=Host(`grist.example.com`)"
- "traefik.http.routers.grist.entrypoints=websecure"
- "traefik.http.routers.grist.tls.certresolver=letsencrypt"
- "traefik.http.services.grist.loadbalancer.server.port=8484"
volumes:
grist-data:
💡 Grist peut aussi tourner en mode multi-org (plusieurs équipes séparées) en supprimant
GRIST_SINGLE_ORG.
Option 2 : Binaire natif (développement)
git clone https://github.com/gristlabs/grist-core.git
cd grist-core
npm install
GRIST_HOST=0.0.0.0 npm run build && npm start
Option 3 : Postgres backend (production)
services:
grist:
environment:
TYPE: "postgres"
PGHOST: grist-db
PGPORT: 5432
PGUSER: grist
PGPASSWORD: changez_moi
PGDATABASE: grist
grist-db:
image: postgres:16-alpine
environment:
POSTGRES_DB: grist
POSTGRES_USER: grist
POSTGRES_PASSWORD: changez_moi
volumes:
- grist-pg:/var/lib/postgresql/data
⚙️ Configuration Initiale
- Premier accès :
https://grist.example.com→ créer le premier utilisateur (devient admin viaGRIST_SINGLE_ORG) - Activer OIDC (recommandé) : configurer les variables
GRIST_OAUTH_*et pointer vers Authentik/Authelia - Créer un document : + New Document → importer un CSV, XLSX, ou partir de zéro
- Créer une deuxième table : + Add new table → définir les types de colonnes
- Créer une relation : dans une table, ajouter une colonne de type "Reference" pointant vers l'autre table
- Ajouter une formule : sur une colonne → click droit → "Formula" →
len($name.upper())par exemple
🔄 Alternatives
Open Source
- NocoDB — Plus Airtable-like, plus de connecteurs
- Baserow — Plus simple, plus jeune
- Teable — Plus moderne, basé sur Postgres
- Mathesar — Plus brut, plus orienté data team
- AirTable clone in Grist — 😄
- LibreOffice Calc — Tableur classique, sans modèle relationnel
- EtherCalc — Multi-utilisateurs mais très basique
Propriétaires
- Airtable — Standard du marché, freemium
- Google Sheets — Tableur classique collaboratif, sans relations fortes
- Microsoft Excel — Roi historique, mais client lourd
- Coda — Tableur + documents, approche originale
- Smartsheet — Project management + tables
- Notion — Bases de données, plus wiki
- Retool Tables — Plus dev-oriented
Comparaison
| Critère | Grist | Airtable | NocoDB | Google Sheets |
|---|---|---|---|---|
| Licence | Apache-2.0 | Propriétaire | AGPL-3.0 | Propriétaire |
| Modèle relationnel | ✅ Vrai | ✅ Limité | ✅ Vrai | ❌ |
| Formules | Python-like | Propre | Limitée | Propre |
| ACL par ligne | ✅ | ✅ (Pro) | ❌ | ✅ |
| API | REST + Python | REST | REST/GraphQL | Sheets API |
| Auto-hébergeable | ✅ | ❌ | ✅ | ❌ |
| Visualisations intégrées | ✅ | ✅ | Limité | ✅ |
| Versioning | ✅ Auto | Pro only | ❌ | ✅ |
| Prix | Gratuit | Freemium | Gratuit | Freemium |
Verdict : Grist est le meilleur choix open source pour un homelab qui veut un vrai tableur relationnel avec ACL fines. Il bat Airtable sur la rigueur des données, le pricing et la portabilité. Pour un usage plus "no-code Airtable-like", NocoDB ou Teable sont mieux.
🔐 Sécurité
- Authentification : email/password par défaut, OIDC / OAuth / SAML via config (recommandé)
- HTTPS obligatoire via app-traefik — Grist expose aussi une API
- ACL fines : par table, par colonne, par ligne
- Secrets : si OIDC, stocker
GRIST_OAUTH_SECREThors de l'image - Backups : app-backup (restic) sur le volume
grist-data(contienthome.sqlite) — indispensable, c'est toute votre data - Si Postgres backend : sauvegarder la BDD via
pg_dump
📚 Ressources
Pages Liées
- cat-database — Catégorie Database
- app-postgres — BDD alternative au SQLite
- app-backup (restic) — Sauvegardes critiques
- app-traefik — Reverse-proxy HTTPS
- recettes-docker-compose — Recettes
- securisation-home-lab — Bonnes pratiques
- glossaire-homelab — Glossaire