Chatwoot: 인터컴·젠데스크를 내 서버에 직접 올리는 오픈소스 고객지원 플랫폼
월 수백 달러짜리 SaaS 없이도 라이브채팅·이메일·WhatsApp을 한 곳에

고객이 WhatsApp으로 문의하고, 다른 고객은 웹사이트 채팅창으로 오고, 또 다른 고객은 이메일로 들어온다. 이걸 Zendesk나 Intercom 하나로 묶으면 편하지만, 팀 규모에 따라 월 수백~수천 달러가 나간다. Chatwoot는 그 자리를 노리는 오픈소스 대안이다. 오늘 GitHub 트렌딩에 하루 +86 스타를 기록하며 올라왔다.
이게 뭔가
Chatwoot는 옴니채널 고객지원 플랫폼이다. 쉽게 말해, 여러 채널(라이브채팅, 이메일, WhatsApp, Telegram, 트위터/X DM, Facebook 메신저 등)로 들어오는 고객 문의를 하나의 대시보드에서 처리하는 소프트웨어다.
상담원이 각 채널 앱을 번갈아 열 필요 없이, Chatwoot 화면 하나에서 모든 대화에 답장하고 팀원에게 할당하고 태그·메모를 붙이고 고객 이력도 확인한다. Intercom이나 Zendesk가 하는 일과 같다. 차이라면 직접 서버에 설치해서 쓴다.
왜 지금 뜨는가
세 가지 흐름이 겹쳤다.
① SaaS 비용 피로. Intercom은 2023년 이후 가격을 대폭 올렸고, Zendesk도 Suite 플랜 기준 상담원 1인당 월 $55~$115 수준이다. 스타트업과 중소기업이 대안을 찾는 수요가 꾸준히 쌓인다.
② 데이터 주권 이슈. GDPR, 한국 개인정보보호법 강화로 고객 대화 데이터를 외부 SaaS에 두기 꺼려하는 기업이 늘었다. 셀프호스팅은 데이터가 자사 인프라에만 머문다.
③ AI 연동 수요. Chatwoot는 최근 AI 어시스턴트 기능을 공식 로드맵에 올렸다. 오픈소스이므로 OpenAI·로컬 LLM을 자유롭게 붙인다는 점이 개발자들의 관심을 끈다.
핵심 기능
- 멀티채널 인박스: 라이브채팅 위젯, 이메일, WhatsApp Business API, Telegram, Twitter/X, Facebook, Line, SMS(Twilio)
- 팀 협업: 상담원 배정, 팀 라우팅, 내부 노트, 멘션
- 자동화: 조건 기반 규칙으로 라벨 부착·배정·우선순위 자동 처리
- CSAT 설문: 대화 종료 후 만족도 자동 수집
- REST API + 웹훅: 외부 CRM·ERP와 연동 가능
- 다국어 UI: Crowdin 기반 번역, 한국어 포함
누구에게 쓸모 있나
| 대상 | 이유 |
|---|---|
| 스타트업·중소기업 | Zendesk/Intercom 비용 절감, 데이터 자체 보유 |
| 개발팀 내 지원 채널 | GitHub 이슈 대신 구조화된 티켓 관리 |
| 에이전시 | 고객사별 멀티 인박스 분리 운영 |
| 규제 산업(의료·금융) | 데이터가 외부로 나가지 않는 셀프호스팅 |
맞지 않는 경우: 기술 담당자 없이 바로 쓰고 싶다면 Chatwoot Cloud 유료 플랜이 낫다. 셀프호스팅은 서버 운영·업데이트·백업을 직접 해야 한다.
시작하기
가장 빠른 방법은 Docker Compose다. 공식 문서는 Linux 서버(RAM 2GB 이상 권장)를 기준으로 안내한다.
# 1. 프로덕션용 docker-compose 파일 다운로드
wget -O docker-compose.yml \
https://raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yaml
# 2. 환경 변수 파일 생성 후 SECRET_KEY_BASE, DB 패스워드 등 편집
cp .env.example .env
nano .env
# 3. DB 초기화
docker compose run --no-deps --rm rails bundle exec rails db:chatwoot_prepare
# 4. 서비스 전체 기동
docker compose up -d
이후 http://your-server-ip:3000 에 접속하면 관리자 계정 설정 화면이 나온다. DigitalOcean Marketplace에서 원클릭 드롭릿 배포도 지원한다.
사용 예시
예시 1 — 웹사이트에 라이브채팅 위젯 삽입
대시보드에서 "인박스 → 웹사이트" 채널을 추가하면 아래 스니펫을 발급해준다. 사이트 <body> 마지막에 붙이면 끝.
<!-- Chatwoot 라이브채팅 위젯 삽입 스크립트 -->
<script>
(function(d, t) {
var BASE_URL = "https://your-chatwoot-domain.com";
var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
g.src = BASE_URL + "/packs/js/sdk.js";
g.defer = true;
g.async = true;
s.parentNode.insertBefore(g, s);
g.onload = function () {
window.chatwootSDK.run({
websiteToken: "YOUR_WEBSITE_TOKEN",
baseUrl: BASE_URL
});
};
})(document, "script");
</script>
예시 2 — REST API로 대화(Conversation) 프로그래밍 방식 생성
CRM 이벤트나 폼 제출 시 자동으로 Chatwoot 티켓을 여는 용도.
# 신규 대화 생성: contact_id=5인 고객, inbox_id=1 채널로 연결
curl -X POST "https://your-domain.com/api/v1/accounts/{ACCOUNT_ID}/conversations" \
-H "api_access_token: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"inbox_id": 1,
"contact_id": 5,
"additional_attributes": { "source": "signup-form" }
}'
예시 3 — 웹훅으로 외부 시스템에 대화 종료 이벤트 전달
Chatwoot가 대화 상태 변경 시 지정한 URL로 POST를 쏜다. Slack 알림·Notion DB 업데이트 등에 활용 가능.
// Chatwoot가 보내는 웹훅 페이로드 예시 (conversation_resolved)
{
"event": "conversation_resolved",
"id": 1234,
"status": "resolved",
"inbox_id": 1,
"contact": {
"id": 5,
"name": "홍길동",
"email": "hong@example.com"
},
"assignee": { "id": 2, "name": "상담원A" }
}
한계·주의
- 라이선스 확인 필수: GitHub에 NOASSERTION으로 표기될 만큼 라이선스 구조가 비표준적이다. CE(커뮤니티)는 MIT 기반이지만 엔터프라이즈 기능은 별도 상용 라이선스다. 재판매·화이트라벨링 전에 반드시 라이선스 원문을 읽어야 한다.
- 운영 부담: Rails + Sidekiq + Redis + PostgreSQL 스택이다. 업데이트·마이그레이션·백업을 직접 관리해야 한다.
- WhatsApp 연동 비용: WhatsApp Business API는 Meta의 별도 심사와 메시지 단가가 발생한다. Chatwoot가 무료여도 채널 비용은 따로 든다.
- AI 기능 성숙도: 내장 AI 어시스턴트는 아직 초기 단계다. 정교한 챗봇이 필요하다면 Botpress·Rasa 같은 전용 도구를 API로 연결하는 편이 현실적이다.
출처
- chatwoot/chatwoot GitHub Repository — GitHub
- Chatwoot Help Center — Chatwoot
댓글 0
첫 댓글을 남겨보세요.
