Chatto, 이제 오픈소스로 공개되어 셀프 호스팅 가능
(hmans.dev)- Chatto는 그룹·팀 채팅용 앱으로, Slack·Teams·Discord 같은 그룹 채팅 앱과 비슷하지만 더 컴팩트하고 빠른 사용감을 목표로 함
- 실행 파일만으로 서버를 띄우고 자체 프론트엔드까지 제공해, 개인 인프라에 비교적 간단히 배포할 수 있음
- 각 서버는 하나의 커뮤니티를 담당하며, 서버 간 페더레이션이나 서드파티 추적·분석을 넣지 않음
- 개인 및 채팅 데이터는 사용자별 키로 저장 시 암호화되며, 계정 삭제 시 해당 키가 폐기됨
- 지난 약 1년간 개발된 그룹·팀 채팅 애플리케이션이며, 공식적으로 오픈소스가 되어 누구나 직접 운영할 수 있음
셀프 호스팅으로 공개된 Chatto
- Chatto는 지난 약 1년간 개발된 그룹·팀 채팅 애플리케이션이며, 공식적으로 오픈소스가 되어 누구나 직접 운영할 수 있음
- 가장 빠른 실행 방법은 Homebrew를 사용하는 것임
brew install chattocorp/tap/chatto
chatto init
chatto run
- 설치 절차는 Getting Started Guide에서 확인할 수 있음
- Slack, Teams, Discord 같은 그룹 채팅 앱과 비슷한 용도를 목표로 하면서도, 더 컴팩트하고 빠른 사용감을 강조함
- 실제 동작은 Chatto HQ Community에서 확인 가능함
서버 구조와 보안 모델
- 가장 기본적인 형태에서는 실행 파일 하나로 서버를 띄울 수 있고, 서버가 자체 프론트엔드도 함께 제공함
- 리소스 사용량이 낮으며, 개인 및 채팅 데이터는 사용자별 키로 저장 시 완전 암호화됨
- 사용자가 계정을 삭제하면 해당 사용자 키가 폐기됨
- 각 Chatto 서버는 단일 커뮤니티를 구동함
- 서버 간 데이터 페더레이션은 없음
- 서드파티 추적이나 분석도 없음
- 여러 서버에 동시에 머물고 싶으면 클라이언트가 각 서버에 직접 연결함
- 여러 커뮤니티를 호스팅하려면 Chatto 프로세스를 여러 개 실행하면 됨
- 음성·영상 통화와 화면 공유를 기본 지원함
- 통화는 종단간 암호화됨
- 참가자 수 확장은 사용자의 인프라가 감당할 수 있는 범위까지 가능함
배포 파일과 운영 자료
- 바이너리는 Linux x86_64·ARM64, macOS, Windows용으로 제공됨
- 셀프 호스팅 문서는 Chatto Self-Hosting Documentation에서 제공됨
- 관련 자료
- Chatto HQ Community:
#self-hosting지원 채널 제공 - GitHub Repository
- Chatto on Bluesky
- Chatto HQ Community:
Chatto Cloud와 유료 호스팅
- Chatto Cloud는 곧 공개 베타에 들어갈 예정이며, Chatto 서버 유료 호스팅만 제공함
- 프리미엄 구독, 광고, 기타 추가 요소는 없고 호스팅만 제공함
- 출시 시점의 인프라는 유럽 및 유럽 소유 인프라로 구성됨
- 더 많은 리전은 2027년 초 출시 예정임
- 모든 Chatto Cloud 서버는 자동 스케일링, 매일 밤 전체 데이터 백업, 무중단 버전 업그레이드를 제공함
- Chatto Cloud는 락인을 만들지 않는 방향임
- Chatto Cloud에서 호스팅되는 서버는 셀프 호스팅 서버와 100% 호환됨
- 언제든 데이터를 옮겨 Chatto Cloud 안팎으로 이동할 수 있음
0.4 상태와 1.0.0까지의 계획
- 현재 Chatto 버전은 0.4임
- 프로덕션 사용에 충분히 안정적이라고 간주됨
- 아직 몇 가지 중요한 기능은 빠져 있음
- 전체 계획은 Chatto Roadmap에서 볼 수 있음
- Chatto 0.5의 초점은 안전 기능과 클라이언트 개선임
- 콘텐츠 신고와 모더레이션 기능이 포함됨
- 특히 멀티 서버 기능을 다듬는 데 집중함
- Chatto 1.0.0은 약 6~12개월 뒤 도달할 것으로 예상됨
- 그 전까지는 파괴적 변경이 있을 수 있음
- 셀프 호스팅 사용자는 새 버전이 출시될 때 업데이트할 준비가 필요함
- 릴리스 소식이나 Chatto Cloud 베타 시작 알림은 Chatto announcements 뉴스레터로 받을 수 있으며, 발송 빈도는 약 월 1회임
댓글과 토론
mattermost 사용중인데 자꾸 엔터프라이즈쪽으로 유도하고 OSS 버전의 기능은 깎아내고있어서
충분히 성숙되면 mattermost에서 마이그레이션하는 툴을 하나 짜보고싶네요
Hacker News 의견들
-
자체 인프라에 셀프 호스팅하기 아주 쉽게 설계했다는 점이 좋음. 문서(https://docs.chatto.run/)를 보면 Chatto는 작고 독립적인 바이너리로 배포되고, 내장 스트림 영속성 엔진이 있는 경량 메시지 브로커 NATS를 사용하며, 외부 S3 호환 객체 저장소도 설정할 수 있다고 함
실제 통화는 LiveKit(Apache-2.0)으로 구동되고 Chatto와 함께 배포해야 하는데, NATS처럼 배포 예제가 필요한 연결 구성을 보여준다는 점도 좋음. 말뿐 아니라 실제 가이드를 갖춘 훌륭한 프로젝트임- 정말 멋짐. 선택지가 많아지는 건 항상 좋음. 다만 문서를 보면 데스크톱 애플리케이션이 있는지 헷갈림
스크린샷상으로는 있는 것 같은데, 그걸 다운로드하는 문서를 찾지 못했음 - Cloudflare나 Vercel처럼 쉽고 싸거나 무료에 가까운 곳에도 설치할 수 있는지 궁금함
- 정말 멋짐. 선택지가 많아지는 건 항상 좋음. 다만 문서를 보면 데스크톱 애플리케이션이 있는지 헷갈림
-
Hendrik을 몇 년간 알고 지냈는데, 지금까지 만난 개발자 중 손꼽히게 재능 있는 사람임. 이 프로젝트도 아주 빠르게 성공할 거라고 확신함
프로젝트 자체도 흥미롭지만, 에이전트형 코딩을 활용해 혼자 개발했다는 점이 특히 인상적임- 거의 30년 가까이 개인적으로 알고 지냈고, 여전히 지금까지 만난 개발자 중 가장 똑똑하고 경험 많고 호기심 많은 사람 중 하나임
전반적으로 좋은 사람이고, 언제든 다시 같이 일하고 싶음 - 그가 만든 다른 흥미로운 것도 있는지 궁금함
- 잠깐 관심이 있었는데, 오히려 이 말 때문에 피해야겠다는 쪽으로 설득됐음
- 거의 30년 가까이 개인적으로 알고 지냈고, 여전히 지금까지 만난 개발자 중 가장 똑똑하고 경험 많고 호기심 많은 사람 중 하나임
-
회사에 팔 생각이라면 “사용자가 계정을 삭제하면 사용자별 키를 파기한다”는 부분을 고민해야 함. 업무 메시지는 사용자 개인이 아니라 고용주에게 속하므로, 소프트 삭제가 필요함
- 그런 경우에는 사용자가 자기 계정을 직접 삭제하지 못하게 하면 될 것 같음. 그래도 대부분의 Chatto 사용자와 제공자에게는 자동으로 삭제권을 준수하는 방식이 좋아 보임
- 고용주가 목표 고객이 아닐 수도 있음
-
포르투갈어에서 “chato”가 “지루한”이라는 뜻이라 웃음이 났음. 그런데 이건 설정하고 쓰기 아주 쉬워 보임
더 많은 지루한 소프트웨어를 환영함- “성가신”이라는 뜻도 될 수 있음. 프로젝트나 회사 이름을 정하기 전에는, 적어도 사용자 수 상위 10개 언어에서 나쁜 뜻이 있는지 항상 검색해보는 게 좋음
포르투갈어/스페인어에서는 NSFW 속어일 가능성이 꽤 자주 있음
- “성가신”이라는 뜻도 될 수 있음. 프로젝트나 회사 이름을 정하기 전에는, 적어도 사용자 수 상위 10개 언어에서 나쁜 뜻이 있는지 항상 검색해보는 게 좋음
-
멋짐. 다만 웹사이트 어디에서도 모바일 지원이 있는지 알 수 없음
회사나 친구들을 옮기려면 모바일 지원은 필수임- 계획에는 있는 것 같음
https://github.com/orgs/chattocorp/projects/1?pane=issue&ite... - iOS 앱에 알림을 보내려면 앱 게시자가 알림을 보내야 한다는 점을 유의해야 함. 즉 이벤트 전달 프록시 서비스를 운영해야 함
Mattermost, Element/Matrix, 아마 일부 또는 전체 ActivityPub 클라이언트가 이런 식으로 하는 듯함. 아니면 서버를 셀프 호스팅한다는 것이 클라이언트 앱도 App Store와 Apple 개발자 프로그램 비용을 통해 직접 배포해야 한다는 뜻이 됨
- 계획에는 있는 것 같음
-
계속 지켜볼 생각임. 현재 Mattermost를 쓰고 있지만 가격 체계가 꽤 들쭉날쭉하고 엔터프라이즈를 겨냥해서, 지금은 기능이 많이 제한된 오픈소스 버전을 계속 쓰는 중임
게다가 영상 통화가 아쉬웠는데, Chatto에 그 기능이 있어서 좋음 -
이중 라이선스를 둔 이유가 궁금함. Go 백엔드는 AGPL인데 TypeScript 프런트엔드는 Apache 2.0으로 보임
왜 전부 AGPL로 두지 않았는지 궁금함- 백엔드를 AGPL로 두면 누군가 그걸 서비스로 호스팅하는 걸 막을 수 있음. AGPL은 호스팅도 배포로 보기 때문에, 호스팅하는 누구든 코드를 공개해야 함
그래서 자체 Cloud를 운영하는 데 부드러운 형태의 독점성을 제공함. 반면 프런트엔드는 커스터마이징, 화이트라벨링 등을 허용하려면 더 관대한 라이선스가 더 말이 됨
Grafana가 좋은 예임. 2021년에 Apache에서 AGPLv3로 옮긴 이유가 클라우드 제공자가 수정 버전을 기여 없이 호스팅하지 못하게 하기 위해서였고, 플러그인은 Apache 라이선스로 유지했음 - AGPL은 다른 쪽이 Go 백엔드를 사용해 경쟁 클라우드 서비스를 운영하는 걸 막음. 프런트엔드에는 별 효과가 없고, 엔터프라이즈 사용자만 겁먹게 할 뿐임
- 백엔드를 AGPL로 두면 누군가 그걸 서비스로 호스팅하는 걸 막을 수 있음. AGPL은 호스팅도 배포로 보기 때문에, 호스팅하는 누구든 코드를 공개해야 함
-
셀프 호스팅 후에 다운로드, 설치, 로그인 사전 설정까지 해주는 패키지나 링크를 생성할 수 있으면 정말 좋겠음. 특정 사람에게 연결된 맞춤형 설치 프로그램이나 설정 스크립트 같은 형태임
목표는 온보딩 마찰을 최대한 줄이는 것임. 링크가 실수로 공유되는 등 보안상 영향이 있을 수 있지만, 작은 셀프 호스팅 인스턴스라면 비교적 쉽게 완화할 수 있어 보임. 로컬 계정에서만 동작하게 할 수도 있음
이렇게 되면 친구에게 “여기서 나랑 채팅하자”라는 링크를 보내기 쉬워지고, “이미 Discord 쓰고 있어서 그런 거 다 설정하기 싫다”는 반응을 걱정하지 않아도 됨- “인스턴스 링크를 줄 테니 거기서 가입해” 이상의 무엇을 기대하는지 궁금함. Discord식 역할과 결합해서 채널 가시성과 권한을 역할로 제한할 수 있음
다른 사람이 가입하더라도 예를 들어 “내부 그룹” 역할을 주지 않으면 됨. 일회성 토큰이 있는 초대 링크 같은 걸 생각하는 건지 궁금함
- “인스턴스 링크를 줄 테니 거기서 가입해” 이상의 무엇을 기대하는지 궁금함. Discord식 역할과 결합해서 채널 가시성과 권한을 역할로 제한할 수 있음
-
아주 좋음. 예전에 비슷한 생각을 했는데, 많은 회사가 알림을 모으고 간단한 봇 동작을 수행할 무언가를 원하지만, 꼭 특정 채팅 제공자에 묶이고 싶어 하지는 않음
여러 통합의 프런트엔드, 또는 내부 채팅만으로도 쓰일 수 있다면 정말 흥미로울 것 같음 -
Mattermost와 비교했을 때 Chatto의 장단점이 무엇인지 알고 싶음
덧붙여 Chatto 백엔드가 Go로 구현된 건 매우 반가움. Go는 이런 용도에 아주 잘 맞음