IRC 표준으로 작동하는 연합형 채팅 네트워크 Parley
원제 Parley: Federated, decentralised chat that speaks plain IRC
177 포인트댓글 83
Key Point
IRC 클라이언트를 그대로 쓰면서 중앙 통제 없이 서로 다른 인스턴스 간에 채팅하는 연합형 네트워크를 실현했으며, 온전한 기술 명세와 Docker 배포 가능한 구현을 제공한다.
핵심 요약
- Parley는 중앙 서버 없이 DNS와 HTTPS 서명으로 개별 인스턴스들이 연결되는 분산 채팅 네트워크다.
- 일반 IRC 클라이언트(irssi, WeeChat, Textual 등)로 바로 접속하며, alice@foo.com처럼 이메일 형식의 정체성을 사용한다.
- 전역 채널 #dev는 연결된 모든 인스턴스에 복제되고, 로컬 채널 ¬es는 해당 인스턴스에만 존재한다.
- IRCv3 서버-타임, 메시지-태그, 에코-메시지 등을 지원하고, 채팅 이력은 SQLite에 저장되어 전문 검색 가능하다.
- 각 인스턴스는 고유한 ed25519 공개키를 가지며, 피어 간 모든 이벤트는 JSON 문서로 서명되어 HTTPS로 전달된다.
- 계정 관리는 데이터베이스에서 이루어지며, OpenID Connect나 역프록시 헤더를 통한 싱글 사인온을 지원한다.
- 최근 커밋에서 멘션 알림이 의도한 사용자에게만 전달되도록 수정했으며, 정규화된 별명(bob:bar.com) 형식으로 명확히 구분한다.
- 도커 컨테이너 이미지 prologic/parley와 docker-compose 설정 파일을 제공하고, parleyctl 관리 도구로 계정·토큰·설정을 관리한다.
- 프로덕션 환경에서는 실제 도메인, TLS 인증서, SRV 레코드가 필요하며, 리버스 프록시에서 TLS를 종료한다.
- 메시지 레이트 제한, 동시 연결 제한, 채널 이력 보관 기간 등의 설정은 재시작 없이 변경 가능하다.
- 현재 작동하는 개념 증명(proof of concept) 단계이며, 실제 인스턴스가 운영 중이지만 아직 보안 강화가 필요하다.