GN⁺: Ergo Chat - Go 언어로 작성된 현대적 IRC 서버
(github.com/ergochat)- Ergo는 Go 언어로 작성된 현대적인 IRC 서버로, 이전에는 Oragono 였음
- 주요 설계 원칙 : 설정과 사용의 간편함, ircd와 서비스 프레임워크, 바운서 기능의 통합, IRCv3 지원, YAML 설정 파일을 통한 높은 커스터마이징 지원
- Ergo는 Ergonomadic IRC 데몬의 포크임
기능
- 통합 서비스: 사용자 계정을 위한 NickServ, 채널 등록을 위한 ChanServ, Vanity 호스트를 위한 HostServ 제공.
- 바운서 기능: 히스토리 저장 및 재생, 여러 클라이언트가 동일한 닉네임 사용 가능.
- TLS/SSL 지원, 클라이언트 인증서 지원 포함.
- IRCv3 지원.
- YAML 설정 파일 사용.
- 서버 설정 및 TLS 인증서의 실시간 업데이트 가능.
- SASL 인증 및 LDAP 지원.
- 여러 언어 지원 및 네트워크 기본 언어 설정 가능.
- UTF-8 닉 및 채널 이름 지원 옵션.
- 고급 보안 및 개인정보 보호 기능 제공.
- IRC 운영자를 위한 확장 가능한 권한 시스템.
- 사용자 이름을 위한 ident 조회.
- 자동화된 클라이언트 연결 제한.
- bcrypt로 저장된 비밀번호.
-
UBAN
시스템을 통한 통합 차단 기능. - 사양을 준수한 개발에 중점.
빠른 시작 가이드
- 최신 릴리스를 다운로드하고 압축을 해제한 후 설정 파일을 수정하여 서버를 실행할 수 있음
- Arch Linux AUR 및 Gentoo Linux에 Ergo 패키지가 유지 관리되고 있음.
- Dockerfile과 예제 docker-compose 레시피가 제공됨
- 소스에서 빌드
- 최신 Go 언어 배포판이 필요하며, 원하는 브랜치나 태그를 체크아웃한 후
make
명령어로 빌드 가능.
- 최신 Go 언어 배포판이 필요하며, 원하는 브랜치나 태그를 체크아웃한 후
설정
- 기본 설정 파일
default.yaml
을 통해 각 옵션의 의미와 변경 사항을 설명함. - 로그는 기본적으로 stderr로만 전송되며, 파일로 전송하거나 systemd를 사용하여 시스템 저널로 전송 가능.
비밀번호
- 비밀번호는 bcrypt로 저장되며,
genpasswd
서브커맨드를 사용하여 암호화된 문자열 생성 가능.
닉네임 및 채널 등록
- 사용자 계정을 통해 여러 클라이언트가 동일한 닉네임을 사용할 수 있으며, NickServ를 통해 닉네임을 계정으로 등록 가능.
- 닉네임 등록 후 채널을 등록할 수 있음.
Hacker News 의견
-
Ergo를 지난 1년간 친구와 가족 채팅에 사용해왔음. 호스팅이 쉽고 자원 요구가 낮으며, 이해하고 디버그하기 쉬운 프로토콜과 코드베이스를 제공함
- v3 채팅 기록 지원과 항상 켜져 있는 멀티 클라이언트 기능이 현대적인 채팅 환경을 제공함
- 내장된 웹소켓 지원으로 웹 클라이언트를 제공할 수 있음
-
IRC는 종종 낭만적으로 여겨지지만, 프로토콜 사양을 다루면서 비구조적인 메시지 형식이 문제를 일으킴
- 각 구현이 고유한 특성과 변형을 도입하여 수많은 엣지 케이스와 복잡한 파싱 코드를 만듦
- 현대적이고 간단한 채팅 프로토콜이 필요하다고 생각함
-
Slack, Discord 외에도 다양한 선택지가 있다는 것을 보는 것이 좋음
- 가족과 회사용으로 Matrix를 선택했으며, IRC의 "항상 켜져 있는" 기능에 대해 몰랐음
-
Ergo가 다른 IRC 서버와 연결할 수 있는지 궁금함. 기존 ngircd와 연결해보고 싶음
-
채팅 운영을 온프레미스로 가져오기 위한 적절한 시기임. 명령어와 채팅 로그가 유용함
-
Slack과 같은 소프트웨어를 대체하길 바람
-
1년 전 친구들을 위해 Oragono라는 서버를 사용했으며, 추천함
-
특정 채널로 웹훅을 보낼 수 있는지 궁금함
-
IRC의 채팅 기록/백로그 부족이 자주 언급되지만, 백로그는 커뮤니티에 있어서는 안티 기능이라고 생각함
- 서버 측 백로그가 없으면 채팅은 일시적이며, 중요한 내용을 보존하기 위해 다른 곳에 저장해야 함