
espocrm 是一款基于 PHP 8.3 与 Slim 4 框架开发的开源客户关系管理(CRM)系统。
系统覆盖线索、联系人、商机、营销活动、客服工单等业务模块,并提供 REST API 与元数据驱动的可扩展架构。
本仓库同步自 GitHub 开源项目 espocrm/espocrm 10.0.4,遵循 GNU AGPLv3 协议,可自托管部署并按需定制实体与字段。
By the numbers:9888 个源文件,52 MB 体积;3256 个 PHP 脚本,4502 个 JSON 元数据文件;5 大类核心业务实体(Account、Contact、Lead、Opportunity、Case);支持 MySQL、MariaDB、PostgreSQL 三种数据库;商业许可可选。
源码系统概览
文章正文
本文介绍 EspoCRM 开源客户关系管理系统的功能模块、技术架构、部署方式与安全风险提示。
本仓库版本为 10.0.4,与 GitHub 上游 espocrm/espocrm 仓库完全一致,适合需要私有化部署 CRM 的中小企业、创业团队以及希望做二次开发的技术团队使用。
源码简介
EspoCRM 是一款使用 PHP 8.3-8.5 编写的开源 CRM 平台,采用 Slim 4 作为 HTTP 路由层,并整合 Symfony Process、Routing、HttpFoundation、Mailer 等组件。
后端通过 PDO 支持 MySQL 8.0+、MariaDB 10.3+ 与 PostgreSQL 15+ 三种主流关系型数据库。
前端是单页应用(SPA),核心逻辑使用 TypeScript 编写,UI 基于 Backbone.js、jQuery、Bootstrap,构建工具为 Grunt 与 Rollup。
系统元数据使用 JSON Schema 描述,开发者可在运行时扩展自定义实体、字段、关系、按钮与表单布局。
仓库根目录提供 install/cli.php 与 install/entry.php 两个入口,可通过命令行完成无界面安装,便于自动化部署。
适用场景
中小企业自建 CRM:希望掌控客户数据、避免按席位付费的团队。
销售过程管理:从线索、联系人、商机到成单的全流程跟踪与转化分析。
市场活动规划:营销活动的策划、执行、预算与转化漏斗统计。
客户支持工单:支持案例分配、状态流转、优先级与 SLA 跟踪。
内部业务系统扩展:基于元数据机制快速搭建定制化业务应用,替代部分 OA 与 Excel 流程。
功能亮点
元数据驱动:实体、字段、关系、布局均以 JSON Schema 定义,管理员在后台即可调整业务模型。
标准 REST API:完整的 RESTful 接口可与第三方 BI 工具、移动端应用、ERP 系统对接。
工作流与 BPM 工具:支持自定义业务流程、条件触发器与公式字段。
客户门户 Portal:外部用户通过 portal 子站点提交案例、查询工单进度。
多语言与多币种:内置多种语言资源文件,支持多币种、时区与国际电话号字段。
实时通知:基于 Ratchet(WebSocket)+ ZeroMQ 的消息通道,浏览器端实时提醒。
二次开发友好:DI 容器遵循 PSR 标准,代码遵循 SOLID 原则,提供 IDE 自动补全。
| 维度 | EspoCRM | SugarCRM CE | vTiger | SuiteCRM |
|---|---|---|---|---|
| 协议 | AGPLv3 | AGPLv3(社区版) | VTECPL-1.1 | AGPLv3 |
| 后端栈 | PHP 8.3 + Slim 4 | PHP 7+ | PHP 7+ | PHP 7+ |
| 数据库 | MySQL/MariaDB/PostgreSQL | MySQL | MySQL | MySQL |
| 前端 | Backbone.js + TS | Backbone.js | Smarty + jQuery | Backbone.js |
| 元数据扩展 | JSON Schema | 部分支持 | 模块硬编码 | 模块硬编码 |
| 官方活跃度 | 持续发版 | 社区维护 | 维护节奏较慢 | 社区维护 |
技术架构与部署指南
技术栈与运行环境
编程语言:PHP 8.3 至 8.5。
Web 框架:Slim 4 + Symfony Process、Routing、HttpFoundation、Mailer 组件。
数据库:MySQL 8.0+、MariaDB 10.3+、PostgreSQL 15+ 任选其一。
前端框架:Backbone.js + jQuery + Bootstrap,核心模块使用 TypeScript,构建工具 Grunt + Rollup。
Web 服务器:NGINX、Apache 或 IIS,推荐 PHP-FPM 8.3+ 运行环境。
安装与部署提示
手动安装:下载源码包后上传至 Web 目录,通过浏览器访问 /install 进入图形化安装向导,按提示填写数据库、管理员与 SMTP 信息。
脚本安装:执行官方 install.sh 脚本自动拉起 Docker 容器组合,包含 NGINX 与 MySQL,适合快速测试。
Docker 部署:使用官方 espocrm/espocrm 镜像,分别启动数据库容器、业务容器与 cron 守护容器,数据卷挂载 data、custom、custom-client 三个目录以便备份。
Traefik 反向代理:使用官方提供的 Traefik 模板,自动签发 Let’s Encrypt 证书并暴露 80/443 端口。
目录权限:运行时需保证 data/、custom/、client/custom/ 三个目录对 PHP-FPM 用户可写,用于缓存、上传与扩展文件落地。
定时任务:通过 cron.php 注册定时任务,负责异步发送邮件、清理日志与执行 BPM 规则。
截图与演示说明
以下截图来自 GitHub 原版 espocrm/espocrm 仓库,均为无水印原图。

