Guide de déploiement

Héberger Grist sur un VPS : tableur-base de données open-source

Déployer sur un VPS Cloud →

Tutoriel

Héberger Grist sur un VPS : tableur-base de données open-source

Self-hosting4 min de lecture6 étapes

Google Sheets stocke des listes. Airtable ajoute des relations entre tables, mais facture 20 $ par utilisateur par mois. Grist fait les deux, en open-source, sur votre propre serveur : des colonnes typées, des références entre tables, des formules Python qui s'exécutent côté serveur, et une API REST générée automatiquement sur chaque document. Résultat : un outil de modélisation de données complet, sans abonnement, sans vendor lock-in.

Sommaire· Pourquoi Grist plutôt qu'un Google Sheets ou un Airtable1/4
  1. 01Pourquoi Grist plutôt qu'un Google Sheets ou un Airtable
  2. 02Ce que Grist fait que Google Sheets ne fait pas
  3. 03Architecture Docker en un seul conteneur
  4. 04Déployer Grist sur un VPS en 4 étapes

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 Commandes pointe vers Clients — 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>/records sans 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

  1. 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.

  2. 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 un GRIST_SESSION_SECRET aléatoire (openssl rand -hex 32). Ajoutez [email protected] pour l'accès auto sans SMTP.

  3. Lancer et vérifier

    Démarrez avec docker compose up -d et attendez le boot Node.js (~10 s). Vérifiez avec curl -sI http://localhost:8484/ — vous devez obtenir HTTP 200 ou une redirection 302 vers la home. Grist est opérationnel.

  4. 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).

  5. 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 à jour GRIST_ALLOWED_HOSTS=grist.votredomaine.com et redémarrez le conteneur.

  6. 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.

Votre Airtable, sur votre serveur

Déployez Grist sur un VPS ServOrbit et modélisez vos données sans abonnement, sans vendor lock-in — API REST, formules Python, collaboration temps réel.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet