跳轉至

Dolibarr

概述

Dolibarr 是一套開源的企業資源規劃(ERP)與客戶關係管理(CRM)系統,以 PHP 編寫,採用 MySQL/MariaDB 或 PostgreSQL 作為後端資料庫。其模組化設計涵蓋客戶管理、產品庫存、銷售報價、訂單、發票、日程及人力資源等功能,適合中小型企業及部門級應用。與 erpnext 相比,Dolibarr 更輕量,部署門檻較低,兩者功能重疊卻各有側重,因此在實際環境中可互補使用——ERPNext 適合需要完整會計及專案管理的中大型企業,Dolibarr 則適合快速落地、以銷售和庫存為核心的場景。

現時 Benhoweb 的 Dolibarr 實例為 23.0.3(PoC,2026-08-07),已從原有 MariaDB 資料庫遷移至 PostgreSQL,並透過 Cloudflare Tunnel 提供安全的 HTTPS 存取,不對外暴露任何主機連接埠。

架構

本實例採用 Docker Compose 部署,包含兩個服務:

服務 容器名稱 固定 IP 鏡像
dolibarr-db dolibarr-db 172.21.0.75 mariadb:11
dolibarr-web dolibarr-web 172.21.0.74 dolibarr/dolibarr:23.0.3

目前的主資料庫已指向 pg-main(PostgreSQL),走官方 MySQL→PostgreSQL 遷移路徑(2026-08-07 完成)。dolibarr-db(MariaDB)僅暫時保留作為 Backup,驗證遷移成功後會移除。此架構避免直接改動大量配置而導致的風險,同時保留 rollback 能力。

兩個容器均連接至外部網絡 cf_network(172.21.0.0/16),對外只經 Cloudflare Tunnel 轉發,沒有映射任何 host port,減少攻擊面。資料目錄透過命名卷持久化:

  • dolibarr-db-data:MariaDB 資料檔案(臨時)
  • dolibarr-documents:Dolibarr 文件目錄(/var/www/documents)
  • dolibarr-custom:自訂模組目錄(/var/www/html/custom)

部署

使用 Docker Compose 部署,環境變數由 .env 檔提供(DOLI_DB_NAME、DOLI_DB_USER、DOLI_DB_PASSWORD、DOLI_ADMIN_LOGIN、DOLI_ADMIN_PASSWORD、DOLI_CRON_KEY、DOLI_INSTANCE_UNIQUE_ID 等)。關鍵設定包括:

  • 時區:Asia/Hong_Kong,並同步設定 PHP 時區
  • 自動安裝:DOLI_INSTALL_AUTO=1
  • 生產模式:DOLI_PROD=1
  • 資料庫類型:pgsql,連線至 pg-main:5432
  • 公司名稱:Benhoweb
  • 國家代碼:HK
  • Web 伺服器 user/group:UID/GID 1000

Compose 檔案以 name: dolibarr 定義專案名稱,網絡 cf_network 設為 external。

配置

Dolibarr 的環境變數配置非常直觀,以下為本實例的重點:

  • DOLI_DB_HOST 指向 pg-main,而非 dolibarr-db,確認主資料庫為 PostgreSQL。遷移時需特別注意欄位型別及函數相容性,官方工具已處理大部分轉換,但自訂 SQL 可能需微調。
  • DOLI_DB_HOST_PORT=5432,與 PostgreSQL 預設連接埠一致。
  • DOLI_URL_ROOT=https://dolibarr.benhoweb.com,搭配 Cloudflare Tunnel 使用。
  • DOLI_ENABLE_MODULES 清單:Societe(客戶/供應商)、Product(產品)、Facture(發票)、Propale(商業建議)、Commande(訂單)、Stock(庫存)、Agenda(日程)。這些是 ERP/CRM 最核心模組。
  • DOLI_CRON_KEY 用於外部 cron 觸發排程任務,需妥善保存。

管理員帳號為 shinggo,公司名為 Benhoweb。

維運與監控

日常維運重點包括:

  • 資料庫遷移監察:MariaDB 暫時保留,需定期比對 PostgreSQL 與 MariaDB 的關鍵資料表(如 llx_societellx_facture),確認無資料流失後才移除臨時容器。
  • 資源限制:每個容器均設定 mem_limit: 1024m,避免記憶體暴漲影響同主機其他服務。
  • 重啟策略restart: unless-stopped 確保意外退出時自動恢復。
  • 備份dolibarr-documentsdolibarr-custom 卷需納入備份排程;PostgreSQL 資料庫本身由 pg-main 的備份機制覆蓋。
  • 日誌監控:使用 docker compose logs -f 查看應用日誌;Cloudflare Tunnel 的存取記錄可輔助診斷連線問題。
  • 更新策略:Dolibarr 版本升級前,先在測試環境確認模組相容性,再使用 docker compose pull 更新鏡像。

常見問題

  1. 為何不直接用 MariaDB 而要遷移至 PostgreSQL? 官方支援 MySQL/MariaDB 與 PostgreSQL,但 PostgreSQL 在複雜查詢、並發控制及資料完整性方面較優,且為未來與其他系統整合提供更大彈性。

  2. 遷移後發現某些報表資料不符? 先檢查時區設定及資料型別轉換,尤其是日期時間欄位。另外,MySQL 的 TINYINT(1) 在 PostgreSQL 中可能對應為 BOOLEAN,需確認應用層讀寫正常。

  3. Dolibarr 能否與其他系統整合? Dolibarr 提供 REST API 及外部模組介面,可與 litellm 等 AI 服務整合,實現自動化客戶回應或資料分析。

  4. 如何安全地透過互聯網存取? 本實例不開啟 host port,只透過 cloudflare-tunnelhttps://dolibarr.benhoweb.com 指向容器的 80 埠。Cloudflare 負責 TLS 終止,並可設定 Access 政策做額外認證。

  5. DOLI_INSTALL_AUTO 會否每次重啟都執行? 不會。自動安裝僅在系統尚未完成安裝時觸發。若安裝後仍需調整,可在 conf/conf.php 中手動編輯。

相關鏈接


本頁面由 Benhoweb 維運團隊維護,最後更新:2026-08-07。

來源

自動生成(2026-08-19 容器覆蓋率補完第二批)