NocoDB:3步把任意数据库变成表格界面,免费自部署
【免费下载链接】nocodb🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb
周一早上,市场同事发来一份客户跟进表,销售那边又导出一份 Excel,两边手机号格式不一样,重名记录对不上,谁也不确定哪份是最新的。这种"数据散落在各系统里"的局,靠人工合并迟早要出事故。
把两个系统的表都接进 NocoDB——一个免费开源的可视化数据库工具,它直接把 PostgreSQL、MySQL 这些现成数据库包装成类 Excel 的界面,不搬数据、不改结构,加一层能看、能改、能协作的壳。下文基于仓库源码和文档,讲清楚它能做什么、怎么起、边界在哪。
项目全景
NocoDB 的定位是"开源 Airtable 替代",但它和 Airtable 的本质区别在于:Airtable 里数据存在人家的云里,NocoDB 只是界面,数据始终留在你自己的 SQLite、PostgreSQL 或 MySQL 里。它不替你管数据库,而是替你省掉为每张表写前端、写查询、写权限的那段时间。
关注它的人:有现成数据库但不想写页面的后端/运维,想脱离 SaaS 订阅的中小团队,以及需要把数据攥在自己手里的个人开发者。
| 项目信息 | 内容 |
|---|---|
| 项目名 | NocoDB(当前版本 0.301.3) |
| License | Sustainable Use License(免费内部使用/非商用分发) |
| 核心技术栈 | NestJS + TypeScript 后端,Nuxt 3 + Vue 3 前端 |
| 部署方式与规模 | Docker 单容器起步;单节点支撑小团队,PG 后端支撑多人协作 |
核心能力拆解
表格界面:替你省掉每张表的前端开发
任何接进来的表,直接以网格形式打开:点单元格编辑、行内筛选、按列排序、拖拽调列宽,操作模型和 Excel 一致,但每次编辑都变成一条落到真实数据库的 SQL。
- 网格视图带侧边栏,表结构、视图、记录数一眼可见
- 字段类型在界面上直接切换(文本、数字、单选、日期、关联记录等),不用手写 DDL
- 支持 CSV 导入导出,旧表格数据迁移不用写脚本
- 公式、Lookup(跨表取字段)、Rollup(跨表聚合)这类派生列在界面里配置即可
网格视图 + 侧边栏:结构、视图、数据三层同时可见
多视图切换:替你省掉重复建模
同一张表可以挂多种视图,视图之间共享同一份数据,只是呈现方式不同。项目里packages/nc-gui/components/smartsheet/下有grid/、form/、calendar/等完整视图组件,后端有对应的 calendars、forms、galleries 控制器。
- 看板视图:按某个单选字段分列,拖卡片即改状态,项目管理场景直接用
- 日历视图:按日期字段铺排,排期、回访安排不需要再开第二个工具
- 表单视图:把表变成收集页,填表人不需要登录、不需要看到原始数据库
- 图库视图:按图片字段展示,素材类数据少点一次预览
看板视图:把单选字段当泳道,拖拽卡片即更新数据
团队协作:替你省掉"最新版在哪"的扯皮
多人同时在线编辑同一张表,改动实时同步。权限不做成单一开关,而是分层:组织/项目/表/列多个层级都能设角色,配合行级过滤可以让人只看自己负责的行。
- 邀请成员时按角色分配,而不是每人一套账号密码逻辑
- 表单视图可对外分享,收集端和编辑端隔离
- 变更留痕,行级评论让讨论贴在具体数据旁边
日历视图:时间字段直接铺成排期表
集成能力:替你省掉胶水代码
表数据变化可以触发 Webhook 推给外部系统;反过来,任何系统拿着 API Token 就能读写数据。仓库里 webhook 相关前端组件 和update-webhook-handler等后端模块说明这是内置能力,不是插件。扩展机制还允许用 JavaScript 给表格挂自定义行为。
扩展入口:用 JS 脚本给表格挂自定义逻辑
动手跑起来
假设一台干净的 Linux/Mac,Docker 已装好。
1. 拉镜像并启动 SQLite 版本
docker run -d --name noco \ -v "$(pwd)"/nocodb:/usr/app/data/ \ -p 8080:8080 \ nocodb/nocodb:latest数据文件落在本地./nocodb目录,备份就是拷这个目录。首次启动会拉镜像,稍等几十秒。
2. 打开管理界面
浏览器访问http://localhost:8080。此时应该出现登录/初始化页。
3. 注册管理员账号
用邮箱+密码建第一个账号,自动成为组织 Owner。
4. 接第一个数据库
新建 Base(数据库连接)。本地玩就选内置 SQLite,零配置;接现有库则填连接串,例如 PostgreSQL 用环境变量NC_DB=pg://host:5432?u=...&p=...&d=...指定(README 里有现成写法)。此时界面里应出现你库里现有的表。
5. 导入数据并开始编辑
挑一张表打开网格视图,导入一份 CSV 或直接点格子改数。改完刷新,数据确实落在你的库里——这是它和纯 SaaS 表的关键区别。
生产部署建议换成 PostgreSQL 后端,仓库docker-compose/examples/managed-postgres/下有一份现成 compose 可直接参考,再加 Redis 和反向代理即可对外服务。
真实工作流
独立开发者:用 NocoDB 管博客投稿队列
背景:投稿邮件、草稿、排期散在邮箱和备忘录里。
- 建一张"投稿"表,字段:标题、作者、状态、目标发布日期
- 状态列做成单选(待审/草稿/已排期/已发布),切换看板视图
- 新投稿直接开一行,排期挪到日历视图看
- 每周清一次看板,拖掉过期项
收益:投稿从"邮件堆"变成可排序、可筛选的队列,自己维护成本几乎为零。
两人小团队:客户跟进表替代共享 Excel
背景:你和销售各维护一份客户表,每周合并一次总出错。
- 建"客户"表,接进你们的 PostgreSQL,替换掉那张共享表
- 客户状态、负责人做成列级权限,销售只看自己名下的行
- 建一张表单视图丢给市场,活动收集来的线索直接进表
- 跟进记录挂成关联表,在看板里按状态推进
收益:合并环节消失,谁改的、改了什么有迹可循,新人不用问"最新版在哪"。
跨系统:让旧 BI 报表跟上数据
背景:数据进了 NocoDB,但下游的报表脚本还在读旧库。
- 数据源不动,旧库照旧,NocoDB 只是加了一层操作界面
- 给报表脚本发一个只读的 API Token
- 表结构变更时,在界面里调整后脚本端拉到的字段同步变化
到这里,个人到小团队、从建表到对接外部系统的链路就闭环了。
进阶与集成
自动化与扩展
Webhook 挂在表级别,增/改/删事件可配置触发,推到你自己的端点。程序化访问走 REST API,Token 在界面里生成:
curl -s -H "xc-token: <你的TOKEN>" \ http://localhost:8080/api/v2/meta拿到 Token 后,任意语言都能对api/v2/下的表数据做增删改查。扩展脚本用 JavaScript 写,能监听事件并回写数据,适合做库存校验、自动打标这类规则。
安全与运维边界
- 权限分组织、项目、表、列多层级,敏感字段用列级隐藏而不是靠自觉
- 生产环境务必设置
NC_AUTH_JWT_SECRET,否则会话密钥不安全 - 备份策略跟后端走:SQLite 拷数据目录即可,PG 用 pg_dump,NocoDB 自身元数据在
/usr/app/data - 附件可开启
NC_SECURE_ATTACHMENTS强制走鉴权下载 - 性能上限取决于后端数据库:单表几十万行日常没问题,百万级以上建议 PG + 合理索引,并避免在视图里堆太多跨表聚合
决策参考
它适合谁:有数据库但缺前端界面的人,想把 SaaS 表格数据收回到自托管环境的小团队,以及接受"界面工具"定位、愿意自己做运维的人。不适合谁:想开箱即用、完全不想碰服务器的人(Airtable/Google Sheets 更省事);以及把它当完整 BI 用的场景,它没有内置图表分析栈,聚合列之外要看数还得接别的。
和最直接的竞品 Airtable 比,核心差异一句话:数据主权在你手里,代价是自己维护一个容器。
数据放在哪、怎么保证安全:数据永远在你的 SQLite/PG/MySQL 里,NocoDB 只是读写层;安全边界是你的网络配置 + 权限分层 + 备份策略三件事,传输层记得挂 HTTPS 反向代理。
上手时间预期:个人用 Docker 起 SQLite 版,半小时内能导入第一份数据;小团队接 PG、配好权限和反向代理,预计 1-2 天;要稳定对外服务并纳入备份流程,一周内完成是合理预期。
收尾
NocoDB 把"给每张表配一个界面"这件重复劳动收走了,数据留在你的库里,界面免费拿走。下一步:拿仓库里docker-compose/examples/managed-postgres/那份 compose 起一个环境,把你最常被索要数据的那张表接进去试一周。
【免费下载链接】nocodb🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考