NocoDB 自部署教程:一条命令部署 + 4 个环境变量搞定生产环境
2026/9/13 2:27:54 网站建设 项目流程

NocoDB 自部署教程:一条命令部署 + 4 个环境变量搞定生产环境

【免费下载链接】nocodb🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb

NocoDB 是一款免费、可自托管的 Airtable 替代方案:它不替换你的数据库,而是把 MySQL、PostgreSQL、SQLite 里现成的表,直接变成可协作编辑的在线表格——带网格、看板、日历、表单四种视图,数据全部留在你自己的服务器。这篇文章就是 NocoDB 自部署的完整流程:从选后端库,到跑起容器,再到上线前的环境变量配置。

先定方案:你的数据放在哪种库上

装之前先花 10 秒做个决定,这决定了后面所有配置:

  • 一个人用 / 先试试:什么都不用装,NocoDB 自带 SQLite,元数据就存在数据目录里,零配置。
  • 两人以上长期用:换成 PostgreSQL。SQLite 是单文件存储,并发写入会互相阻塞,多人同时编辑时体验会明显变差;PostgreSQL 则是团队场景的标准答案。
  • 数据已经在 MySQL / PG 里:直接连过去就行,NocoDB 只存元数据(表结构、视图、用户权限),不动你的业务数据。

这个决定对应一个变量NC_DB:不设就是 SQLite,设了就是外部库。

一条命令部署 NocoDB

服务器上只需一条docker run

docker run -d --name noco \ -v "$(pwd)"/nocodb:/usr/app/data/ \ -p 8080:8080 \ nocodb/nocodb:latest

两个关键参数,漏掉任何一个都会踩坑:

  • -v "$(pwd)"/nocodb:/usr/app/data/:把宿主机上的nocodb/目录挂进容器。NocoDB 的 SQLite 元数据和所有附件都存在/usr/app/data,不挂载的话容器一重建,表和文件全丢。
  • -p 8080:8080:左边是宿主机端口,右边固定是容器端口。宿主机 8080 被占用时只改左边,比如-p 9090:8080,然后用http://localhost:9090访问。

启动后浏览器打开http://localhost:8080/dashboard,第一个注册的账号自动成为管理员,实例就算跑起来了。

接入现有数据,并把生产必需的变量加上

如果决定接外部数据库,给上面的命令补两个环境变量。注意容器内访问宿主机服务要用host.docker.internal

-e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \ -e NC_AUTH_JWT_SECRET="换成你自己生成的固定随机字符串"
  • NC_DB:连接串,PostgreSQL 用pg://开头,MySQL 用mysql://开头,后面是主机、端口、用户、密码、库名。
  • NC_AUTH_JWT_SECRET:登录态的签名密钥。必须自己设一个固定值。不设的话,每次容器重启密钥都会重算一遍,所有人就得重新登录一次,团队场景下这会变成灾难。

如果不想手写命令,仓库里带了现成的 compose 文件:docker-compose/examples/quickstart-demo/ 里是 NocoDB + PostgreSQL + Redis + worker 四个服务的全套配置,改一下密码就能docker compose up;docker-compose/examples/external-postgres-and-redis/ 则演示了怎么把 Postgres 和 Redis 指向已有的外部实例。

玩法演示:一张任务表,四种视图切着看

在 dashboard 里新建一个 Project,下面加一张 Base,命名为“任务”,建四个字段:

字段类型说明
任务名SingleLineText必填
状态SingleSelect选项:待办 / 进行中 / 完成
负责人User从工作区成员里直接选
截止日期Date给日历视图用

类型不止这些,Number、Formula、Rollup、Attachment 等完整清单见 视图组件目录。

然后按角色切视图:

  • Grid(默认):标准表格,筛选、排序、分组都有,适合快速录入和核对。
  • Kanban:把“状态”设为分组字段,每行变成一张卡片。把卡片从“待办”列拖到“进行中”列,等于改了一次状态字段——这就是看板协作的全部逻辑。
  • Calendar:行按“截止日期”落到日历格子里,一眼看出哪天堆了活。

  • Form:给表加一个 Form 视图,把链接发出去。没有账号的人也能填表提交,但看不到整张表的其它行——收集需求、报名、报销登记这类场景基本都用它。

分享入口在右上角的 Share:Base 或单个 View 都可以单独设公开或带密码的私有访问,粒度比“整站公开”灵活得多。

上线前必动的 4 个环境变量

单机自用可以一个都不设。但只要有对外访问或多人使用,下面四个变量就该过一遍:

什么时候需要变量怎么设
元数据从 SQLite 换到 PostgreSQL / MySQLNC_DB连接串,pg://mysql://开头
多人访问或多容器部署NC_AUTH_JWT_SECRET自己生成的固定随机字符串,重启后登录态才不会失效
要发通知邮件、让分享链接可点NC_SITE_URL实例的公网访问地址,例如https://nocodb.example.com
多容器部署、需要实时同步NC_REDIS_URLredis://host:6379形式

其余NC_开头的变量(附件访问控制、遥测开关等)集中在 packages/nocodb/src/utils/envs.ts 读取,按需查官方文档的 self-hosting 章节即可。

部署选型速查:规模决定架构

你的规模后端库部署形态
个人测试,就你一个人SQLite(默认,零配置)单容器
小团队正式使用PostgreSQLcompose:NocoDB + PostgreSQL + Redis
已有 MySQL / PG 数据源直接连接,不自带库单容器 +NC_DB
高并发,要跑导入导出任务PostgreSQL + Redisapp 与 worker 分离,参考 Helm chart 模板

判断标准一句话:人少用 SQLite 图省事,人多上 PostgreSQL 保并发,量大把 worker 拆出去保主服务。

打不开 / 丢数据?排障四问

症状原因解决
容器重建后表和数据全没了没挂数据卷补上-v "$(pwd)"/nocodb:/usr/app/data/后重建,以后别再省这一步
页面打不开,浏览器一直转圈宿主机 8080 被其他服务占了改成-p 9090:8080之类的新端口再访问
每次容器重启后全员重新登录NC_AUTH_JWT_SECRET没固定设一个固定随机字符串并持久化
外部访问不到分享链接 / 邮件收不到NC_SITE_URL未配置,系统拼不出对外 URL设为实例的公网地址

接下来做这三件小事

  • 把手头一张 CSV / Excel 导入 Base,替掉原来传来传去的共享表格
  • 生成一个 API token 调一次 REST 端点,试试 NocoDB 的数据怎么被程序读取,SDK 源码在 packages/nocodb-sdk/
  • 把 Grid 切成 Kanban,拖三条任务卡,体验一下视图切换带来的协作差异

更多细节查官方文档的 self-hosting 与视图章节;部署中遇到报错,去项目的 Discord 社区直接问,维护者和老用户都在那里。

【免费下载链接】nocodb🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询