Files
wiki/Catalogue-Self-Hosted/apps/app-grist.md
T
2026-06-09 18:40:21 +02:00

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.2 dans 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

  1. Premier accès : https://grist.example.com → créer le premier utilisateur (devient admin via GRIST_SINGLE_ORG)
  2. Activer OIDC (recommandé) : configurer les variables GRIST_OAUTH_* et pointer vers Authentik/Authelia
  3. Créer un document : + New Document → importer un CSV, XLSX, ou partir de zéro
  4. Créer une deuxième table : + Add new table → définir les types de colonnes
  5. Créer une relation : dans une table, ajouter une colonne de type "Reference" pointant vers l'autre table
  6. 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_SECRET hors de l'image
  • Backups : app-backup (restic) sur le volume grist-data (contient home.sqlite) — indispensable, c'est toute votre data
  • Si Postgres backend : sauvegarder la BDD via pg_dump

📚 Ressources

Pages Liées