境部署完全手冊:PostgreSQL+Redis+Traefik+SSL自動續(xù)期最佳實踐)
NocoDB 生產環(huán)境部署完全手冊PostgreSQLRedisTraefikSSL自動續(xù)期最佳實踐【免費下載鏈接】nocodb A Free Self-hostable Airtable Alternative項目地址: https://gitcode.com/GitHub_Trending/no/nocodbNocoDB 是一款免費、可自托管的開源 Airtable 替代品用表格界面管理數(shù)據庫。本文帶你完成 NocoDB 生產環(huán)境部署使用 PostgreSQL 作為主數(shù)據庫、Redis 做緩存、Traefik 反向代理 Lets Encrypt 實現(xiàn) SSL 證書自動續(xù)期一套配置跑穩(wěn)線上服務 一、生產環(huán)境 vs 演示環(huán)境先搞清楚架構差異NocoDB 生產模式有兩個關鍵組件nocodb主容器提供 Web 與 API和worker容器處理導入導出、Webhook 等后臺任務。worker 會等待主容器健康檢查通過后才啟動健康檢查打的是/api/v1/health接口。倉庫的 docker-compose/examples/ 目錄提供了 5 個開箱即用的部署方案覆蓋了從本地演示到完整生產環(huán)境的幾乎所有場景方案PostgreSQLRedis反向代理適用場景quickstart-demo內置容器內置容器無8080 端口本地體驗、快速驗證managed-postgres云托管RDS/Cloud SQL外部托管無自帶 LB已有負載均衡的生產環(huán)境external-postgres-and-redis自建外部外部無最小化 Docker 占用postgres-private-ca外部私有 CA外部Traefik Lets Encrypt內網/私有云數(shù)據庫 ?traefik-custom-ssl外部托管外部Traefik 自有證書企業(yè)自簽/通配符證書 提示所有方案里的占位符如CHANGE_ME_db_password、your-managed-db-host都必須替換后才能啟動官方說明見 examples/README.md。二、PostgreSQL 連接配置一個 db.json 搞定生產環(huán)境推薦把數(shù)據庫連接寫在nocodb/db.jsonknex 格式中通過NC_DB_JSON_FILE環(huán)境變量指向它并掛載進容器——配置與數(shù)據分離方便單獨維護。以云托管數(shù)據庫為例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的托管數(shù)據庫私有/自簽 CA 的內網數(shù)據庫把 CA 證書以單行字符串換行寫成\n放進ssl.ca字段寫法參考 postgres-private-ca 的 db.json 和它的 README。三、Traefik 反向代理 Lets Encrypt SSL 自動續(xù)期這是本手冊的精華。postgres-private-ca 方案的 docker-compose.yml 展示了完整生產形態(tài)1. 路由與 TLSNocoDB 容器通過 Traefik 標簽聲明Host規(guī)則和域名僅監(jiān)聽 443 的websecure入口證書由letsencryptresolver 自動簽發(fā)labels: - traefik.http.routers.nocodb.ruleHost(nocodb.example.com) - traefik.http.routers.nocodb.tls.certresolverletsencrypt2. 自動續(xù)期Traefik 的 ACME 配置了 HTTP 挑戰(zhàn)80 端口用于驗證和持久化存儲目錄./letsencrypt證書和續(xù)期狀態(tài)保存在acme.json中到期前自動續(xù)期無需人工干預?。3. HTTP 強制跳轉 HTTPS80 入口配置了重定向所有明文訪問自動升級為加密訪問。4. 如果已有證書企業(yè)自簽/通配符改用 traefik-custom-ssl 方案把證書鏈和私鑰放進certs/目錄再通過 certs.yml 告訴 Traefik 證書位置支持多證書共存。四、生產環(huán)境變量清單docker.env生產示例的環(huán)境變量集中在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忘記改成真實域名會導致郵件里的登錄鏈接指向錯誤地址。五、升級、備份與橫向擴展升級生產環(huán)境建議固定鏡像 tag如nocodb/nocodb:0.264.6而不是latest。一鍵安裝腳本 setup.sh詳見 1_Auto_Upstall 說明生成的update.sh封裝了pull up -d與鏡像清理它也支持--domain--acme-email參數(shù)直接生成帶 Traefik SSL 的生產配置。備份PostgreSQL、Redis 與 NocoDB 數(shù)據分別存放在postgres_data、redis_data、nocodb_data三個命名卷中對數(shù)據庫卷做定期備份即可配置類 db.json 是綁定掛載的普通文件納入版本管理。擴展因為數(shù)據庫和 Redis 都在外部NocoDB 本體可以水平擴容——把replicas從 1 調到 3多個實例共享同一份數(shù)據即可。六、上線前檢查清單 所有占位符密碼、域名、Redis 地址已替換NC_SITE_URL已填為https://公網域名Lets Encrypt 的 ACME 郵箱已改為真實郵箱證書到期提醒會發(fā)到這里80/443 端口對公網開放且域名 DNS 已解析到服務器鏡像 tag 已固定啟動后注冊第一個用戶再在Admin Panel → License激活許可證激活依賴 PostgreSQL本文方案均滿足。按照這份手冊走完你就擁有了一個 SSL 自動續(xù)期、數(shù)據庫加密、可水平擴展的 NocoDB 生產環(huán)境可以放心把數(shù)據表交給整個團隊使用?!久赓M下載鏈接】nocodb A Free Self-hostable Airtable Alternative項目地址: https://gitcode.com/GitHub_Trending/no/nocodb創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考