# Ergo Chat - Go 언어로 작성된 현대적 IRC 서버

> Clean Markdown view of GeekNews topic #18335. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18335](https://news.hada.io/topic?id=18335)
- GeekNews Markdown: [https://news.hada.io/topic/18335.md](https://news.hada.io/topic/18335.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-19T09:56:06+09:00
- Updated: 2024-12-19T09:56:06+09:00
- Original source: [github.com/ergochat](https://github.com/ergochat/ergo)
- Points: 16
- Comments: 4

## Summary

Go 언어로 작성된 현대적인 IRC 서버로, 설정과 사용의 간편함을 중시하며 IRCv3 지원과 YAML 설정 파일을 통한 높은 커스터마이징을 제공합니다. 통합 서비스로 NickServ, ChanServ, HostServ를 제공하며, TLS/SSL 지원, SASL 인증, LDAP 지원 등 다양한 보안 기능을 갖추고 있습니다. 또한, 여러 클라이언트가 동일한 닉네임을 사용할 수 있는 바운서 기능과 서버 설정의 실시간 업데이트가 가능하며, Dockerfile과 예제 docker-compose 레시피가 제공됩니다.

## Topic Body

- 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` 명령어로 빌드 가능.  
  
### 설정  
- 기본 설정 파일 `default.yaml`을 통해 각 옵션의 의미와 변경 사항을 설명함.  
- 로그는 기본적으로 stderr로만 전송되며, 파일로 전송하거나 systemd를 사용하여 시스템 저널로 전송 가능.  
  
### 비밀번호  
- 비밀번호는 bcrypt로 저장되며, `genpasswd` 서브커맨드를 사용하여 암호화된 문자열 생성 가능.  
  
### 닉네임 및 채널 등록  
- 사용자 계정을 통해 여러 클라이언트가 동일한 닉네임을 사용할 수 있으며, NickServ를 통해 닉네임을 계정으로 등록 가능.  
- 닉네임 등록 후 채널을 등록할 수 있음.

## Comments



### Comment 32522

- Author: xguru
- Created: 2024-12-19T10:02:03+09:00
- Points: 3

용도에 따라서는 계정등이 필요한 슬랙/디스코드가 부담스런 경우가 있는데, 웹 클라이언트도 잘 지원되니 한번 도입해 보고 싶네요.

### Comment 32548

- Author: ifmkl
- Created: 2024-12-20T08:23:09+09:00
- Points: 1
- Parent comment: 32522
- Depth: 1

오 진짜 재밌을듯합니다.. 회사에서 또하나의 월루할 채널이 생기...

### Comment 32535

- Author: bbulbum
- Created: 2024-12-19T10:55:08+09:00
- Points: 3
- Parent comment: 32522
- Depth: 1

오.. 긱뉴스 IRC 채널 생기면 재밌겠어요

### Comment 32521

- Author: neo
- Created: 2024-12-19T09:56:06+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42447071) 
- Ergo를 지난 1년간 친구와 가족 채팅에 사용해왔음. 호스팅이 쉽고 자원 요구가 낮으며, 이해하고 디버그하기 쉬운 프로토콜과 코드베이스를 제공함
  - v3 채팅 기록 지원과 항상 켜져 있는 멀티 클라이언트 기능이 현대적인 채팅 환경을 제공함
  - 내장된 웹소켓 지원으로 웹 클라이언트를 제공할 수 있음

- IRC는 종종 낭만적으로 여겨지지만, 프로토콜 사양을 다루면서 비구조적인 메시지 형식이 문제를 일으킴
  - 각 구현이 고유한 특성과 변형을 도입하여 수많은 엣지 케이스와 복잡한 파싱 코드를 만듦
  - 현대적이고 간단한 채팅 프로토콜이 필요하다고 생각함

- Slack, Discord 외에도 다양한 선택지가 있다는 것을 보는 것이 좋음
  - 가족과 회사용으로 Matrix를 선택했으며, IRC의 "항상 켜져 있는" 기능에 대해 몰랐음

- Ergo가 다른 IRC 서버와 연결할 수 있는지 궁금함. 기존 ngircd와 연결해보고 싶음

- 채팅 운영을 온프레미스로 가져오기 위한 적절한 시기임. 명령어와 채팅 로그가 유용함

- Slack과 같은 소프트웨어를 대체하길 바람

- 1년 전 친구들을 위해 Oragono라는 서버를 사용했으며, 추천함

- 특정 채널로 웹훅을 보낼 수 있는지 궁금함

- IRC의 채팅 기록/백로그 부족이 자주 언급되지만, 백로그는 커뮤니티에 있어서는 안티 기능이라고 생각함
  - 서버 측 백로그가 없으면 채팅은 일시적이며, 중요한 내용을 보존하기 위해 다른 곳에 저장해야 함
