

本文全面介绍了 NocoDB,一个将传统关系型数据库转化为直观智能电子表格界面的开源无代码平台,被誉为 Airtable 的强大开源替代方案。文章详细阐述了 NocoDB 的核心特性,包括多数据源连接、丰富的电子表格视图、自动 API 生成以及灵活的权限管理。此外,还深入对比了 NocoDB 社区版与付费版之间的功能差异,涵盖了企业级特性如工作区管理、高级安全和自动化增强。最后,提供了详细的 Docker Compose 部署指南,包括无代理模式和通过 Nginx 代理的配置示例,旨在帮助读者轻松部署和高效利用 NocoDB 进行数据管理。1. NocoDB 概览:核心功能与定位
NocoDB 是一款开源的无代码数据库平台,可以将传统的关系型数据库(如 MySQL、PostgreSQL、SQL Server、SQLite 等)转化为直观易用的智能电子表格界面。 作为Airtable的开源替代,NocoDB 提供了免费且可自托管的解决方案,使用起来既有类似于表格的易用性,又有数据库的丰富功能,尤其是推荐使用PostgeSQL。
社区版是完全免费的,并且遵循 AGPLv3 开源许可协议。这意味着用户可以自由地使用、修改和分发代码。社区版提供了 NocoDB 的核心功能,包括:
付费版在社区版的基础上,提供了更多面向企业级用户和大规模部署的高级功能和支持:
详细的对比表格参照官网 nocodb
官方文档有多种部署方式,包括直接部署,通过Nginx或是Traefik进行代理,还有部署Nginx Proxy Manager的。具体如 Github Nobodb docker-compose
测试使用,直接映射端口到服务器上。官方的docker compose使用的是Postgres 16.6,所以我这里也使用这个版本。对比官方版本,我省略了Postgres的healthcheck。但是增加了Nocodb的JWT的设置。
NC_AUTH_JWT_SECRET:随机字符串,用于签发和验证JWT。如果不设置这个值,每次容器启动都会随机生成新的密钥,则已有的JWT都会失效。
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:Nocodb的WebUI作为前端,通过Nginx代理。将数据库和Nocodb放入到另一个专门放数据库的网络,这样Nocodb可以直接连接到那些数据库里。
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: trueNginx的配置文件。
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;
    }
}访问https://Server_IP:Port。首先会让你注册超级用户。

应用内部已经有了一个默认的数据库叫做Getting Started,也可以通过上面的Create Base按钮创建新的数据库。
左侧侧边栏是有一个按钮叫Teams & Settings,可以进行用户的管理或是设置邮件和存储。

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

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

更多内容持续更新于我的博客:https://www.zenseek.site
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。