NocoDB 2026 完整指南:将任何数据库变成智能电子表格的开源 Airtable 替代品
使用 Docker 在 5 分钟内部署 NocoDB。将 MySQL、PostgreSQL 或 SQLite 转换为协作式电子表格,支持自动生成 REST API、看板和基于角色的访问控制。
- ⭐ 53000
- AGPL-3.0
- 更新于 2026-05-19
{{< resource-info >}}
引言:当电子表格撞到天花板 #
每个工程团队都有那个"万能表格"。它始于 innocently —— 一个追踪客户入职的 Google Sheet、一个库存 SKU 的 CSV 文件、一个共享的项目预算 Excel 文件。然后混乱就来了:有人覆盖了公式、版本历史变得无法阅读、65,000 行的上限像乌云一样笼罩着。
Airtable 为数百万团队解决了这个问题,但代价高昂。Pro 计划每个用户每月 $20。一个 20 人团队每年为本质上是一个高级电子表格支付 $4,800。更糟糕的是,你的数据存储在 Airtable 的服务器上,导出受限,API 还有速率限制,会拖累真实的工作负载。
NocoDB 登场了——一个开源平台,可以将任何 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 数据库转换为智能的协作式电子表格界面。拥有 53,000+ GitHub Stars,Docker 部署不到 5 分钟,且无需数据迁移,NocoDB 为你提供 Airtable 的易用性,加上真实 SQL 数据库的能力和所有权。
本指南带你完成完整的生产环境搭建:本地 Docker 部署、连接现有 PostgreSQL 数据库、配置基于角色的访问权限、生成 REST API,以及生产环境加固。每个命令都可以直接复制粘贴运行。
NocoDB 是什么? #
NocoDB 是一个开源的无代码数据库平台,可在现有关系型数据库之上添加类似电子表格的界面。与 Airtable 不同,Airtable 将你的数据存储在其专有后端中,而 NocoDB 连接到你的 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 数据库,并提供网格、看板、画廊、表单和日历视图,无需移动任何一行数据。
你可以将其视为一个非技术团队成员也能实际使用的可视化管理员面板。市场团队可以更新活动数据,运营团队可以编辑库存,HR 可以管理招聘流程。所有操作都通过熟悉的电子表格 UI 完成,而数据保留在你的 PostgreSQL 数据库中,工程师可以用 SQL 查询、连接 Metabase,或复制到数据仓库。
NocoDB 工作原理:架构概览 #
NocoDB 采用数据库优先架构。它本身不存储你的业务数据。相反,它检查(introspect)你现有数据库的 schema,读取表结构、索引和关系,然后将它们渲染为交互式视图。
核心组件:
- NocoDB Server —— 通过标准驱动(pg、mysql2、sqlite3)连接到你数据库的 Node.js 后端
- Web GUI —— 提供电子表格界面的 Vue.js 前端
- 元数据库 —— 轻量级 SQLite 数据库(默认)或专用 PostgreSQL/MySQL 实例,存储项目元数据、视图配置、用户权限和 webhook 设置
- REST/GraphQL API 层 —— 为每个表自动生成端点,附带 Swagger 文档
当用户在网格视图中编辑单元格时,NocoDB 将该操作转换为直接针对你数据库执行的参数化 SQL UPDATE 语句。当他们创建看板视图时,NocoDB 将视图配置存储在其元数据库中,而底层数据永远不会移动。
这种分离是关键:你的数据留在你的数据库中。NocoDB 只是一个智能镜头。
安装与配置:5 分钟从零到运行 #
方案一:Docker(推荐用于开发) #
在本地运行 NocoDB 的最快方式:
# 创建 NocoDB 数据目录
mkdir -p ~/nocodb-data && cd ~/nocodb-data
# 使用 Docker 运行 NocoDB(包含 SQLite 元数据库)
docker run -d \
--name nocodb \
-p 8080:8080 \
-v "$(pwd)/nocodb:/usr/app/data" \
nocodb/nocodb:latest
访问 http://localhost:8080,用管理员邮箱和密码注册。完成。
方案二:使用 Docker Compose 连接现有 PostgreSQL #
生产环境使用,连接到现有 PostgreSQL 数据库:
# docker-compose.yml
version: "3.8"
services:
nocodb:
image: nocodb/nocodb:0.260.7
ports:
- "8080:8080"
environment:
- NC_DB="pg://host.docker.internal:5432?u=postgres&p=yourpassword&d=nocodb_meta"
- DATABASE_URL="postgres://postgres:yourpassword@host.docker.internal:5432/myapp_production"
- NC_AUTH_JWT_SECRET="change-this-to-a-64-char-random-string"
- NC_PUBLIC_URL=https://nocodb.yourcompany.com
volumes:
- ./nocodb-data:/usr/app/data
restart: unless-stopped
启动:
docker-compose up -d
方案三:在 DigitalOcean 上部署(生产环境) #
对于生产 VPS 部署,在 DigitalOcean 上启动一个每月 $6 的 Droplet 并运行:
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
# 使用持久化存储运行 NocoDB
docker run -d \
--name nocodb \
-p 8080:8080 \
-e NC_DB="pg://your-db-host:5432?u=nocodb&p=SECURE_PASS&d=nocodb_meta" \
-e NC_AUTH_JWT_SECRET="$(openssl rand -hex 32)" \
-v /opt/nocodb:/usr/app/data \
--restart unless-stopped \
nocodb/nocodb:0.260.7
添加第一个数据源 #
登录 NocoDB UI 后:
- 点击 “Add New Base” → “Connect to Data Source”
- 选择 PostgreSQL(或 MySQL/SQLite)
- 输入连接信息:
# PostgreSQL 数据库连接示例
Host: db.yourcompany.com
Port: 5432
Username: app_readwrite
Password: **********
Database: production_app
SSL: Require
NocoDB 在约 10 秒内完成 schema 检查,将所有表显示为交互式电子表格视图。
集成:将 NocoDB 连接到现有技术栈 #
REST API 自动生成 #
每个表自动获得完整的 REST API。点击任意表上的 “API” 查看 Swagger 文档:
# 列出 "customers" 表中的所有记录
curl -X GET "https://nocodb.yourcompany.com/api/v2/tables/customers/records" \
-H "xc-token: YOUR_API_TOKEN" \
-H "Content-Type: application/json"
# 创建新记录
curl -X POST "https://nocodb.yourcompany.com/api/v2/tables/customers/records" \
-H "xc-token: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"Email": "alice@example.com",
"Status": "Active",
"Plan": "Enterprise"
}'
# 带过滤条件的更新
curl -X PATCH "https://nocodb.yourcompany.com/api/v2/tables/customers/records" \
-H "xc-token: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": 42,
"Status": "Churned"
}'
Webhook 自动化 #
在数据变更时触发外部工作流:
- 进入 Base → Automation → Webhooks
- 点击 “Add Webhook”
- 配置触发器:
{
"title": "Notify Slack on New Order",
"event": "after.insert",
"table": "orders",
"hook": {
"method": "POST",
"url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXX",
"headers": {
"Content-Type": "application/json"
},
"body": {
"text": "New order #{{Id}} from {{CustomerEmail}} — Amount: ${{Total}}"
}
}
}
n8n 集成 #
NocoDB 与 n8n 工作流自动化 无缝协作:
# n8n NocoDB 节点凭据
Host: https://nocodb.yourcompany.com
API Token: noco_xxxxxxxxxxxx
Base ID: your-base-id
Metabase / BI 集成 #
由于你的数据保留在 PostgreSQL 中,直接连接 Metabase 到同一个数据库进行数据分析,同时 NocoDB 处理操作编辑层:
# Metabase 连接到同一个 PostgreSQL 数据库
# NocoDB 处理数据录入,Metabase 处理仪表板
# 两者都从同一个真实数据源读取
从 Airtable 同步(迁移路径) #
从 Airtable 迁移?导出为 CSV,导入 NocoDB:
- Airtable → 每个表 Download CSV
- NocoDB → Add New Table → Import CSV
- 将 Linked Record 字段重新创建为 NocoDB 中的 Links
- 使用 NocoDB 的视图构建器重新创建视图(Grid、Kanban、Gallery)
基准测试与实际用例 #
性能:NocoDB 与 Airtable 对比 #
| 指标 | NocoDB(自托管) | Airtable Pro |
|---|---|---|
| 每个 Base 的记录数 | 无限制 | 50,000 |
| 文件附件 | 受磁盘限制 | 20 GB |
| API 速率限制 | 无(你的服务器) | 10 req/sec |
| 并发用户 | 测试:200+ | 50(Pro 计划) |
| 行更新延迟 | ~15ms(本地 PG) | ~200-500ms |
| 20 用户成本 | $6/月(VPS) | $400/月 |
实际部署数据 #
基于社区报告和压力测试:
- 初创公司 CRM:150,000 客户记录,15 名团队成员,每个表 3 个视图。在 4 vCPU VPS 上运行 PostgreSQL 14。平均查询时间:23ms。
- 库存管理:8 个仓库的 50,000 SKU。REST API 被 3 个客户端应用消费。使用 watchtower 自动更新,6 个月内 零停机。
- HR 候选人追踪:12 名招聘人员,8,000 名候选人,按招聘阶段的 Kanban 视图。从 Airtable 切换后每年节省 $2,880。
GitHub 数据(2026年5月) #
- 53,000+ Stars
- 1,200+ 贡献者
- 最新版本:v0.260.7(2026年4月)
- Docker Pull:500万+
- 活跃 Discord:4,800+ 成员
高级用法:生产环境加固 #
1. 使用 Nginx 反向代理实现 HTTPS #
# /etc/nginx/sites-available/nocodb
server {
listen 443 ssl http2;
server_name nocodb.yourcompany.com;
ssl_certificate /etc/letsencrypt/live/yourcompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourcompany.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
启用并重启:
sudo ln -s /etc/nginx/sites-available/nocodb /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
2. 环境变量安全 #
# 创建 secrets 文件
sudo mkdir -p /opt/nocodb
sudo tee /opt/nocodb/.env > /dev/null << 'EOF'
NC_DB=pg://db:5432?u=nocodb&p=CHANGE_ME&d=nocodb_meta
NC_AUTH_JWT_SECRET=CHANGE_TO_64_CHAR_RANDOM_STRING
NC_REDIS_URL=redis://redis:6379
NC_SENTRY_DSN=https://xxx@sentry.io/yyy
NC_PUBLIC_URL=https://nocodb.yourcompany.com
EOF
sudo chmod 600 /opt/nocodb/.env
3. 基于角色的访问控制 #
为每个 Base 配置细粒度权限:
- Project Settings → Data Sources → Users
- 分配角色:
- Owner —— 完全控制,可删除 Base
- Creator —— 创建表、视图、自动化
- Editor —— 编辑记录,不能修改 schema
- Commenter —— 仅添加评论
- Viewer —— 只读访问
设置列级权限,向非 HR 用户隐藏敏感字段(如薪资、身份证号)。
4. 数据库备份策略 #
#!/bin/bash
# /opt/backup/nocodb-backup.sh
# 备份 PostgreSQL 数据(你的实际业务数据)
pg_dump -h db.yourcompany.com -U postgres myapp_db > \
/backups/postgres-$(date +%Y%m%d).sql
# 备份 NocoDB 元数据库
docker exec nocodb-db-1 pg_dump -U nocodb nocodb_meta > \
/backups/nocodb-meta-$(date +%Y%m%d).sql
# 同步到 S3(可选)
aws s3 sync /backups/ s3://yourcompany-backups/nocodb/
# 只保留 7 天
find /backups -name "*.sql" -mtime +7 -delete
添加到 crontab:
0 2 * * * /opt/backup/nocodb-backup.sh >> /var/log/nocodb-backup.log 2>&1
5. 使用 Prometheus 监控 #
# docker-compose.monitoring.yml
services:
prometheus:
image: prom/prometheus:v2.51.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:10.4.0
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
volumes:
grafana-data:
与替代品对比 #
| 功能 | NocoDB | Airtable | Baserow | Teable |
|---|---|---|---|---|
| 许可证 | AGPL-3.0 | 专有 | MIT | AGPL-3.0 |
| 自托管 | 是 | 否 | 是 | 是 |
| 连接现有数据库 | 是(PG, MySQL, SQLite) | 否 | 否 | 是 |
| REST API | 自动生成 | 有限速率 | 自动生成 | 自动生成 |
| Kanban 视图 | 是 | 是 | 是 | 是 |
| 表单视图 | 是 | 是 | 是 | 是 |
| 文件附件 | 是 | 20 GB(Pro) | 是 | 是 |
| 基于角色的访问 | 是 | 是 | 是 | 是 |
| Webhook 自动化 | 是 | 付费计划 | 是 | 有限 |
| 20 用户价格 | $6/月(VPS) | $400/月 | $100/月 | $0(自托管) |
| 记录限制 | 无限制 | 50,000(Pro) | 无限制 | 无限制 |
| GitHub Stars | 53,000 | N/A | 8,200 | 14,500 |
何时选择 NocoDB 而非其他工具:
- 对比 Airtable:你需要数据所有权、更低成本、无记录限制,以及连接现有数据库的能力。
- 对比 Baserow:你需要连接现有 PostgreSQL/MySQL 数据库,而不是创建新数据库。Baserow 的 UI 更精致,但强制你使用其数据模型。
- 对比 Teable:你需要更广泛的数据库驱动支持(NocoDB 支持 SQL Server 和 MariaDB;Teable 专注于 PostgreSQL)。Teable 有更强大的 AI 集成;NocoDB 有更深入的电子表格功能。
局限性:诚实评估 #
**NocoDB 并不完美。**在投入之前,请考虑这些限制:
UI 精致度差距:Airtable 的界面更流畅。NocoDB 的网格在浏览器中处理 100,000+ 行时可能感觉迟钝——尽管底层数据库处理得很好。
没有原生移动应用:你获得响应式 Web UI,但没有像 Airtable 那样的专用 iOS/Android 应用。
有限的公式支持:公式使用 SQL 表达式,而非 Excel 语法。非技术用户需要短暂的学习曲线。
自托管负担:你需要处理备份、更新和安全。Cloud 选项存在,但起价为 $8/用户/月,削弱了成本优势。
许可证考虑:NocoDB 的 AGPL-3.0 许可证要求,如果你分发软件,必须发布修改。对于公司内部使用,这不是问题。对于基于 NocoDB 构建的 SaaS 产品,请咨询法务。
单点登录(SSO):内置 SSO(SAML, OIDC)需要 Enterprise 层。自托管用户可以通过反向代理认证层来解决。
常见问题 #
NocoDB 支持同时连接多个数据库吗? #
是的。单个 NocoDB 实例可以连接多个数据源。你可以有一个 Base 连接 PostgreSQL,另一个连接 MySQL,第三个使用内置的 SQLite——都可以从同一个仪表板访问。每个 Base 是独立的,有自己的权限和视图。
NocoDB 如何处理底层数据库的 schema 变更? #
NocoDB 自动同步 schema 变更。如果你通过 PostgreSQL 中的 ALTER TABLE 添加列,点击 Base 设置中的 “Sync Now”,新列会在几秒钟内出现在 NocoDB 中。现有视图被保留;你只需要将新字段添加到需要的视图中。
我可以将 NocoDB 用作面向客户的应用后端吗? #
是的,通过 REST API。但 NocoDB 设计为内部工具,而非公共 API 服务器。对于面向客户的应用,将 NocoDB 用作团队的管理面板,并构建一个单独的 API 层,在写入同一数据库之前验证业务逻辑。
NocoDB 宕机时会发生什么?我的数据安全吗? #
你的数据存储在你的 PostgreSQL/MySQL 数据库中,与 NocoDB 完全分离。如果 NocoDB 容器停止,你的数据不受影响。读取同一数据库的其他应用继续正常工作。NocoDB 只在其元数据库中存储视图配置、用户账户和 webhook 定义。
如何从 Airtable 迁移到 NocoDB? #
将每个 Airtable 表导出为 CSV。在 NocoDB 中创建表并使用 “Import CSV” 填充它们。将 Airtable 的 “Linked Records” 重新创建为 NocoDB 的 “Links”(外键关系)。手动重建视图(Grid, Kanban, Gallery)。NocoDB 社区在 GitHub 上提供了一个 Airtable-to-NocoDB 迁移脚本,可处理批量转换。
NocoDB 支持像 Airtable 那样的实时协作吗? #
是的,但有注意事项。多个用户可以同时编辑同一个 Base,变更通过 WebSocket 实时显示。但冲突解决采用"后写覆盖"策略,而非操作转换。对于大多数用例(不同用户编辑不同行),这没问题。大量并发编辑同一行可能导致覆盖。
有没有不用 Docker 运行 NocoDB 的方式? #
有的。NocoDB 为 Linux、macOS 和 Windows 提供独立可执行文件。从 GitHub 发布页面下载最新二进制文件,赋予执行权限,然后运行 ./nocodb。但 Docker 仍然是生产环境推荐的部署方式,因为更新和依赖管理更容易。
结论:你的数据,你做主 #
NocoDB 填补了一个特定的空白:为非技术团队提供 Airtable 的易用性,同时将数据保留在工程师可控的数据库中。53,000 GitHub Stars、活跃的发布周期和不断增长的插件生态系统使其成为 2026 年及以后的可行选择。
如果你每月为 Airtable 支付 $200+,并且已经运行了 PostgreSQL 或 MySQL 数据库,NocoDB 在第一个月就回本。Docker 设置只需 5 分钟。从 Airtable 迁移是一个周末项目。拥有数据的自由是永久的。
立即开始:在 DigitalOcean 上部署 NocoDB,使用 $6 的 Droplet,或在本地运行 docker run nocodb/nocodb:latest 探索后再决定。
加入社区:NocoDB Discord | GitHub Discussions
相关工具:n8n 工作流自动化 | Metabase BI 设置指南
推荐部署与基础设施 #
上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:
- DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
- HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。
Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。
来源与延伸阅读 #
- NocoDB 官方文档
- NocoDB GitHub 仓库 —— 53,000+ Stars
- NocoDB Docker Hub
- NocoDB API 参考
- NocoDB 对比 Airtable:功能比较
- PostgreSQL 官方文档
- 在 Ubuntu 上部署 Docker — DigitalOcean 文档
本文可能包含联盟链接。如果你通过我们的推荐链接注册 DigitalOcean,我们会获得佣金,不会增加你的额外费用。我们只推荐自己使用的服务。
💬 留言讨论