ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

NocoDB 自托管部署实战:从 Docker 快速启动到 NC_DB 元数据库配置原理

NocoDB 自托管部署实战:从 Docker 快速启动到 NC_DB 元数据库配置原理 NocoDB 自托管部署实战从 Docker 快速启动到 NC_DB 元数据库配置原理【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodbNocoDB 是一款开源的 Airtable 替代品核心能力是将任意 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 数据库转换成交互式的智能电子表格界面。本文基于 NocoDB 仓库中的葡萄牙语 READMEmarkdown/readme/languages/portuguese.md完整覆盖其快速启动、生产环境配置与核心功能并结合仓库源码深入解析NC_DB、NC_AUTH_JWT_SECRET等关键环境变量在启动链路中的实际作用帮助你在本地或服务器上一键部署出可自托管的 NocoDB 实例并理解其元数据库配置机制。快速启动DockerNocoDB 官方推荐的最低环境要求为 Node.js 14.18.0见 README 徽章标识。对于绝大多数用户最快上手方式是 Docker 单容器部署docker run -d \ --name noco \ -v $(pwd)/nocodb:/usr/app/data/ \ -p 8080:8080 \ nocodb/nocodb:latest两个要点需要注意原文档明确强调NocoDB 需要一个外部数据库作为业务数据入口生产部署方式见仓库根目录 README.md 的 Production Setup 章节如果没有配置外部数据库入口NocoDB 会回退到 SQLite 存储元数据。为了让这份 SQLite 文件持久化需要将数据目录挂载到容器内的/usr/app/data/——这正是上面命令中-v $(pwd)/nocodb:/usr/app/data/的作用。从源码可以确认这一回退行为在 NcConfig.ts 中NcConfig类的默认meta.db配置就是client: sqlite3、文件名noco.db且该文件路径会拼接进toolDir即NC_APP_DATA_DIR/NC_TOOL_DIR指向的目录容器内为/usr/app/data/。启动时metaDbCreateIfNotExist()还会自动创建不存在的 SQLite 元数据库文件。接入外部 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:latestNC_DB数据库连接 URL格式为驱动协议://主机:端口?u用户p密码d数据库NC_AUTH_JWT_SECRET用于签发/校验 JWT 的密钥。源码中该值被直接注入配置对象的auth.jwt.secret见 NcConfig.ts 的createByEnv()生产环境务必替换为随机强密钥仓库中的版本升级器也会用它参与元数据加密相关的处理示例中的host.docker.internal是 Docker 宿主机回环地址仅在 Docker DesktopLinux 需自行配置extra_hosts环境下可用。访问图形界面容器启动后访问以下地址进入控制台http://localhost:8080/dashboard端口8080是NC_PORT的默认值源码中ncConfig.port (port ?? 8080)。核心功能概览葡萄牙语 README 对 NocoDB 的功能做了系统归纳以下完整继承其要点丰富的电子表格界面基础操作对表Tables、列Columns、行Rows的增删改查字段操作排序、过滤、隐藏/显示列多种视图类型表格视图默认、画册Gallery、表单视图Form、看板Kanban权限视图协作编辑视图与只读锁定视图共享 Base / 视图支持公开共享也支持带密码保护的私有共享丰富的单元格类型变体LinkToAnotherRecord关联记录、Lookup引用、Rollup汇总、SingleLineText、Attachment附件、Currency、Formula 等基于角色的访问控制RBAC在多级别上提供细粒度的权限管控。自动化工作流的 App StoreNocoDB 在主分支上提供了多种集成的 App 分类可按需启用即时通讯Discord、Mattermost 等邮件AWS SES、SMTP、MailerSend 等对象存储AWS S3、Google Cloud Storage、Minio 等。仓库中同样能看到对应的集成扩展实现例如 plugins/google-auth.md、plugins/s3.md 描述了 S3/存储类插件的用法。程序化访问为了让用户以编程方式操作数据NocoDB 支持使用 tokenJWT 或社交网络认证对请求签名提供REST API仓库根目录的 APIs.json 即为完整 API 清单后端 Swagger 文档模板位于 swagger.jsonNocoDB SDK仓库内 packages/nocodb-sdk 提供了 TypeScript SDK 包packages/nocodb-sdk-v2 为新一代 SDK。生产环境配置元数据库选择SQLite 默认可切换任意关系型库默认情况下SQLite 被用作元数据metadata存储你可以通过环境变量NC_DB指定任意受支持的数据库来保存元数据。从源码 helpers.ts 的metaUrlToDbConfig()实现可以看出NC_DB的解析规则URL 协议部分决定驱动pg://、mysql://、mssql://、sqlite3://、oracledb://等查询参数u/user映射为userp/password映射为passwordd/database映射为database别名定义见 constants.ts 的knownQueryParams协议未显式带端口时按驱动取默认端口MySQL 3306、PostgreSQL 5432、SQL Server 1433、Oracle 1521见 constants.ts 的defaultClientPortMappingPostgreSQL 连接默认启用 SSL但localhost、127.0.0.1、host.docker.internal、172.17.0.1这几个地址会被avoidSSL列表豁免连接池上限可通过NC_DB_POOL_MAX调整默认 10defaultConnectionOptions。此外NC_DB之外的等价配置入口还有NC_DB_JSON内联 JSON与NC_DB_JSON_FILEJSON 文件路径在 NcConfig.ts 的createByEnv()中按NC_DB→NC_DB_JSON→NC_DB_JSON_FILE的优先级加载。完整的官方环境变量清单请参考 NocoDB 官方文档的 Environment Variables 页仓库内 docker-compose/examples/external-postgres-and-redis/docker.env 也给出了真实使用的变量样例。DockerPostgreSQL 生产示例docker run -d -p 8080:8080 \ -e NC_DBpg://host:port?uuserppasswordddatabase \ -e NC_AUTH_JWT_SECRET569a1821-0a93-45e8-87ab-eb857f20a010 \ nocodb/nocodb:latestDocker Compose仓库内置示例原文档指引通过克隆仓库进入docker-compose/pg目录执行docker compose up -d。当前仓库中docker-compose/目录下提供了更丰富的官方示例docker-compose/examples/README.md例如quickstart-demo一条命令拉起 NocoDB Worker PostgreSQL Redis 四件套# 在 docker-compose/examples/quickstart-demo 目录下 docker compose up -d其 docker-compose.yml 的关键配置值得注意services: nocodb: image: nocodb/nocodb:latest environment: NC_DB: pg://db:5432?unocodbpquickstart_demo_pw_change_mednocodb NC_REDIS_URL: redis://redis:6379 NC_SITE_URL: http://localhost:8080 NC_DISABLE_MUX: true depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - nocodb_data:/usr/app/data ports: - 8080:8080 healthcheck: test: [CMD-SHELL, wget -q --tries1 --spider http://localhost:8080/api/v1/health || exit 1] worker: image: nocodb/nocodb:latest environment: NC_DB: pg://db:5432?unocodbpquickstart_demo_pw_change_mednocodb NC_REDIS_URL: redis://redis:6379 NC_SITE_URL: http://localhost:8080 NC_WORKER_CONTAINER: true几个要点主容器与worker容器共用同一个镜像和同一份NC_DB通过NC_WORKER_CONTAINER: true区分角色——worker 不暴露端口、只消费 Redis 队列执行异步任务NC_SITE_URL用于回调/邮件中的站点地址反向代理部署时应设为对外域名主容器内置/api/v1/health健康检查供编排器判断就绪其他示例还覆盖托管 PostgreSQLmanaged-postgres、外部 PG Redisexternal-postgres-and-redis、私有 CA 的自签名 PostgreSQLpostgres-private-ca以及 Traefik 自定义 SSLtraefik-custom-ssl等真实生产场景。另外仓库还提供一个名为Auto Upstall的一键生产部署脚本 noco.sh见 docker-compose/1_Auto_Upstall/README.md它会根据交互式问答自动生成 docker-compose 文件并配有 Bats 测试与黄金样例tests/golden/保证生成结果稳定。开发环境与贡献开发环境搭建葡萄牙语 README 指向官方文档的 Development Setup 页面。在本仓库中开发入口是 packages/nocodbNestJS 后端与 packages/nc-guiNuxt 前端根目录 package.json 使用 pnpm workspace 统一管理各包本地调试 SDK 可用 scripts/installLocalSdk.js。贡献指南遵循仓库的 CONTRIBUTING 规范参与开发与提交。为什么构建 NocoDB项目使命葡萄牙语 README 用一段清晰的叙述解释了项目动机此处完整保留其核心论点大多数互联网公司同时依赖电子表格和数据库来支撑业务。电子表格每天被数十亿人协作使用但在计算能力层面数据库的体验却落后不少——而市面上以 SaaS 形式解决这一问题的产品往往意味着糟糕的权限控制、供应商锁定vendor lock-in、数据锁定data lock-in、随时可能变动的价格以及一个压在可能性上方的玻璃天花板。因此 NocoDB 的使命是提供一款功能强大的 no-code 界面 真正开源的数据库工具面向全球所有类型的业务——不仅让更多人平等地获得强大的计算能力也把全球数十亿擅长修补与构建的人真正带到互联网协作中。许可证本项目基于AGPLv3许可证发布见 LICENSE.md。【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表