
NocoDB 生产环境部署完全手册PostgreSQLRedisTraefikSSL自动续期最佳实践【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodbNocoDB 是一款免费、可自托管的开源 Airtable 替代品用表格界面管理数据库。本文带你完成 NocoDB 生产环境部署使用 PostgreSQL 作为主数据库、Redis 做缓存、Traefik 反向代理 Lets Encrypt 实现 SSL 证书自动续期一套配置跑稳线上服务 一、生产环境 vs 演示环境先搞清楚架构差异NocoDB 生产模式有两个关键组件nocodb主容器提供 Web 与 API和worker容器处理导入导出、Webhook 等后台任务。worker 会等待主容器健康检查通过后才启动健康检查打的是/api/v1/health接口。仓库的 docker-compose/examples/ 目录提供了 5 个开箱即用的部署方案覆盖了从本地演示到完整生产环境的几乎所有场景方案PostgreSQLRedis反向代理适用场景quickstart-demo内置容器内置容器无8080 端口本地体验、快速验证managed-postgres云托管RDS/Cloud SQL外部托管无自带 LB已有负载均衡的生产环境external-postgres-and-redis自建外部外部无最小化 Docker 占用postgres-private-ca外部私有 CA外部Traefik Lets Encrypt内网/私有云数据库 ⭐traefik-custom-ssl外部托管外部Traefik 自有证书企业自签/通配符证书 提示所有方案里的占位符如CHANGE_ME_db_password、your-managed-db-host都必须替换后才能启动官方说明见 examples/README.md。二、PostgreSQL 连接配置一个 db.json 搞定生产环境推荐把数据库连接写在nocodb/db.jsonknex 格式中通过NC_DB_JSON_FILE环境变量指向它并挂载进容器——配置与数据分离方便单独维护。以云托管数据库为例managed-postgres 的 db.json 长这样{ client: pg, connection: { host: your-managed-db-host.rds.amazonaws.com, port: 5432, user: nocodb, password: CHANGE_ME_db_password, database: nocodb, ssl: { rejectUnauthorized: true } } }两个要点rejectUnauthorized: true强制 SSL 校验适用于 RDS、Azure、Cloud SQL 等使用公共受信 CA的托管数据库私有/自签 CA 的内网数据库把 CA 证书以单行字符串换行写成\n放进ssl.ca字段写法参考 postgres-private-ca 的 db.json 和它的 README。三、Traefik 反向代理 Lets Encrypt SSL 自动续期这是本手册的精华。postgres-private-ca 方案的 docker-compose.yml 展示了完整生产形态1. 路由与 TLSNocoDB 容器通过 Traefik 标签声明Host规则和域名仅监听 443 的websecure入口证书由letsencryptresolver 自动签发labels: - traefik.http.routers.nocodb.ruleHost(nocodb.example.com) - traefik.http.routers.nocodb.tls.certresolverletsencrypt2. 自动续期Traefik 的 ACME 配置了 HTTP 挑战80 端口用于验证和持久化存储目录./letsencrypt证书和续期状态保存在acme.json中到期前自动续期无需人工干预✅。3. HTTP 强制跳转 HTTPS80 入口配置了重定向所有明文访问自动升级为加密访问。4. 如果已有证书企业自签/通配符改用 traefik-custom-ssl 方案把证书链和私钥放进certs/目录再通过 certs.yml 告诉 Traefik 证书位置支持多证书共存。四、生产环境变量清单docker.env生产示例的环境变量集中在docker.env中核心变量如下以 managed-postgres/docker.env 为准变量作用NC_DB_JSON_FILE指向容器内 db.json 的路径NC_REDIS_URLRedis 连接串如redis://your-redis-host:6379NC_SITE_URL公网访问地址邮件链接/Webhook/OAuth 回调都依赖它务必填 https 域名NC_SECURE_ATTACHMENTS设为true后附件走加密链接NC_DISABLE_MUX生产建议开启NC_WORKER_CONTAINERworker 容器专用主容器不设置⚠️ 常见坑NC_SITE_URL忘记改成真实域名会导致邮件里的登录链接指向错误地址。五、升级、备份与横向扩展升级生产环境建议固定镜像 tag如nocodb/nocodb:0.264.6而不是latest。一键安装脚本 setup.sh详见 1_Auto_Upstall 说明生成的update.sh封装了pull up -d与镜像清理它也支持--domain--acme-email参数直接生成带 Traefik SSL 的生产配置。备份PostgreSQL、Redis 与 NocoDB 数据分别存放在postgres_data、redis_data、nocodb_data三个命名卷中对数据库卷做定期备份即可配置类 db.json 是绑定挂载的普通文件纳入版本管理。扩展因为数据库和 Redis 都在外部NocoDB 本体可以水平扩容——把replicas从 1 调到 3多个实例共享同一份数据即可。六、上线前检查清单 所有占位符密码、域名、Redis 地址已替换NC_SITE_URL已填为https://公网域名Lets Encrypt 的 ACME 邮箱已改为真实邮箱证书到期提醒会发到这里80/443 端口对公网开放且域名 DNS 已解析到服务器镜像 tag 已固定启动后注册第一个用户再在Admin Panel → License激活许可证激活依赖 PostgreSQL本文方案均满足。按照这份手册走完你就拥有了一个 SSL 自动续期、数据库加密、可水平扩展的 NocoDB 生产环境可以放心把数据表交给整个团队使用。【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考