NocoDB 自托管部署完全指南:Docker(SQLite/PostgreSQL)、Auto-Upstall 一键安装与二进制快速验证
本文基于 NocoDB 仓库中的官方印地语版 README(hindi.md)展开,系统讲解 NocoDB 的三种自托管部署路径——Docker + SQLite、Docker + PostgreSQL、Auto-Upstall 自动化安装脚本,并逐条解析 NC_DB、NC_AUTH_JWT_SECRET 等关键环境变量背后的源码实现。读完本文,你可以独立完成本地快速体验到生产级(含自动 SSL)的 NocoDB 部署,并理解每个配置项在 NcConfig 配置解析层中的真实作用。
一、文档定位:这是一份什么文档
hindi.md 是 NocoDB 项目 README 的印地语本地化版本(与 languages/README.md 索引页联动,提供 中文、日语 等多语种入口)。它继承了主 README 的全部核心内容,可概括为五个板块:
| 板块 | 核心内容 |
|---|---|
| 安装 | Docker + SQLite、Docker + PostgreSQL、Auto-Upstall 一键脚本、多平台二进制 |
| 访问入口 | 本地部署后访问 http://localhost:8080/dashboard |
| 功能特性 | 电子表格界面、视图/共享/权限、App Store 集成、REST API 与 SDK |
| 项目愿景 | 开源 Airtable 替代品的定位与使命 |
| 许可协议 | AGPLv3(见 LICENSE.md) |
下文中文译文均基于该文档原文,所有命令均可直接复制执行。
二、安装方式一:Docker + SQLite(最简本地体验)
文档给出的最小部署命令只有一条:
docker run -d \
--name noco \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
nocodb/nocodb:latest
逐参数解读:
-v "$(pwd)"/nocodb:/usr/app/data/:将当前目录下的nocodb/挂载为容器内元数据库(meta DB)存储目录。不指定NC_DB时,NocoDB 默认使用 SQLite 存储元数据。这一点可以从源码确认:NcConfig 类初始化时meta.db的默认值即client: DriverClient.SQLITE、filename: 'noco.db',且metaDbCreateIfNotExist()会在启动时自动创建数据库文件(见 NcConfig.ts 第 155-180 行)。-p 8080:8080:默认服务端口为 8080,与源码中ncConfig.port = +(port ?? 8080)的默认值一致(NcConfig.ts 第 75 行)。- 容器内的
getToolDir()(数据目录解析逻辑)优先读取NC_APP_DATA_DIR,其次NC_TOOL_DIR,最后回退到当前工作目录(见 helpers.ts 第 30-34 行),官方镜像将二者配置为/usr/app/data/,因此挂载点即数据落盘位置。
启动后浏览器访问 http://localhost:8080/dashboard 即可注册账号、创建 Base(电子表格)。
三、安装方式二:Docker + PostgreSQL(生产推荐)
文档给出了连接外部 PostgreSQL 的完整命令:
docker run -d \
--name noco \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
-e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
3.1 NC_DB:元数据库连接串
NC_DB 决定 NocoDB 的元数据(工作区、Base、表结构、权限等)存储在哪个数据库。其解析链路为:
- NcConfig.createByEnv() 读取
process.env.NC_DB; - 传入
metaUrlToDbConfig()解析:协议部分(pg:、mysql:、sqlite3:等)映射为驱动客户端,?u=...&p=...&d=...分别对应 user、password、database(见 helpers.ts 第 224-340 行)。
因此 pg://host.docker.internal:5432?u=root&p=password&d=d1 的含义是:通过 host.docker.internal(Docker 中指向宿主机)访问 5432 端口的 PostgreSQL,使用账号 root、密码 password、数据库 d1。注意示例中的凭证仅用于演示,生产环境务必替换为强口令,或改用 NC_DB_JSON / NC_DB_JSON_FILE 方式从 JSON 配置文件读取连接信息(NcConfig.ts 第 140-145 行 同时支持 NC_DB、NC_DB_JSON、NC_DB_JSON_FILE 三种来源)。
启动时 NocoDB 还会自动创建不存在的元数据库(createDatabaseIfNotExists,NcConfig.ts 第 155 行起),降低了手工建库的门槛。
3.2 NC_AUTH_JWT_SECRET:认证密钥
该环境变量被读入 NcConfig.auth.jwt.secret(NcConfig.ts 第 146 行),用于签发/校验用户登录后的 JWT 令牌。除登录会话外,它还被用作元数据加密的密钥来源之一——例如版本升级器中的 0225002_ncDatasourceDecrypt.ts 在解密数据源凭据时直接读取 process.env.NC_AUTH_JWT_SECRET(见 version-upgrader/upgraders/0225002_ncDatasourceDecrypt.ts 第 63 行)。因此更换该密钥会导致既有会话与加密数据不可恢复,一旦生成应妥善保管且不要随意轮换。
四、Auto-Upstall:一条命令的生产级自动安装
文档中写道:“Auto-Upstall 是一个单一命令,用于在生产服务器上部署 NocoDB,它会在背后为你自动生成 docker-compose。”命令为:
bash <(curl -sSL http://install.nocodb.com/noco.sh) <(mktemp)
该命令拉取的脚本正是仓库内的 docker-compose/1_Auto_Upstall/noco.sh。结合脚本源码,可以把它承诺的四件事落到具体实现上:
- 自动检查前置依赖:
check_prereqs()会依次检测 Docker、Docker Compose V2 插件与 curl 是否可用,缺失时给出安装指引并要求重跑(noco.sh 第 116-138 行);脚本开头还设置了umask 077,保证生成的db.json、docker.env等含凭据文件从创建之初就仅属主可读写。 - 自动生成 PostgreSQL + Redis + Traefik 全家桶:脚本按选择生成 compose 文件。仓库中的 docker-compose/1_Auto_Upstall/docker-compose.yml 展示了这套栈的完整形态:
nocodb主服务(含NC_DB、NC_REDIS_URL、NC_SITE_URL、NC_DISABLE_MUX环境变量与健康检查)、独立的worker服务(NC_WORKER_CONTAINER: 'true',承担异步任务而不暴露端口)、postgres:17.10与redis:7数据服务,全部通过depends_on的service_healthy条件保证启动顺序。生产路径下 Traefik 作为反向代理处理 80/443 端口。 - 重跑即升级:脚本以“幂等重入”为设计目标——再次执行时检测到已有的
docker-compose.yml会提示是否覆盖(check_existing(),noco.sh 第 157-166 行),拉取nocodb/nocodb:latest镜像即可平滑升级。 - 自动 SSL 申请与续期:脚本根据输入自动分派三种模式(
determine_mode(),noco.sh 第 181-192 行):留空或localhost走本地模式(8080 端口、无 SSL);输入合法域名走生产模式(Traefik + Let's Encrypt);输入公网 IP 则进入production-ip模式并明确提示“IP 无法签发 SSL 证书”。文档也强调:安装过程中需要以域名或子域名作为输入。
除上述能力外,脚本还支持选择内建(bundled)或外部(external)PostgreSQL/Redis(PG_MODE、REDIS_MODE 状态变量,noco.sh 第 27-46 行),并对 SELinux Enforcing 环境自动为 bind mount 追加 :Z 标签(check_selinux(),noco.sh 第 140-145 行)。仓库还提供了针对该安装流程的 Bats 测试集(docker-compose/1_Auto_Upstall/tests/)与更多 compose 示例,如 外部 PostgreSQL + Redis 示例、Quickstart 演示示例,可作为手动编写 compose 文件的参考蓝本。
五、其他安装方式:多平台二进制快速验证
文档明确提示“二进制仅用于本地快速测试”,并给出各平台命令(完整继承自原文档):
| 安装方式 | 安装命令 |
|---|---|
| MacOS arm64(二进制) | curl http://get.nocodb.com/macos-arm64 -o nocodb -L && chmod +x nocodb && ./nocodb |
| MacOS x64(二进制) | curl http://get.nocodb.com/macos-x64 -o nocodb -L && chmod +x nocodb && ./nocodb |
| Linux arm64(二进制) | curl http://get.nocodb.com/linux-arm64 -o nocodb -L && chmod +x nocodb && ./nocodb |
| Linux x64(二进制) | curl http://get.nocodb.com/linux-x64 -o nocodb -L && chmod +x nocodb && ./nocodb |
| Windows arm64(二进制) | iwr http://get.nocodb.com/win-arm64.exe -OutFile Noco-win-arm64.exe && .\Noco-win-arm64.exe |
| Windows x64(二进制) | iwr http://get.nocodb.com/win-x64.exe -OutFile Noco-win-x64.exe && .\Noco-win-x64.exe |
本地运行后同样访问 http://localhost:8080/dashboard。二进制方式不启动任何容器,SQLite 元数据库直接落在当前工作目录(由 getToolDir() 回退到 process.cwd() 决定),适合数分钟级的功能体验;需要持久化与多用户协作时应切换为 Docker 方式。
六、部署后能做什么:核心功能与程序化接入
文档“功能”一节描述了部署完成后的能力面,结合仓库结构可以进一步印证:
- 富电子表格界面:表/列/行的增删改查;列的排序、过滤、分组、隐藏;Grid(默认)、Gallery、Form、Kanban、Calendar 多种视图;Base/视图共享(公开或密码保护);ID、Link、Lookup、Rollup、SingleLineText、Attachment、Currency、Formula、User 等多种单元格类型;基于角色的细粒度访问控制。仓库中对应的实现规模可观,例如视图与权限相关的 composables(
useViewFilters.ts、useViewSorts.ts、useViewGroupBy.ts等)以及 smartsheet 组件集。 - App Store 工作流自动化集成:分为三类——聊天(Slack、Discord、Mattermost 等)、邮件(AWS SES、SMTP、Mailersend 等)、存储(AWS S3、GCS、MinIO 等)。文档同时提示可查看官方文档的 App Store 章节获取详情。
- 程序化访问:提供 REST APIs 与 NocoDB SDK 两种方式,请求通过 JWT(或社交登录)令牌签名认证。仓库内 nocodb-sdk 与 nocodb-sdk-v2 即为官方 SDK 源码,REST 接口清单可参考根目录的 APIs.json。
七、关键环境变量速查
综合文档命令与源码,自托管部署时最常用的环境变量如下(默认值均可在 NcConfig.createByEnv() 中核对):
| 变量 | 作用 | 默认值/说明 |
|---|---|---|
NC_DB |
元数据库连接串(pg://、mysql://、sqlite3:// 等) |
缺省时回退为本地 SQLite noco.db |
NC_DB_JSON / NC_DB_JSON_FILE |
以 JSON 形式提供元数据库配置 | 优先级见 createByEnv() 入参 |
NC_AUTH_JWT_SECRET |
JWT 签名密钥,兼作数据源凭据加解密密钥 | 无默认,生产部署必须显式设置 |
NC_PORT |
服务监听端口 | 8080 |
NC_SITE_URL |
实例对外访问地址,用于邮件/分享链接等 | 未设置时为空 |
NC_WORKER_CONTAINER |
将当前容器标记为独立 worker(处理异步任务、不暴露端口) | compose 生产栈中为 true |
NC_REDIS_URL |
Redis 连接地址,用于缓存与任务队列 | 未设置时使用内存缓存 |
NC_DASHBOARD_URL |
仪表盘路由前缀 | / |
NC_DISABLE_MUX |
禁用内嵌 mux 服务 | compose 栈中为 true |
八、许可与适用前提
该印地语 README 与全仓库一致声明:项目采用 AGPLv3 许可发布。适用前提方面需要注意三点:其一,Docker 方式要求宿主机已安装 Docker(Auto-Upstall 脚本会自检并指引安装);其二,NC_DB 指向外部 PostgreSQL 时该数据库需可由容器网络到达(示例使用 host.docker.internal 依赖 Docker Desktop 或 Docker 20.10+ 的该特性);其三,生产模式(自动 SSL)要求 80/443 端口空闲且输入为合法域名,输入公网 IP 时脚本会明确告知无法签发证书。
总结
这篇印地语版 README 虽然篇幅不长,但完整覆盖了 NocoDB 自托管的三条路径:SQLite 单容器快速起步、PostgreSQL 外部库生产部署、Auto-Upstall 一键全栈安装(Docker/Compose + PostgreSQL + Redis + Traefik + Let's Encrypt)。结合仓库源码可以看到,所有命令背后的行为——NC_DB 的 URL 解析(helpers.ts)、自动建库(NcConfig.ts)、安装脚本的三模式判定与幂等重入(noco.sh)——都有清晰的实现支撑。按本文顺序操作,你可以从一条 docker run 命令的本地体验,平滑过渡到带自动 SSL 的生产级部署。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00