據(jù)庫配置解析)
NocoDB 安裝與運行完全指南從 Docker 快速上手到 NC_DB 元數(shù)據(jù)庫配置解析【免費下載鏈接】nocodb A Free Self-hostable Airtable Alternative項目地址: https://gitcode.com/GitHub_Trending/no/nocodb本文以 NocoDB 官方 README 的德語版markdown/readme/languages/german.md為主體內(nèi)容覆蓋其全部核心章節(jié)——Docker 快速啟動、生產(chǎn)環(huán)境部署、環(huán)境變量、本地開發(fā)搭建與功能特性清單并結合當前倉庫的實際源碼配置解析器、Docker Compose 示例、pnpm 工作區(qū)腳本逐層擴充使每條命令和參數(shù)都能追溯到真實的實現(xiàn)依據(jù)。讀完后你可以獨立完成用 Docker 一鍵拉起 NocoDB、通過NC_DB將其元數(shù)據(jù)庫指向 PostgreSQL/MySQL 等外部數(shù)據(jù)庫、理解 SQLite 回退機制的底層邏輯并在源碼級理解端口、JWT 密鑰與連接池等環(huán)境變量的實際作用。NocoDB 是什么README德語版對產(chǎn)品的定位一句話概括為將任何 MySQL、PostgreSQL、SQL Server、SQLite、MariaDB 轉換成一張 Smart-Tabelle智能表格。即 NocoDB 并不替代你的數(shù)據(jù)庫而是在既有數(shù)據(jù)庫之上生成一套類電子表格的協(xié)作界面讓你以 No-Code 方式完成建表、篩選、分享與集成。這一點在源碼中得到直接印證NocoDB 啟動時需要一個元數(shù)據(jù)庫來存放表格視圖的元數(shù)據(jù)與外部數(shù)據(jù)庫的連接信息連接參數(shù)通過環(huán)境變量NC_DB指定。若未指定則回退到內(nèi)置 SQLite。這一元數(shù)據(jù)庫 外部數(shù)據(jù)表的雙層結構是理解后文所有部署方式的鑰匙??焖匍_始Docker 方式最簡啟動內(nèi)置 SQLite原文檔給出的最簡命令docker run -d \ --name noco \ -v $(pwd)/nocodb:/usr/app/data/ \ -p 8080:8080 \ nocodb/nocodb:latest兩個要點均出自原文檔且與源碼一致容器內(nèi)元數(shù)據(jù)庫默認目錄為/usr/app/data/。原文檔指出若未提供外部數(shù)據(jù)庫輸入NocoDB 回退到 SQLite要讓 SQLite 持久化就掛載該目錄即-v那行。NocoDB 要求一個數(shù)據(jù)庫來存元數(shù)據(jù)SQLite 只是零配置回退生產(chǎn)環(huán)境建議顯式指定。從源碼看這一回退機制NcConfig 的默認值即為client: sqlite3、filename: noco.db且文件名會與數(shù)據(jù)目錄拼接path.join(ncConfig.toolDir, filename)。toolDir的取值鏈在 helpers.ts 中定義為NC_APP_DATA_DIR → NC_TOOL_DIR → process.cwd()因此 Docker 鏡像將其指到/usr/app/data/后SQLite 文件才會落在掛載卷內(nèi)。指定外部數(shù)據(jù)庫PostgreSQL 示例docker run -d \ --name noco \ -v $(pwd)/nocodb:/usr/app/data/ \ -p 8080:8080 \ -e NC_DBpg://host.docker.internal:5432?urootppassworddd1 \ -e NC_AUTH_JWT_SECRET569a1821-0a93-45e8-87ab-eb857f20a010 \ nocodb/nocodb:latest這里有兩個關鍵環(huán)境變量NC_DB元數(shù)據(jù)庫連接串格式為driver://host:port?uuserppasswordddatabaseNC_AUTH_JWT_SECRETJWT 簽名的密鑰用于登錄態(tài)與 API Token 的簽發(fā)。關于NC_DB的解析細節(jié)源碼給出了比原文檔更完整的規(guī)則驅動前綴映射。constants.ts 定義了mysql/mariadb → mysql2、postgres/postgresql → pg、sqlite → sqlite3、oracle → oracledb并給出默認端口映射MySQL 3306、PostgreSQL 5432、SQL Server 1433、Oracle 1521——即連接串中省略端口時按此補全。短參數(shù)別名。URL 查詢參數(shù)支持縮寫別名constants.ts參數(shù)別名databased、dbpasswordpuserutitletoptionsopt、optsssl/keyFilePath/certFilePath/caFilePath無別名SSL 自動啟用規(guī)則。從 jdbcToXcConfig 的結構看當驅動為pg且未顯式配置ssl時若主機名不在白名單[localhost, 127.0.0.1, host.docker.internal, 172.17.0.1]avoidSSL內(nèi)會自動開啟 SSL。這解釋了為何面向公網(wǎng)托管數(shù)據(jù)庫的連接串往往無需顯式寫ssltrue。連接池。元數(shù)據(jù)庫連接池上限由NC_DB_POOL_MAX控制默認 10defaultConnectionOptions。連接建立時的建庫邏輯。NcConfig.create 在裝配完成后會調(diào)用metaDbCreateIfNotExist()SQLite 場景確保數(shù)據(jù)庫文件存在其他驅動則在數(shù)據(jù)庫名缺失時報錯Meta database configuration missing database name——也就是說外部數(shù)據(jù)庫實例需已存在NocoDB 會自動創(chuàng)建其中的元數(shù)據(jù)庫/文件。NPM 方式原文檔的 NPM 安裝方式npm install create-nocodb-app需要說明當前倉庫的實際狀態(tài)該包名僅出現(xiàn)在這篇德語 README 中當前代碼庫的 README 與安裝入口均已收斂到 Docker 與倉庫內(nèi)置的部署腳本見下文pnpm 工作區(qū)pnpm-workspace.yaml內(nèi)也未包含該腳手架包。因此create-nocodb-app屬于文檔歷史記載的便捷安裝途徑以倉庫現(xiàn)狀為準推薦的運行方式仍是 Docker 鏡像或下述 Compose 方案。生產(chǎn)環(huán)境部署Docker Compose原文檔Produktivaufbau生產(chǎn)構建一節(jié)指出NocoDB 需要一套數(shù)據(jù)庫來保存表格視圖元數(shù)據(jù)與外部數(shù)據(jù)庫連接信息并通過NC_DB指定。原文檔給出的 Compose 流程是克隆倉庫后進入docker-compose/pg子目錄執(zhí)行docker compose up -d。對照當前倉庫docker-compose/目錄已演進為三種形態(tài)功能上是原文檔docker-compose/pg的超集替代1. 交互式向導setup.sh / Auto-Upstallsetup.sh 是一個輕量包裝器直接執(zhí)行同級的 1_Auto_Upstall/noco.shbash docker-compose/setup.sh該向導腳本noco.sh會交互式收集參數(shù)并生成db.json、docker.env等文件——注意腳本頭部注釋明確寫道這些生成文件包含數(shù)據(jù)庫憑據(jù)需以 owner-only 權限創(chuàng)建umask 077對生產(chǎn)環(huán)境憑據(jù)管理是不錯的實踐參考。2. 現(xiàn)成示例目錄docker-compose/examples當前倉庫提供五套開箱即用的 Compose 配置見 docker-compose/examples/README.md示例PostgreSQLRedis代理適用場景quickstart-demo內(nèi)置內(nèi)置無8080 端口本地評估m(xù)anaged-postgres外部托管RDS 等外部無生產(chǎn)環(huán)境自帶 LBexternal-postgres-and-redis外部自管外部無最小 Docker 占用traefik-custom-ssl外部托管外部Traefik 自定義證書自帶 SSL 證書的生產(chǎn)環(huán)境postgres-private-ca私有 CA外部Traefik Lets Encrypt私有云/內(nèi)網(wǎng) DB以最簡的 quickstart-demo 為例其核心環(huán)境變量配置是docker-compose.ymlnocodb: image: nocodb/nocodb:latest environment: NC_DB: pg://db:5432?unocodbpquickstart_demo_pw_change_mednocodb NC_REDIS_URL: redis://redis:6379 NC_SITE_URL: http://localhost:8080 NC_DISABLE_MUX: true volumes: - nocodb_data:/usr/app/data這比原文檔的docker run示例多出了NC_REDIS_URLRedis 用于緩存/實時協(xié)作等與NC_SITE_URL站點對外地址。官方示例 README 明確提醒生產(chǎn)形態(tài)的示例中所有占位符如CHANGE_ME_db_password必須在docker compose up -d之前替換。環(huán)境變量速查從源碼讀出完整取值原文檔將環(huán)境變量列表外鏈到官方文檔站這里依據(jù)源碼 NcConfig.createByEnv 給出與當前代碼一一對應的核心項環(huán)境變量來源作用NC_DBprocess.env.NC_DB元數(shù)據(jù)庫連接串URL 形式NC_DB_JSON/NC_DB_JSON_FILE同上以 JSON或 JSON 文件形式提供元數(shù)據(jù)庫配置是 URL 形式的等價替代NC_AUTH_JWT_SECRET同上JWT 密鑰NC_PORTport ?? 8080監(jiān)聽端口默認8080NC_TRYtryMode置真時元數(shù)據(jù)庫退化為sqlite3 :memory:單連接池用于測試/試用模式NC_WORKERworker為真時進程作為 worker 運行不暴露端口NC_DASHBOARD_URLdashboardPathDashboard 掛載路徑默認/一個值得注意的健壯性細節(jié)NC_DB_JSON_FILE路徑不存在時直接拋錯NC_DB_JSON_FILE not found: pathNcConfig.ts而不是靜默回退避免生產(chǎn)環(huán)境誤連到錯誤的存儲。GUI 訪問啟動后瀏覽器訪問http://localhost:8080/dashboard原文檔GUI一節(jié)即此一句。從源碼結構看Dashboard 頁面由后端 Express 應用提供見 run/docker.tsserver.set(view engine, ejs)并啟用 CORS、禁用 etag 等前端靜態(tài)資源由構建產(chǎn)物內(nèi)嵌提供而NC_DASHBOARD_URL允許將該路徑改掛到子目錄如反向代理場景下/nocodb/dashboard。功能特性Merkmale完整繼承原文檔特性清單并結合倉庫結構補充佐證富表格界面Rich-Tabellenschnittstelle簡單的搜索、排序、過濾與列隱藏視圖創(chuàng)建GitterGrid、GalerieGallery、Kanban、FormularForm——當前倉庫前端在 packages/nc-gui/composables 下可看到useGridViewData、useKanbanViewStore、useFormViewStore、useGalleryViewData等與各視圖一一對應的組合式函數(shù)視圖分享公開與密碼保護兩種方式個人視圖與鎖定視圖單元格圖片上傳兼容 S3、Minio、GCP、Azure、DigitalOcean、Linode、OVH、Backblaze——存儲集成插件位于 packages/nocodb/src/plugins角色體系所有者Eigentümer、創(chuàng)建者Ersteller、編輯者Bearbeiter、查看者Betrachter、評論者Kommentator及自定義角色——角色徽章資源可參考 packages/nc-mail-assets/badges訪問控制細粒度到數(shù)據(jù)庫、表、列級別。工作流自動化 App-StoreChatMicrosoft Teams、Slack、Discord、Mattermost郵件SMTP、SES、MailChimpSMSTwilioWhatsApp以及任意第三方 API。程序化 API 訪問REST APISwaggerOpenAPI 規(guī)范見 packages/nocodb/src/schema/swagger.json 與根目錄 APIs.jsonGraphQL APIJWT 認證與社交登錄認證策略實現(xiàn)位于 packages/nocodb/src/strategiesAPI Token 用于 Zapier、Integromat 等集成。本地開發(fā)搭建原文檔Entwicklungsaufbau開發(fā)構建一節(jié)包含三步全部保留并補充了倉庫現(xiàn)狀說明1. 克隆項目git clone https://gitcode.com/GitHub_Trending/no/nocodb cd nocodb2. 本地啟動后端cd packages/nocodb pnpm install pnpm run watch:run # 瀏覽器訪問 localhost:8080/dashboardwatch:run的真實定義packages/nocodb/package.json為cross-env NODE_ENVdevelopment NC_DISABLE_TELEtrue ENTRYPOINTsrc/run/docker rspack --config rspack.dev.config.js即通過 rspack 的 dev 配置、以src/run/docker.ts為入口的熱重載啟動NC_DISABLE_TELEtrue關閉遙測。同文件還提供watch:run:mysql、watch:run:pg兩個變體分別指向src/run/dockerRunMysql、src/run/dockerRunPG用于直接連 MySQL/PG 元數(shù)據(jù)庫調(diào)試。3. 本地啟動前端cd packages/nc-gui pnpm install pnpm run dev # 瀏覽器訪問 localhost:3000/dashboarddev即nuxt devpackages/nc-gui/package.json。原文檔承諾代碼修改自動重啟這正是 Nuxt dev 模式與 rspack watch 的熱更新行為。注意事項原文檔提示框 倉庫事實原文檔提示packages/nocodb依賴nc-lib-guipackages/nc-lib-gui 下提供編譯好的 GUI 庫發(fā)布在 npm Registry。若只想改后端可直接啟動后端后訪問localhost:8080/dashboard無需跑前端包管理器約束根 package.json 中preinstall使用npx only-allow pnpm即只能用 pnpmnpm/yarn 會被拒絕Node 版本原文檔徽章標注node 14.18.0但當前倉庫 packages/nocodb/package.json 的engines已要求node 22以當前倉庫為準。項目動機Why Mission最后完整保留原文檔的Warum bauen wir das auf?我們?yōu)槭裁礃嫿ㄋcUnsere Aufgabe我們的使命兩節(jié)的核心論述中文轉述為什么絕大多數(shù)互聯(lián)網(wǎng)業(yè)務用電子表格或數(shù)據(jù)庫承載業(yè)務需求。電子表格每天被十億以上的人協(xié)作使用而數(shù)據(jù)庫是遠比表格強大的計算工具人卻無法以同樣速度在其上工作。用 SaaS 產(chǎn)品解決這一問題的嘗試往往意味著糟糕的訪問控制、廠商鎖定、數(shù)據(jù)鎖定、突如其來的漲價以及對未來可能性的天花板。使命提供最強大的數(shù)據(jù)庫 No-Code 界面讓世界上每個互聯(lián)網(wǎng)業(yè)務都能使用通過公平且可持續(xù)的模式廣泛開放這一能力把強大的計算工具民主化讓超過十億人能在互聯(lián)網(wǎng)上獲得大膽折騰與創(chuàng)造的能力。小結零配置試用docker run 掛載/usr/app/data/內(nèi)置 SQLite 回退生產(chǎn)部署NC_DB指向外部數(shù)據(jù)庫連接串支持u/p/d短別名與 SSL 自動啟用配合 docker-compose/setup.sh 向導或 docker-compose/examples 現(xiàn)成模板訪問入口http://localhost:8080/dashboard可用NC_PORT、NC_DASHBOARD_URL調(diào)整本地開發(fā)pnpm 工作區(qū)下packages/nocodbpnpm run watch:run與packages/nc-guipnpm run dev兩條線并行。【免費下載鏈接】nocodb A Free Self-hostable Airtable Alternative項目地址: https://gitcode.com/GitHub_Trending/no/nocodb創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考