快速上手 twenty 开源 CRM:从部署到定制完整指南
【免费下载链接】twentyThe open alternative to Salesforce, designed for AI.项目地址: https://gitcode.com/GitHub_Trending/tw/twenty
主流商业 CRM 一年订阅费动辄上千美元,数据还锁在别人的表结构里,想换系统先花几个月导数据;而"免费"替代品往往字段僵化、API 残缺。twenty 开源 CRM 给出的答案是:数据模型你自己定义、工作流自动化可视化编排、AI 原生内建,而且代码完全在你手里。这篇文章覆盖从 5 分钟部署、核心能力、四条定制路径到高频报错速查的完整流程。
💡 为什么值得看它
商业 CRM 的痛点很具体:每用户每月几十美元的订阅费、导出数据要提工单、想加一个字段得等供应商发版。
twenty 的定位一句话:Salesforce 的开源替代,专为 AI 设计——它把联系人、交易、工作流这些核心能力全部开放在可自托管的代码里,而不是锁在 SaaS 黑盒中。
对你来说这意味着三件事:成本归零只剩服务器开销;数据在自家 PostgreSQL 里,随时可迁;改任何行为都是改代码、提 PR,而不是填功能请求表。
🚀 跑起来:5 分钟部署 twenty 开源 CRM
最简路径是一行命令:
curl -fsSL https://gitcode.com/GitHub_Trending/tw/twenty/raw/branch/main/packages/twenty-docker/scripts/1-click.sh | bash它会装好 Docker、拉取twentycrm/twenty镜像并起 4 个容器(server、worker、PostgreSQL 16、Redis);想用指定版本就加前缀,如VERSION=v0.32.4 bash 1-click.sh。
上面这张图是 Helm 部署的组件拓扑,Docker Compose 部署同理:server 和 worker 各占一个容器,数据落 PostgreSQL,队列走 Redis。
跑完后浏览器访问http://localhost:3000出现登录/注册界面即成功;健康检查打http://localhost:3000/healthz,返回 200 就放心。
本地开发环境:clone 后 yarn 起栈
git clone https://gitcode.com/GitHub_Trending/tw/twenty && cd twenty yarn install yarn nx serve twenty-front这套命令走 Nx 构建系统起完整前后端;前提是 Node 24.5+ 和 yarn 4,首次编译约 1-2 分钟,期间终端无输出属正常。
生产部署:Compose 与 K8s
Docker Compose 清单里server服务映射3000:3000端口,db是 postgres:16,redis带noeviction策略;规模化部署换 Kubernetes 清单 即可。
仓库关键目录
- packages/twenty-front/:React 前端,视图与设置页
- packages/twenty-server/:NestJS 后端,引擎与核心模块
- packages/twenty-docs/:全套文档源(mdx),仓库内直接可读
- packages/twenty-apps/:官方应用示例,可直接装进工作区
🎯 能做什么:three 个场景拆解核心能力
twenty 的价值不在功能数量,而在数据模型、自动化和 AI 这三件事都开放给了你。
自定义对象与字段:业务对象不进代码库
能力定义:工作区的数据模型完全由你在 UI 里定义,不需要改任何代码。
三步操作:设置页「Objects」→ 新建对象(如「项目」)→ 配字段与关联。预置了公司、联系人、交易,你加一个「合同」对象并与交易关联后,它立刻出现在表格、看板、日历视图里,权限和过滤器同步生效。
业务场景:SaaS 团队加「项目」和「合同」两个对象,销售在交易下挂合同,项目里关联开票记录——全程没动一行代码。
工作流触发器写法:事件到动作全可视
能力定义:用「触发器 → 过滤 → 动作」链条把业务事件变成自动化。
三步操作:Workflows 页点 New → 选触发器(如"记录状态变化")→ 挂动作(创建记录、发通知、调外部 API),可视化编辑器里直接跑通再发布,发布前可以校验每一步。
业务场景:当交易状态变为Won时,工作流自动创建合同对象、给负责人发通知、调外部计费 API——触发器写法就是这套可视化 DSL,逻辑全在 workflow 引擎模块里。
AI 原生:命令菜单里的 Skills 与 Agents
能力定义:AI 不是套壳聊天框,而是以 Skills/Agents 形式内建,命令菜单(/)直接调用。
三步操作:打开任意记录 → 敲/打开命令菜单 → 选一个内置 Agent,比如"总结客户历史"或"起草跟进邮件"。
业务场景:打开一个联系人的详情页,敲/总结,Agent 读该联系人的时间线活动,回吐一段历史摘要和下一步建议;它调用的能力来自 code-interpreter 等后端模块。
🔧 改起来:四条定制路径
定制 twenty 只需要四条路:改配置、改数据模型、写应用、调 API,全部有明确入口。
改配置:动 3 个环境变量
# packages/twenty-docker/.env(部署时生成) SERVER_URL=https://crm.example.com # 公网访问地址 ENCRYPTION_KEY=*** # 至少 32 字节 REDIS_URL=redis://redis:6379改完重启容器生效;APP_SECRET、EMAIL_SMTP_HOST按需补充,Compose 清单里每个变量都有注释。
加字段或对象:用 twenty-sdk 声明式定义
import { defineMyObject } from 'twenty-sdk'; export const myContract = defineMyObject({ nameSingular: 'contract', fields: [ { name: 'amount', type: 'number' }, { name: 'deal', type: 'relation', target: 'deal' }, ], });这段放在应用里随包发布,字段立即出现在对象上;深挖看 apps 文档的extending-objects.mdx。
写插件或应用:三步脚手架
npx create-twenty-app@latest my-twenty-app cd my-twenty-app yarn twenty dev脚手架生成项目、自动拉一个本地 Docker 版 twenty 并认证,dev模式热重载 + 自动刷新类型化客户端。现成示例直接读 postcard 应用 的源码最快。
调 API:REST 与 GraphQL 双通道
curl -H "Authorization: Bearer 你的API_KEY" \ http://localhost:3000/api/rest/v1/peopleREST 适合外部系统同步,GraphQL 适合前端细粒度查询;capabilities 文档 里apis.mdx和webhooks.mdx分别覆盖调用与回调。
🛠 卡住了:高频问题速查
| 症状 | 原因 | 解法 |
|---|---|---|
yarn twenty dev提示 Docker 不可用 | Docker 守护进程没启动 | docker info确认,然后yarn twenty docker:logs看容器日志 |
| 应用鉴权失败,请求全部 401 | 本地 API Key 过期或换过工作区 | 重新执行yarn twenty remote:add完成认证 |
编辑器里twenty-sdk类型没生成 | dev 进程没在跑,客户端没刷新 | 保持yarn twenty dev常驻,它会自动生成类型化客户端 |
| 3000 端口被占,页面打不开 | 本机已有服务占位 | 改 Compose 的"3000:3000"映射为"3001:3000"后重启 |
| 首次启动终端无输出超过 5 分钟 | server 在跑 PostgreSQL 初始化迁移 | 属正常,用curl http://localhost:3000/healthz轮询,返回 200 即就绪 |
📌 接着玩:资源与参与
- 文档:packages/twenty-docs/ 仓库内全套 mdx,开发者文档入口在
developers/目录 - 社区:官方 Discord(
discord.gg/cx5n4Jzs57),核心开发每周开会,决策过程公开 - 贡献:读 AGENTS.md 和 CLAUDE.md 了解协作约定,PR 提到 main 分支即可
fork 下来改一个SERVER_URL环境变量,两分钟就能跑通你的第一台私有 twenty;再或者把 postcard 应用 装进工作区,跑一遍里面的逻辑函数,定制路径就全通了。
【免费下载链接】twentyThe open alternative to Salesforce, designed for AI.项目地址: https://gitcode.com/GitHub_Trending/tw/twenty
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考