Grist with SQLite-EC2部署
使用SQLite进行数据存储的自托管Grist电子表格/数据库平台,与Docker容器化,可用于AWS EC2部署。
______________________________________________________________________
Grist是什么?
Grist是一个现代的开源电子表格数据库混合体,将电子表格的灵活性与数据库的强大功能相结合。它非常适合:
- 无需代码即可构建自定义应用程序
- 使用关系管理结构化数据
- 创建表单和仪表板
- API驱动的数据工作流
- 协作团队工作空间
______________________________________________________________________
建筑
此部署使用:
- 格里斯特:Docker Hub的最新稳定版本
- SQLite:默认嵌入式数据库(不需要外部数据库)
- Docker Compose:容器编排
- 持久容量:数据存储在本地
./persist目录
数据存储
SQLite数据库创建于 /persist 目录:
home.sqlite3-用户、工作区和文档元数据grist-sessions.db-浏览器会话数据docs/*.grist-单个Grist文档(也包括SQLite文件)
______________________________________________________________________
特性
- 零数据库设置:SQLite开箱即用,不需要PostgreSQL/MySQL
- 轻松部署:单人
docker compose up命令 - 持久化存储:所有数据在容器重启后仍然有效
- 便携的:通过复制进行备份/还原
persist/目录 - 可扩展的:如果需要,稍后升级到PostgreSQL
- 安全:会话机密,单端口模式,可选HTTPS
- MCP服务器:用于AI助手集成的模型上下文协议服务器(参见 MCP_SERVER.md)
______________________________________________________________________
先决条件
- AWS EC2实例(建议使用Ubuntu 22.04 LTS)
- 已安装Docker和Docker Compose
- 开放端口:22(SSH),80/443(HTTP/HTTPS)
- 对于强化部署,请保持
8484公开关闭,仅通过Nginx。
______________________________________________________________________
快速启动(地方发展)
1.克隆存储库
git clone
cd grist-sqlite-ec22.创建环境文件
cp .env.example .env3.生成会话密钥
python3 -c "import secrets; print(secrets.token_urlsafe(32))"4.编辑.env
nano .env设置所需值:
GRIST_SESSION_SECRET=
GRIST_DEFAULT_EMAIL=your-email@example.com
GRIST_DOMAIN=localhost
PORT=84845.启动Grist
docker compose up -d6.进入Grist
打开浏览器: http://localhost:8484
______________________________________________________________________
EC2部署
看 EC2_部署.md 获取完整的分步指南,包括:
- EC2实例设置
- Docker安装
- 安全配置
- 自定义域和HTTPS
- 自动备份
- 生产检查表
快速EC2部署:
# SSH to EC2
ssh -i your-key.pem ubuntu@your-ec2-ip
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker ubuntu
newgrp docker
# Clone and setup
git clone grist-sqlite-ec2
cd grist-sqlite-ec2
cp .env.example .env
nano .env # Configure values
# Start Grist
docker compose up -d
# Access
https://your-domain______________________________________________________________________
配置
环境变量
必需的
GRIST_SESSION_SECRET-会话管理密钥(用Python脚本生成)GRIST_DEFAULT_EMAIL-初始管理员帐户的电子邮件
可选的
PORT-服务器端口(默认值:8484)GRIST_DOMAIN-域名或IP地址GRIST_SANDBOX_FLAVOR-插件沙箱安全(gvisor、unsandboxed、pyodide)
看 .env.example 查看完整配置选项。
______________________________________________________________________
用法
基本操作
开始Grist
docker compose up -d阻止格里斯特
docker compose down重新启动Grist
docker compose restart查看日志
docker compose logs -f检查状态
docker compose ps用户管理
- 第一个用户(使用
GRIST_DEFAULT_EMAIL)自动成为管理员 - 管理员可以通过Grist UI邀请用户
- 用户通过邀请链接创建帐户
数据管理
备份数据
# Backup entire persist directory
tar -czf grist-backup-$(date +%Y%m%d).tar.gz ./persist
# Or copy SQLite files directly
cp -r ./persist ~/grist-backup恢复数据
# Stop Grist
docker compose down
# Restore files
tar -xzf grist-backup-YYYYMMDD.tar.gz
# Start Grist
docker compose up -d检查数据库大小
du -sh ./persist______________________________________________________________________
Docker命令
将Grist更新到最新版本
docker compose pull
docker compose up -d查看容器详细信息
docker inspect grist-app在容器中执行命令
docker exec -it grist-app bash清理旧图像
docker system prune -a______________________________________________________________________
故障排除
容器无法启动
检查日志:
docker compose logs常见问题:
- 缺失
.envfile → 创建自.env.example - 端口8484已在使用中→ 改变
PORT在.env - 权限错误→ Run
chmod -R 755 ./persist
无法访问Grist
来自EC2:
curl http://localhost:8484如果本地工作但不远程工作:
- 检查EC2安全组是否允许端口80/443
- 检查防火墙:
sudo ufw status - 验证
GRIST_DOMAIN匹配您的访问URL
数据库错误
检查SQLite的完整性:
sqlite3 ./persist/home.sqlite3 "PRAGMA integrity_check;"重置数据库(警告:删除所有数据):
docker compose down
rm -rf ./persist/*
docker compose up -d性能问题
检查系统资源:
docker stats grist-app升级实例类型或优化:
- 使用t3.small或更大的尺寸进行生产
- 监控磁盘I/O
iostat - 考虑PostgreSQL用于高负载场景
______________________________________________________________________
安全
会话机密
- 总是 生成强随机秘密
- 永不承诺
.env到版本控制 - 定期轮换机密
防火墙配置
sudo ufw allow 22/tcp # SSH only
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enableHTTPS设置
- 使用Nginx作为反向代理
- 安装Let's Encrypt SSL证书
- 将HTTP重定向到HTTPS
- 看 EC2_部署.md 详细设置
文件权限
chmod 600 .env # Only owner can read/write
chmod -R 755 ./persist # Container can read/write data______________________________________________________________________
生产建议
- 使用HTTPS:始终加密生产中的流量
- 定期备份:将日常备份自动化到S3或外部存储
- 监控日志:设置日志聚合(CloudWatch、ELK堆栈)
- 资源监控:跟踪CPU、内存、磁盘使用情况
- 定期更新:保持Grist和Docker映像的最新状态
- 限制访问:使用安全组限制传入流量
- 测试恢复:定期验证备份完整性
______________________________________________________________________
升级到PostgreSQL(可选)
如果你无法使用SQLite,请迁移到PostgreSQL:
- 导出Grist数据
- 设置PostgreSQL(RDS或自托管)
- 更新
docker-compose.yml与PostgreSQL连接 - 重新启动Grist并导入数据
有关迁移指南,请参阅Grist文档。
______________________________________________________________________
项目结构
grist-sqlite-ec2/
├── docker-compose.yml # Docker Compose configuration
├── .env.example # Environment template
├── .env # Environment configuration (gitignored)
├── .gitignore # Git ignore rules
├── README.md # This file
├── MCP_SERVER.md # MCP server documentation
├── EC2_DEPLOYMENT.md # Detailed EC2 setup guide
├── persist/ # Persistent data directory (gitignored)
│ ├── home.sqlite3 # Users, workspaces, docs metadata
│ ├── grist-sessions.db # Session data
│ └── docs/ # Individual .grist files
└── mcp-server/ # MCP server for AI assistant integration
├── server.py # FastAPI MCP server
├── grist_client.py # Grist REST API client
├── tools.py # MCP tools for Grist operations
├── requirements.txt # Python dependencies
├── .env.example # MCP server environment template
├── .gitignore # Git ignore rules
└── tests/ # Test suite
├── test_grist_client.py
├── test_tools.py
└── test_integration.py______________________________________________________________________
MCP服务器集成
此部署包括一个模型上下文协议(MCP)服务器,允许AI助手(如DarcyIQ):
- 列出Grist文档中的表格
- 读取和查询记录数据
- 创建新记录
- 更新现有记录
- 删除记录
- 通过自然语言自动化数据工作流程
看 MCP_SERVER.md 获取完整的设置和集成指南。
快速MCP设置:
cd mcp-server
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Configure Grist API key and MCP auth token in .env
python server.pyMCP服务器通过REST API连接到Grist实例,并提供与DarcyIQ和其他人工智能助手兼容的JSON-RPC 2.0接口。
______________________________________________________________________
资源
文档
- Grist Docs: https://support.getgrist.com/
- 自我管理指南: https://support.getgrist.com/self-managed/
- API文档: https://support.getgrist.com/api/
码头工人
- Docker 中心: https://hub.docker.com/r/gristlabs/grist
- GitHub: https://github.com/gristlabs/grist-core
社区
- 论坛: https://community.getgrist.com/
- Discord 的中文翻译是“不和谐”或“纷争”。: https://discord.gg/MYKpYQ3fbP
______________________________________________________________________
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 本地测试更改
- 提交拉取请求
______________________________________________________________________
许可证
\[您的许可证在这里\]
______________________________________________________________________
支持
- 问题:查看上面的故障排除部分
- EC2设置:参见 EC2_部署.md
- Grist帮助:参观https://support.getgrist.com/
______________________________________________________________________
快速参考卡
首次设置
cp .env.example .env
nano .env # Set GRIST_SESSION_SECRET and GRIST_DEFAULT_EMAIL
docker compose up -d日常运营
docker compose ps # Check status
docker compose logs -f # View logs
docker compose restart # Restart备份与恢复
# Backup
tar -czf backup.tar.gz ./persist
# Restore
docker compose down
tar -xzf backup.tar.gz
docker compose up -d更新
docker compose pull
docker compose up -d______________________________________________________________________
创建:2026年1月22日 状态:准备部署
