
NocoDB 自托管部署实战Docker、PostgreSQL 与 Auto-upstall 一键生产环境搭建【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb本文基于 NocoDB 官方仓库中的土耳其语 READMEmarkdown/readme/languages/turkish.md整理完整覆盖 NocoDB 的三种主流自托管安装方式Docker SQLite、Docker PostgreSQL以及面向生产环境的 Auto-upstall 一键安装脚本。读完本篇后你可以独立完成从本地快速验证到带 HTTPS、Traefik 网关的生产部署并结合仓库内源码理解NC_DB、NC_AUTH_JWT_SECRET等关键环境变量在 NocoDB 配置体系中的实际作用。一、NocoDB 是什么定位与核心价值NocoDB 定位为开源的 Airtable 替代品是快速搭建在线数据库的最便捷方式之一。其设计出发点在官方 README 中阐述得比较清楚大量互联网创业团队要么依赖电子表格、要么直接操作数据库表格虽然易用每天被十亿以上用户使用但在处理能力上远不如数据库而用 SaaS 表格方案替代数据库又会带来访问控制不足、供应商锁定、数据被圈养、价格突变等问题NocoDB 的使命是面向全球互联网创业团队提供功能最强大的开源无代码no-code数据库界面。功能层面官方 README 将其核心能力归纳为三大类这里完整继承原文档的描述1. 富电子表格界面Zengin E-Tablo Arayüzü基础 CRUD表、列、行的创建、读取、更新与删除数据操作排序、过滤、分组、列的隐藏/显示多视图类型网格默认、画廊、表单、看板Kanban与日历视图视图权限类型协作视图与锁定视图分享选项公开或私有密码保护丰富的数据类型ID、Link、Lookup、Rollup、单行文本、文件附件、货币、公式、用户等基于角色的访问控制RBAC多层级细粒度权限控制。2. 应用商店工作流自动化集成提供三大类集成聊天Slack、Discord、Mattermost 等邮件AWS SES、SMTP、MailerSend 等存储AWS S3、Google Cloud Storage、Minio 等。3. 程序化访问用户可通过以下途径以编程方式触发操作请求使用 tokenJWT 或社交登录认证授权REST APINocoDB SDK仓库中对应 packages/nocodb-sdk 与 packages/nocodb-sdk-v2 两个包。此外该实例采用 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文件夹挂载为容器数据目录元数据库默认 SQLite 文件noco.db会持久化在宿主机上-p 8080:8080暴露 8080 端口与容器内默认监听端口一致nocodb/nocodb:latest官方镜像从源码可以印证 SQLite 是默认元数据库NcConfig 中的meta.db初始值即为{ client: DriverClient.SQLITE, connection: { filename: noco.db } }且该文件路径会拼接NC_APP_DATA_DIR/NC_TOOL_DIR环境变量所指目录见 helpers.ts 的getToolDir()。因此将宿主机目录挂载到/usr/app/data即可让 SQLite 文件落在卷内实现数据持久化。本地运行时通过http://localhost:8080/dashboard访问管理面板。三、安装方式二Docker PostgreSQL推荐用于多用户/生产场景将元数据库指向外部 PostgreSQL需要额外传入两个环境变量docker run -d \ --name noco \ -v $(pwd)/nocodb:/usr/app/data/ \ -p 8080:8080 \ -e NC_DBpg://host.docker.internal:5432?urootppassworddd1 \ -e NC_AUTH_JWT_SECRET569a1821-0a93-45e8-87ab-eb857f20a010 \ nocodb/nocodb:latest两个关键环境变量的源码级解读3.1NC_DB元数据库连接串NC_DB采用 NocoDB 自定义的 URL 语法协议://host:port?u用户p密码d数据库。解析逻辑位于 packages/nocodb/src/utils/nc-config/helpers.tsjdbcToXcConfig()会借助parse-database-url解析连接串并依据 driver 映射到对应的客户端如pg与默认端口NcConfig.create()支持三种元数据库配置来源优先级为NC_DBURL→NC_DB_JSON内联 JSON→NC_DB_JSON_FILEJSON 文件见 NcConfig.ts对pg客户端若连接串未显式指定 SSL 配置且主机不在白名单中源码会自动补上ssl: truehelpers.ts。生产环境对接托管数据库时建议显式指定 SSL 参数。host.docker.internal是 Docker 官方提供的指向宿主机的 DNS 名称适用于宿主机上直接运行 PostgreSQL 的场景。3.2NC_AUTH_JWT_SECRETJWT 签名密钥该变量用于签发/校验会话 token。在 NcConfig.ts 中被读入ncConfig.auth.jwt.secret。此外源码中还有一处强依赖元数据库中的敏感字段如数据源凭据使用该密钥进行加解密见 version-upgrader/upgraders/0225002_ncDatasourceDecrypt.ts。因此该密钥必须固定不变——一旦更换已存储的加密数据将无法还原会话也会全部失效。示例中的 UUID 仅用于演示实际部署请自行生成强随机值。四、安装方式三Auto-upstall生产环境一键安装官方 README 对 Auto-upstall 的原文定位是一条为生产环境准备 NocoDB 的命令会在后台自动为你生成 docker-compose 文件。其执行命令为bash (curl -sSL http://install.nocodb.com/noco.sh) (mktemp)README 列出的四项能力自动安装 Docker、Docker Compose 等全部前置依赖通过 Docker Compose 自动部署 NocoDB PostgreSQL Redis Traefik 网关重复执行命令即可自动升级到最新版本自动安装并续期 SSL 证书安装过程中需输入域名或子域名。4.1 脚本真实位置与本地运行方式该脚本就存放在仓库内docker-compose/1_Auto_Upstall/noco.sh。如果已克隆仓库也可以直接通过薄包装脚本运行cd nocodb/docker-compose ./setup.shdocker-compose/setup.sh 仅执行exec bash .../1_Auto_Upstall/noco.sh $两个入口完全等价。4.2 安装模式判定逻辑从 noco.sh 的determine_mode()源码看脚本按输入域名自动选择三种模式之一模式触发条件结果local域名为空或localhost端口 8080无 SSLproduction合法域名正则校验Traefik Lets Encrypt 自动签发 HTTPSproduction-ip输入的是 IP端口 80 直连明文 HTTP无 SSL前置检查包括Docker 与 Compose V2 插件、curl 是否可用check_prereqs()SELinux Enforcing 环境会自动为 bind mount 追加:Z后缀check_selinux()生产模式会检查 80/443 端口占用check_ports()。4.3 交互式问答与关键参数安装向导依次询问源码 noco.sh域名默认自动探测公网 IP留空则进入本地模式Postgres选择内置Bundled脚本自动生成 24 位强随机密码或已有实例需输入 host/port/库名/用户/密码并选择 SSL 模式托管数据库公共 CA、自定义 CA 证书文件、或无 SSLRedis内置或已有实例提供redis://host:6379形式 URLLets Encrypt 邮箱仅生产模式必需。4.4 生成的文件清单执行完成后当前目录下生成./nocodb/部署目录./nocodb/ ├── docker-compose.yml # nocodb worker (内置 db/redis) (可选 traefik) ├── docker.env # NC_DB_JSON_FILE、NC_REDIS_URL、NC_SECURE_ATTACHMENTS、NC_SITE_URL 等 ├── nocodb/db.json # knex 格式数据库连接配置支持内联自定义 CA ├── update.sh # docker compose pull up -d image prune └── .gitignore # 排除密钥与运行时数据几个值得注意的实现细节均可在 noco.sh 中逐行核对凭据文件安全脚本以umask 077创建文件并将docker.env与nocodb/db.json收权为600tighten_perms()防止凭据泄露元数据接入方式生成的docker.env使用NC_DB_JSON_FILE/usr/app/data/db.json而非NC_DBURL——这对应第三节提到的NcConfig三种配置来源之一db.json会被 bind-mount 到容器内与数据卷分离实现配置与数据解耦见 Auto-Upstall README服务编排nocodb 主服务带GET /api/v1/health健康检查30s 间隔、30s 启动宽限期worker 服务以NC_WORKER_CONTAINERtrue启动并依赖主服务健康后再启动SSL生产模式下生成 Traefik v3.6 服务配置 Lets Encrypt HTTP-01 挑战、80→443 强制跳转。4.5 非交互模式与常用参数CI/自动化场景可使用标志位跳过所有提问缺失必填项时会快速失败而不是挂起在提示符上bash (curl -sSL http://install.nocodb.com/noco.sh) \ --non-interactive \ --domainnocodb.example.com \ --acme-emailopsexample.com \ --pgbundled --redisbundled常用标志位源自 noco.sh 的--help输出标志说明--quick内置 Postgres Redis 的本地快速安装端口 8080可与--domain组合获得生产 HTTPS--domainHOST指定域名或 IP隐含启用非交互模式--acme-emailEMAILLets Encrypt 邮箱生产模式必填--image-tagTAG固定nocodb/nocodb镜像 tag默认latest--pgbundled\|external内置/外部 Postgres--pg-host / --pg-port / --pg-database / --pg-user / --pg-password外部 Postgres 连接参数--pg-sslmanaged\|none\|/path/to/ca.pem外部 Postgres SSL 模式--redisbundled\|external、--redis-urlURLRedis 配置生产环境建议通过--image-tag固定版本避免latest漂移。4.6 仓库内的等价编排示例仓库还提供了现成的 compose 文件可对照参考docker-compose/1_Auto_Upstall/docker-compose.yml本地快速评估栈包含nocodb、worker、dbpostgres:17.10、redisredis:7四个服务全部带健康检查docker compose up -d后访问http://localhost:8080docker-compose/examples/external-postgres-and-redis外部 Postgres Redis 示例docker-compose/examples/managed-postgres、docker-compose/examples/postgres-private-ca托管数据库及私有 CA 证书示例docker-compose/examples/traefik-custom-sslTraefik 自定义 SSL 证书示例。五、其他安装方式平台二进制仅限本地快速测试官方 README 明确提示二进制文件仅用于本地环境的快速测试目的。完整命令表如下安装方式安装命令MacOS arm64二进制curl http://get.nocodb.com/macos-arm64 -o nocodb -L chmod x nocodb ./nocodbMacOS x64二进制curl http://get.nocodb.com/macos-x64 -o nocodb -L chmod x nocodb ./nocodbLinux arm64二进制curl http://get.nocodb.com/linux-arm64 -o nocodb -L chmod x nocodb ./nocodbLinux x64二进制curl http://get.nocodb.com/linux-x64 -o nocodb -L chmod x nocodb ./nocodbWindows arm64二进制iwr http://get.nocodb.com/win-arm64.exe -OutFile Noco-win-arm64.exe .\Noco-win-arm64.exeWindows x64二进制iwr http://get.nocodb.com/win-x64.exe -OutFile Noco-win-x64.exe .\Noco-win-x64.exe无论哪种方式本地启动后均通过http://localhost:8080/dashboard访问。六、部署后的日常运维Auto-upstall 生成的部署目录同时给出了管理命令见脚本display_completion()输出cd nocodb docker compose logs -f nocodb # 跟踪启动日志 docker compose ps # 查看容器状态 docker compose down # 停止数据保留在命名卷中升级则执行生成的./update.sh等价于docker compose pull docker compose up -d docker image prune -f。数据存放在 Docker 命名卷nocodb_data、postgres_data、redis_data中down不会删除数据密钥类文件docker.env、nocodb/db.json已被.gitignore排除切勿提交到版本库。七、小结NocoDB 的自托管路径可按环境复杂度三档选择验证/演示单容器 SQLite一条docker run团队使用外部 PostgreSQL 固定NC_AUTH_JWT_SECRET的 Docker 部署元数据持久化且会话密钥可控生产环境Auto-upstall 一键生成带 Traefik、Lets Encrypt、worker 拆分与健康检查依赖的完整 compose 栈重复运行即可升级。理解NC_DB/NC_DB_JSON_FILE/NC_AUTH_JWT_SECRET这三个变量在 NcConfig 中的落地方式后你就能对任意部署方案做二次定制并安全地管理密钥与数据卷。更多安装细节可参考仓库内 docker-compose/1_Auto_Upstall/README.md 与 docker-compose/examples 目录。【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考