Por qué Grist en lugar de Google Sheets o Airtable
Google Sheets es una hoja de cálculo: almacena datos planos, los cálculos se limitan a funciones de hoja y las relaciones entre hojas se apoyan en VLOOKUP frágiles. Airtable resuelve eso con bases relacionales, pero a 20 $ por usuario al mes la cuenta sube rápido para una agencia o un equipo técnico.
Grist combina ambos mundos: una interfaz de hoja de cálculo familiar sobre una base de datos relacional real. Cada documento contiene tablas con columnas tipadas (texto, numérico, fecha, referencia, adjunto), relaciones explícitas entre tablas mediante columnas de referencia y fórmulas Python que se ejecutan en el servidor, no en el navegador. En su VPS, Grist cuesta 0 $ al mes adicionales.
Lo que Grist hace y Google Sheets no
- Relaciones entre tablas: una columna de referencia en
Pedidosapunta aClientes— no un VLOOKUP que se rompe, sino una clave foránea real con autocompletado. - Fórmulas Python del lado del servidor:
import datetime,import re,import uuid— y cualquier librería Python pura. Las fórmulas se ejecutan en un sandbox del servidor, no en el navegador. - API REST automática: cada documento expone
/api/docs/<id>/tables/<table>/recordssin configuración. Integre Grist en n8n, Make o cualquier cliente HTTP. - Múltiples vistas sobre los mismos datos: grid, tarjeta, gráfico, calendario, widget personalizado — cada vista se filtra y se configura de forma independiente sin duplicar los datos.
- Reglas de acceso por fila y por columna: limite la lectura o la escritura de una fila según el atributo del usuario — lo bastante fino para documentos multi-tenant.
Arquitectura Docker en un solo contenedor
Grist se despliega en un solo contenedor gristlabs/grist:latest que incorpora Node.js (servidor), Python (sandbox de fórmulas) y SQLite (almacenamiento de los documentos). Un volumen con nombre /persist guarda los archivos .grist: un archivo por documento. No requiere ningún servicio externo: ni PostgreSQL, ni Redis, ni Celery.
Una variable de entorno controla la autenticación inicial: [email protected] conecta automáticamente al usuario sin SMTP ni verificación de correo. Para un despliegue multiusuario con autenticación real, Grist soporta OIDC (GRIST_OIDC_*): Google Workspace, Authentik, Keycloak.
Desplegar Grist en un VPS en 4 pasos
Preparar el VPS y Docker
Basta con un VPS de 1 GB de RAM. Conéctese por SSH, instale Docker (
curl -fsSL https://get.docker.com | sh) y cree la carpeta de la stack:mkdir -p /opt/stacks/grist && cd /opt/stacks/grist.Crear el docker-compose.yml
Defina el servicio a partir de la imagen
gristlabs/grist:latest, monte el volumen/persist, exponga el puerto 8484 y defina unGRIST_SESSION_SECRETaleatorio (openssl rand -hex 32). Añada[email protected]para el acceso automático sin SMTP.Arrancar y verificar
Arranque con
docker compose up -dy espere el arranque de Node.js (~10 s). Compruebe concurl -sI http://localhost:8484/: debe obtener un HTTP 200 o una redirección 302 hacia la home. Grist ya está operativo.Crear su primer documento
Abra
http://your-vps-ip:8484: Grist le conecta directamente. Haga clic en '+ Add document', defina sus tablas y columnas y luego explore las fórmulas Python mediante=en una celda. Para importar datos existentes: File → Import from file (CSV, Excel, .grist).Añadir un reverse proxy y HTTPS
Coloque Caddy delante de Grist:
grist.sudominio.com { reverse_proxy grist:8484 }. Caddy obtiene y renueva el certificado Let's Encrypt automáticamente. ActualiceGRIST_ALLOWED_HOSTS=grist.sudominio.comy reinicie el contenedor.Conectarse por primera vez
Grist le redirige a una pantalla de conexión «boot» que reclama una clave de instalación: introduzca la clave proporcionada. A continuación pasa por un asistente de configuración rápida y luego accede a sus documentos como administrador ([email protected]).
Para automatizar las copias de seguridad de los documentos Grist, monte el volumen /persist/docs/ en un job de Backrest (también en el catálogo ServOrbit): Backrest hace un snapshot de la carpeta con restic y envía los incrementos cifrados a S3, Backblaze B2 o SFTP, sin detener Grist. El propio Grist conserva un historial de snapshots por documento (menú Document → History), práctico para restaurar una versión anterior sin salir de la interfaz.