截图展示了 EspoCRM 主界面的「线索(Leads)」模块。左侧导航分组为 CRM、Activities 两类,包含 Accounts、Contacts、Leads、Opportunities 等核心实体,以及 Emails、Meetings、Calls、Tasks、Calendar 等活动类功能。右侧为线索列表视图,显示名称、状态(Assigned、In Process、Converted、New、Recycled、Dead)、邮箱、分配负责人等列。搜索框支持全局过滤,点开单条记录可进入详情视图进行编辑、关联商机、添加活动等操作。
常见问题
问:EspoCRM 是否支持中文界面?
答:支持。系统通过 POEditor 协作翻译,资源文件位于 install/core/i18n/ 目录,已包含 zh_CN 等多语种,可在管理后台直接切换。
问:是否能在不修改源码的情况下扩展字段?
答:可以。管理员通过管理后台的实体管理器(Entity Manager)即可添加字段、关系与自定义布局,所有改动即时生效,无需重新编译。
问:如何与外部 ERP 或电商系统对接?
答:使用系统提供的 REST API,认证方式支持 API Key、OAuth2 与 HMAC,常见语言 SDK 可基于 PSR-7 自行封装,文档位于 docs.espocrm.com/development/api/。
问:部署最少需要什么配置的服务器?
答:1 核 2GB 内存即可运行小型团队版本,生产环境建议 2 核 4GB 起,数据库独立部署,Web 服务器启用 OPcache 与 HTTP/2。
问:AGPLv3 协议商用是否受限?
答:AGPLv3 要求修改源码与对外提供服务时同步开放源码,商业 SaaS 需向用户披露源代码或采购官方商业许可,详细条款请咨询法务。
安全风险提示
AGPLv3 协议约束:对外提供 EspoCRM 网络服务时,需向所有用户公开修改后的完整源代码,商业 SaaS 场景建议评估官方商业许可。
默认配置暴露安装入口:首次安装完成后 /install 目录如未删除,攻击者可重置管理员账户,务必在安装结束后将其移除或限制访问。
WebSocket 端口安全:Ratchet 监听的端口若对外开放,可能成为拒绝服务攻击的入口,需通过防火墙或反向代理进行收敛。
第三方扩展审计:从非官方市场下载的扩展可能携带恶意代码,部署前需在隔离环境验证文件完整性与代码行为。
下载说明
本仓库源码与 GitHub 开源项目 espocrm/espocrm 完全一致,版本 10.0.4,采用 GNU AGPLv3 协议发布。
开发者可通过下方地址获取最新代码、提交 Issue 或参与 Pull Request,生产环境建议优先使用官方 stable 分支的发行版。
GitHub项目开源地址:https://github.com/espocrm/espocrm