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