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_societe、llx_facture),確認無資料流失後才移除臨時容器。 - 資源限制:每個容器均設定
mem_limit: 1024m,避免記憶體暴漲影響同主機其他服務。 - 重啟策略:
restart: unless-stopped確保意外退出時自動恢復。 - 備份:
dolibarr-documents與dolibarr-custom卷需納入備份排程;PostgreSQL 資料庫本身由 pg-main 的備份機制覆蓋。 - 日誌監控:使用
docker compose logs -f查看應用日誌;Cloudflare Tunnel 的存取記錄可輔助診斷連線問題。 - 更新策略:Dolibarr 版本升級前,先在測試環境確認模組相容性,再使用
docker compose pull更新鏡像。
常見問題¶
-
為何不直接用 MariaDB 而要遷移至 PostgreSQL? 官方支援 MySQL/MariaDB 與 PostgreSQL,但 PostgreSQL 在複雜查詢、並發控制及資料完整性方面較優,且為未來與其他系統整合提供更大彈性。
-
遷移後發現某些報表資料不符? 先檢查時區設定及資料型別轉換,尤其是日期時間欄位。另外,MySQL 的
TINYINT(1)在 PostgreSQL 中可能對應為BOOLEAN,需確認應用層讀寫正常。 -
Dolibarr 能否與其他系統整合? Dolibarr 提供 REST API 及外部模組介面,可與 litellm 等 AI 服務整合,實現自動化客戶回應或資料分析。
-
如何安全地透過互聯網存取? 本實例不開啟 host port,只透過 cloudflare-tunnel 將
https://dolibarr.benhoweb.com指向容器的 80 埠。Cloudflare 負責 TLS 終止,並可設定 Access 政策做額外認證。 -
DOLI_INSTALL_AUTO 會否每次重啟都執行? 不會。自動安裝僅在系統尚未完成安裝時觸發。若安裝後仍需調整,可在
conf/conf.php中手動編輯。
相關鏈接¶
- docker
- postgres
- MariaDB
- cloudflare-tunnel
- litellm
- erpnext
- ERP
本頁面由 Benhoweb 維運團隊維護,最後更新:2026-08-07。
來源¶
自動生成(2026-08-19 容器覆蓋率補完第二批)