首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >探索 NocoDB:开源无代码数据库的特性、版本对比与 Docker 部署实践

探索 NocoDB:开源无代码数据库的特性、版本对比与 Docker 部署实践

原创
作者头像
潘晓可
发布2025-07-29 15:24:47
发布2025-07-29 15:24:47
1.2K0
举报
文章被收录于专栏:服务器和容器服务器和容器

本文全面介绍了 NocoDB,一个将传统关系型数据库转化为直观智能电子表格界面的开源无代码平台,被誉为 Airtable 的强大开源替代方案。文章详细阐述了 NocoDB 的核心特性,包括多数据源连接、丰富的电子表格视图、自动 API 生成以及灵活的权限管理。此外,还深入对比了 NocoDB 社区版与付费版之间的功能差异,涵盖了企业级特性如工作区管理、高级安全和自动化增强。最后,提供了详细的 Docker Compose 部署指南,包括无代理模式和通过 Nginx 代理的配置示例,旨在帮助读者轻松部署和高效利用 NocoDB 进行数据管理。1. NocoDB 概览:核心功能与定位

NocoDB 是一款开源的无代码数据库平台,可以将传统的关系型数据库(如 MySQL、PostgreSQL、SQL Server、SQLite 等)转化为直观易用的智能电子表格界面。 作为Airtable的开源替代,NocoDB 提供了免费且可自托管的解决方案,使用起来既有类似于表格的易用性,又有数据库的丰富功能,尤其是推荐使用PostgeSQL。

1.1 NocoDB 主要功能特性

  • 数据源连接:支持连接多种主流关系型数据库,并将它们以表格形式展现。
  • 电子表格视图:提供类似电子表格的界面,方便用户进行数据的查看、录入、编辑、删除和查询。
  • API 自动生成:每个表格和视图都会自动生成 RESTful API,便于与其他系统集成和数据交互。
  • 权限管理:支持对不同用户和团队设置数据访问权限,确保数据安全。
  • 多视图支持:提供表格、画廊、日历、看板等多种视图类型,以适应不同的数据管理需求。

1.2 NocoDB 版本对比:社区版与付费版差异

社区版是完全免费的,并且遵循 AGPLv3 开源许可协议。这意味着用户可以自由地使用、修改和分发代码。社区版提供了 NocoDB 的核心功能,包括:

  • 连接多种关系型数据库(如 MySQL, PostgreSQL, SQLite 等),并将其转化为智能电子表格界面。
  • 提供表格、画廊、看板、日历等多种数据视图。
  • 支持无限数量的 Bases、用户和数据库行(记录),以及文件存储。
  • 基础的数据筛选、排序、分组和搜索功能。
  • 自动生成 RESTful API。 适用于个人开发者、小型团队、教育研究机构以及对成本敏感且具备一定技术能力进行自托管和维护的用户。

付费版在社区版的基础上,提供了更多面向企业级用户和大规模部署的高级功能和支持:

  • 工作区管理: 支持无限数量的工作区,社区版只有一个。
  • 基础快照(Base Snapshot): 支持对数据库进行快照备份。
  • 更多视图类型: 包含社区版没有的视图,例如 Timeline 视图(计划在 Q4 2025 推出)。
  • 扩展记录布局: 提供文件布局和讨论布局等。
  • 表单视图增强: 支持自定义 Logo 和 Banner、隐藏 NocoDB 品牌、提交后跳转 URL、自定义和缩短共享 URL、字段输入验证以及条件显示字段等。
  • AI 功能: 包括 AI 按钮和 AI 提示等,主要是AI的集成。
  • 企业级安全特性: 包含单点登录(SSO/SAML)功能,这对于大型企业来说是关键的安全和管理特性。
  • 权限管理: 更细致的权限控制,甚至可以实现单元格级别的权限管理。
  • 自动化和工作流: 比社区版提供更深入的自动化功能,例如与企业系统的集成,而社区版主要通过 Webhooks 提供基本自动化。

详细的对比表格参照官网 nocodb

