项目:nocodb/nocodb | 星数:65382 | 语言:TypeScript | 协议:AGPL | GitHub仓库
更新日期:2026-10-30 · 作者:CodeArts 编辑部
市场部要给活动报名建一个管理后台:录名单、改状态、导出、按渠道统计。这类需求在过去我要写三四天:建表、写接口、写列表页、写详情表单、加导出。后来我用 NocoDB 二十分钟做完了——本质上是把数据库表直接变成一个可操作的电子表格界面,还自带 REST API。
NocoDB 是 65382 星的 Airtable 开源替代,AGPL 协议,TypeScript 编写。它不自己定义存储格式,而是直接接管你的 MySQL/Postgres/SQLite,所以数据始终是普通的关系表,随时可以用 SQL 或别的工具访问——这一点是我选它而不是 Airtable 的核心原因,不锁数据。
| 能力 | 说明 |
|---|---|
| 表结构可视化 | 直接在界面上建表、加字段、改类型 |
| 多视图 | 网格、看板、日历、画廊、表单 |
| 自动 REST API | 每张表自动生成 CRUD 接口与 Swagger 文档 |
| 细粒度权限 | 按用户/角色限定可读写哪些行与列 |
| Webhook 与公式 | 数据变更触发回调,字段支持公式与关联 |
最实用的其实是最后两条的组合:表单视图收数据 → 公式字段自动算状态 → Webhook 推送到企业微信。整个流程不写一行后端代码。
# 方式一:Docker + 内置 SQLite(最简单) docker run -d \ --name noco \ -v "$(pwd)"/nocodb:/usr/app/data/ \ -p 8080:8080 \ nocodb/nocodb:latest # 方式二:Docker + 外部 Postgres(生产推荐) docker run -d \ --name noco \ -v "$(pwd)"/nocodb:/usr/app/data/ \ -p 8080:8080 \ -e NC_DB="pg://host.docker.internal:5432?u=postgres&p=你的密码&d=nocodb" \ -e NC_AUTH_JWT_SECRET="请填入一串随机字符串" \ nocodb/nocodb:latest
访问 http://localhost:8080/dashboard 完成初始化。注意 NC_AUTH_JWT_SECRET 一定要自己指定并保存好——它是会话签名密钥,不设置会导致重启后登录态异常。
真正让我留着它的功能是「外连数据库」。它可以接管一个已经存在的 Postgres 库,把现有表映射成可编辑界面,而不改变原来的表结构。这意味着:
ALTER TABLE;但要注意两点:一是需要给 NocoDB 一个带一定权限的数据库账号,别用超级用户;二是它会在库里建少量元数据表,做好命名前缀约定,免得和业务表混在一起。
| 工具 | 数据存储 | 适合 |
|---|---|---|
| NocoDB | 你的关系库,可外连 | 已有数据库、需要 API |
| Baserow | 自有存储,也支持外部源 | 偏 Airtable 体验 |
| Teable | Postgres | 大数据量、多维表 |
| Appsmith / ToolJet | 不自带存储,做前端 | 需要复杂交互的应用 |
如果需求是"业务同学要一个能改数据的表格界面",NocoDB 最快。如果是"我要做一个有复杂交互和自定义逻辑的内部系统",NocoDB 会从一开始就跟你较劲,应该选 Appsmith 一类低代码工具。
权限。默认角色权限很宽,务必按角色细分:只读、可编辑、可删。数据表一旦删了很难恢复。
备份。如果外连的是你自己的库,备份沿用原有策略;如果用内置 SQLite,务必定期备份挂载目录,或直接换成 Postgres。
暴露面。面板和 API 挂在公网上时,加上反向代理与 HTTPS,并关闭不必要的公开分享链接。分享链接默认可能允许匿名访问,这点和表里的数据敏感度直接相关。
不会。它操作的就是普通关系表,数据在 MySQL/Postgres/SQLite 里,随时可以用 SQL、ORM 或其他 BI 工具访问。它只额外建少量元数据表用于记录视图与权限配置。
可以。支持导入 Airtable 的 CSV/基础数据,也支持从 Airtable API 一次性同步表结构与记录。字段类型会有少量差异(如 Airtable 的附件、公式字段),需要迁移后手工核对。
3 到 50 人的内部数据管理都合适。超过这个规模,权限模型和性能会更依赖底层数据库本身,建议把数据放到独立 Postgres 上并做好索引,而不是用内置 SQLite。