Pourquoi Grist plutôt qu'un Google Sheets ou un Airtable
Google Sheets est un tableur : il stocke des données à plat, les calculs sont limités à des fonctions de feuille, et les relations entre feuilles reposent sur des VLOOKUP fragiles. Airtable résout cela avec des bases relationnelles, mais à 20 $ par utilisateur par mois, l'addition monte vite pour une agence ou une équipe technique.
Grist combine les deux mondes : une interface tableur familière sur une base de données relationnelle réelle. Chaque document contient des tables avec des colonnes typées (texte, numérique, date, référence, pièce jointe), des relations explicites entre tables via des colonnes de référence, et des formules Python qui s'exécutent côté serveur — pas dans le navigateur. Sur votre VPS, Grist coûte 0 $ par mois supplémentaire.
Ce que Grist fait que Google Sheets ne fait pas
- Relations entre tables : une colonne de référence dans
Commandespointe versClients— pas un VLOOKUP cassable, une vraie clé étrangère avec autocomplétion. - Formules Python côté serveur :
import datetime,import re,import uuid— et toute bibliothèque Python pure. Les formules s'exécutent dans un sandbox serveur, pas dans le navigateur. - API REST automatique : chaque document expose
/api/docs/<id>/tables/<table>/recordssans configuration. Intégrez Grist dans n8n, Make ou tout client HTTP. - Vues multiples sur les mêmes données : grid, carte, graphique, calendrier, widget personnalisé — chaque vue est filtrée et configurée indépendamment sans dupliquer les données.
- Règles d'accès par ligne et par colonne : limitez la lecture ou l'écriture d'une ligne selon l'attribut de l'utilisateur — assez fin pour des documents multi-tenant.
Architecture Docker en un seul conteneur
Grist se déploie en un seul conteneur gristlabs/grist:latest qui embarque Node.js (serveur), Python (sandbox de formules) et SQLite (stockage des documents). Un volume nommé /persist stocke les fichiers .grist — un fichier par document. Aucun service externe requis : pas de PostgreSQL, pas de Redis, pas de Celery.
Une variable d'environnement pilote l'authentification initiale : [email protected] connecte automatiquement l'utilisateur sans SMTP ni vérification d'e-mail. Pour un déploiement multi-utilisateurs avec authentification réelle, Grist supporte OIDC (GRIST_OIDC_*) — Google Workspace, Authentik, Keycloak.
Déployer Grist sur un VPS en 4 étapes
Préparer le VPS et Docker
Un VPS 1 Go RAM suffit. Connectez-vous en SSH, installez Docker (
curl -fsSL https://get.docker.com | sh), créez le dossier de stack :mkdir -p /opt/stacks/grist && cd /opt/stacks/grist.Créer le docker-compose.yml
Définissez le service depuis l'image
gristlabs/grist:latest, montez le volume/persist, exposez le port 8484 et définissez unGRIST_SESSION_SECRETaléatoire (openssl rand -hex 32). Ajoutez[email protected]pour l'accès auto sans SMTP.Lancer et vérifier
Démarrez avec
docker compose up -det attendez le boot Node.js (~10 s). Vérifiez aveccurl -sI http://localhost:8484/— vous devez obtenir HTTP 200 ou une redirection 302 vers la home. Grist est opérationnel.Créer votre premier document
Ouvrez
http://your-vps-ip:8484— Grist vous connecte directement. Cliquez '+ Add document', définissez vos tables et colonnes, puis explorez les formules Python via=dans une cellule. Pour importer des données existantes : File → Import from file (CSV, Excel, .grist).Ajouter un reverse proxy et HTTPS
Placez Caddy devant Grist :
grist.votredomaine.com { reverse_proxy grist:8484 }. Caddy obtient et renouvelle le certificat Let's Encrypt automatiquement. Mettez à jourGRIST_ALLOWED_HOSTS=grist.votredomaine.comet redémarrez le conteneur.Se connecter la première fois
Grist vous redirige vers un écran de connexion « boot » qui réclame une clé d'installation — saisissez la clé fournie. Vous enchaînez ensuite sur un assistant de configuration rapide, puis vous accédez à vos documents en tant qu'administrateur ([email protected]).
Pour automatiser les sauvegardes des documents Grist, montez le volume /persist/docs/ dans un job Backrest (aussi dans le catalogue ServOrbit) : Backrest snapshote le dossier via restic et envoie les incréments chiffrés vers S3, Backblaze B2 ou SFTP — sans arrêter Grist. Grist lui-même conserve un historique de snapshots par document (menu Document → History), pratique pour restaurer une version précédente sans quitter l'interface.