2. NocoDB 部署实践

官方文档有多种部署方式,包括直接部署,通过Nginx或是Traefik进行代理,还有部署Nginx Proxy Manager的。具体如 Github Nobodb docker-compose

2.1 Docker Compose 部署:无反向代理模式

测试使用,直接映射端口到服务器上。官方的docker compose使用的是Postgres 16.6,所以我这里也使用这个版本。对比官方版本,我省略了Postgres的healthcheck。但是增加了Nocodb的JWT的设置。

NC_AUTH_JWT_SECRET:随机字符串,用于签发和验证JWT。如果不设置这个值,每次容器启动都会随机生成新的密钥,则已有的JWT都会失效。

代码语言:yaml
复制
services:
  nocodb:
    image: nocodb/nocodb:latest
    container_name: nocodb
    restart: unless-stopped
    ports:
      - "8018:8080"
    environment:
      - NC_DB=pg://db:5432?u=nocodb_user&p=r9E69z2wQWufdJ&d=nocodb_db
      - NC_AUTH_JWT_SECRET=rpl924yxalpus0fo83di2lxodp0ot8f4
    volumes:
      - nocodb_data:/usr/app/data
    depends_on:
      - db

  db:
    image: postgres:16.6
    container_name: nocodb_postgres_db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=nocodb_user
      - POSTGRES_PASSWORD=r9E69z2wQWufdJ
      - POSTGRES_DB=nocodb_db
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  nocodb_data:
  db_data:

2.2 Docker Compose 部署:Nginx 反向代理模式

Nocodb的WebUI作为前端,通过Nginx代理。将数据库和Nocodb放入到另一个专门放数据库的网络,这样Nocodb可以直接连接到那些数据库里。

代码语言:yaml
复制
services:
  nocodb:
    image: nocodb/nocodb:latest
    container_name: nocodb
    restart: unless-stopped
    expose:
      - 8080
    environment:
      - NC_DB=pg://db:5432?u=nocodb_user&p=r9E69z2wQWufdJ&d=nocodb_db
      - NC_AUTH_JWT_SECRET=rpl924yxalpus0fo83di2lxodp0ot8f4
    volumes:
      - ./nocodb_data:/usr/app/data
    depends_on:
      - db
    networks:
      - database-pool
      - nginx-reverse-proxy

  db:
    image: postgres:16.6
    container_name: nocodb_postgres_db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=nocodb_user
      - POSTGRES_PASSWORD=r9E69z2wQWufdJ
      - POSTGRES_DB=nocodb_db
    volumes:
      - ./db_data:/var/lib/postgresql/data
    networks:
      - database-pool

networks:
  database-pool:
    external: true
  nginx-reverse-proxy:
    external: true

Nginx的配置文件。

代码语言:bash
复制
server {
    listen Port ssl;
    server_name Server_IP;

    ssl_certificate /etc/nginx/certs/Server_IP.crt;
    ssl_certificate_key /etc/nginx/certs/Server_IP.key;

    location / {
        proxy_pass http://nocodb:8080;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
    }
}

3. NocoDB 访问与基础操作

访问https://Server_IP:Port。首先会让你注册超级用户。

应用内部已经有了一个默认的数据库叫做Getting Started,也可以通过上面的Create Base按钮创建新的数据库。

左侧侧边栏是有一个按钮叫Teams & Settings,可以进行用户的管理或是设置邮件和存储。

点击默认的数据,在Overview部分可以创建新表,导入数据或是连接外部数据库。

默认数据库里有一张默认表叫Features,可以在下面创建不同的View。

📚 延伸阅读

更多内容持续更新于我的博客:https://www.zenseek.site

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 NocoDB 主要功能特性
  • 1.2 NocoDB 版本对比:社区版与付费版差异
  • 2. NocoDB 部署实践
    • 2.1 Docker Compose 部署:无反向代理模式
    • 2.2 Docker Compose 部署:Nginx 反向代理模式
  • 3. NocoDB 访问与基础操作
  • 📚 延伸阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档