Auto-héberger Grist
Auto-héberger Grist : le guide complet pour deployer Grist
Vous voulez utiliser Grist sans dépendre du cloud public getgrist.com, soit pour des raisons de confidentialité, soit parce que vous avez déjà vos propres serveurs, soit simplement pour maîtriser vos coûts à long terme.
C’est tout à fait possible et même relativement simple si on suit les bonnes étapes.
Voici exactement ce qu’il faut savoir en 2025.
1. Les deux grandes façons d’auto-héberger Grist
- Grist « classique » (open-source, gratuit) → vous installez vous-même le serveur avec Docker
- Grist Enterprise (payant) → licence annuelle, support officiel, fonctionnalités supplémentaires (SCIM, audit logs avancés, etc.)
Pour une association ou une petite structure, la version open-source est très souvent suffisante.
2. Prérequis matériels minimum (version open-source)
- 2 vCPU / 4 Go RAM / 20 Go disque (pour < 50 utilisateurs simultanés)
- 4 vCPU / 8 Go RAM recommandé si vous avez beaucoup de formules ou plus de 100 utilisateurs
- Système : Linux (Ubuntu 22.04 ou 24.04 recommandé), ou Docker sur Windows/Mac pour du test
3. Installation la plus simple : Docker Compose (5 minutes)
Créez un fichier docker-compose.yml :
version: "3.8"
services:
grist:
image: gristlabs/grist
restart: unless-stopped
ports:
- "8484:8484"
environment:
- APP_HOME_URL=https://grist.votredomaine.fr
- GRIST_SINGLE_ORG=monentreprise
- EMAIL_SMTP=... # optionnel au début
volumes:
- grist-data:/persist
volumes:
grist-data:
Puis :
docker compose up -d
Accédez à https://ip-du-serveur:8484 (ou votre domaine) et créez le premier compte : c’est le propriétaire du site.
4. Mettre derrière un reverse proxy (recommandé)
La majorité des gens utilisent Nginx ou Traefik. Exemple Nginx très simple :
server {
listen 443 ssl;
server_name grist.votredomaine.fr;
ssl_certificate /etc/letsencrypt/live/votredomaine.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votredomaine.fr/privkey.pem;
location / {
proxy_pass http://localhost:8484;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
La doc officielle donne aussi un exemple complet avec Caddy et Traefik :
https://support.getgrist.com/install/example-docker-nginx/
5. Stocker les fichiers sur S3 / MinIO / Google Cloud (au lieu du disque local)
Il suffit d’ajouter dans les variables d’environnement :
environment:
- APP_DOC_INTERNAL_URL=http://grist:8484
- GRIST_S3_BUCKET=mon-bucket
- AWS_ACCESS_KEY_ID=...
- AWS_SECRET_ACCESS_KEY=...
- AWS_DEFAULT_REGION=eu-west-3
Compatible S3, MinIO, Wasabi, Backblaze, Google Cloud Storage, Azure Blob.
6. Authentification unique (SSO)
- OpenID Connect (OIDC) → Google Workspace, Microsoft Entra ID (Azure AD), Keycloak, Authentik, Zitadel, etc.
- SAML → Okta, OneLogin, JumpCloud, etc.
Configuration type OIDC (exemple Google) :
- GRIST_OIDC_IDP_ISSUER=https://accounts.google.com
- GRIST_OIDC_IDP_CLIENT_ID=votre-client-id.apps.googleusercontent.com
- GRIST_OIDC_IDP_CLIENT_SECRET=le-secret
- GRIST_OIDC_SP_HOST=https://grist.votredomaine.fr
Dès que c’est activé, plus personne ne peut créer de compte local : tout passe par votre fournisseur d’identité.
7. SCIM (provisioning automatique des utilisateurs) → uniquement licence Enterprise
Si vous avez Microsoft Entra ID ou Okta et plus de 100 utilisateurs, c’est très pratique : création/suppression automatique des comptes.
8. Sauvegardes
Deux solutions simples :
a) Sauvegarde du volume Docker
b) Export quotidien des documents via l’API ou via le bouton « Download as .grist » dans chaque document
Pour automatiser :
# sauvegarde du volume persist
docker run --rm -v grist-data:/data -v $(pwd):/backup alpine tar czf /backup/grist-backup-$(date +%F).tar.gz -C /data .
9. Mise à jour
docker compose pull
docker compose up -d
C’est tout. Les mises à jour sont testées pour être sans interruption.
10. Grist derrière un VPN d’entreprise
Très courant dans les mairies ou associations : pas d’ouverture publique, accès uniquement via le VPN ou Zero Trust (Cloudflare Access, Tailscale, etc.).
Il suffit de ne pas exposer le port 8484 sur Internet et de mettre APP_HOME_URL sur l’adresse interne.
11. Coût réel (open-source)
- Serveur Hetzner CX22 → 5 €/mois
- Serveur OVH Advance-1 → 25 €/mois
- Nom de domaine + Let’s Encrypt → gratuit
- Total : 5 à 30 €/mois selon la taille
12. Quand passer en Enterprise ?
- Vous avez besoin de SCIM
- Vous voulez le support officiel
- Vous avez besoin des audit logs complets et du streaming vers un SIEM
- Vous voulez Grist Connect (accès à distance sécurisé pour clients externes sans compte)
Tarif : à partir de 5 $ par utilisateur/mois (facturé annuellement). Demandez un devis sur getgrist.com/enterprise
En résumé : checklist rapide pour lancer votre Grist auto-hébergé
- Créer un serveur Linux ou une VM
- Installer Docker + Docker Compose
- Copier le docker-compose.yml ci-dessus
- Lancer
docker compose up -d - Ajouter un reverse proxy + certificat SSL
- (Optionnel) Configurer OIDC/SAML
- (Optionnel) Pointer le stockage vers S3/MinIO
- Créer vos premiers documents
Vous avez maintenant votre propre instance Grist, 100 % sous votre contrôle, sans abonnement mensuel obligatoire.
Liens officiels utiles :
- https://support.getgrist.com/self-managed/
- https://support.getgrist.com/install/
- GitHub du projet : https://github.com/gristlabs/grist-core
Si vous bloquez sur une étape, les logs Docker sont très clairs (docker logs -f grist) et la communauté est réactive sur le forum ou Discord officiel.
Bon déploiement !