# AIM 서버를 직접 호스팅하는 방법

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=31533](https://news.hada.io/topic?id=31533)
- GeekNews Markdown: [https://news.hada.io/topic/31533.md](https://news.hada.io/topic/31533.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-07-18T09:02:47+09:00
- Updated: 2026-07-18T09:02:47+09:00
- Original source: [veronicaexplains.net](https://veronicaexplains.net/open-oscar-server/)
- Points: 1
- Comments: 1

## Topic Body

- [Open OSCAR Server]를 이용하면 Debian 서버에 **AIM/ICQ 서버**를 구축해 Windows 98을 비롯한 구형 환경의 여러 클라이언트를 다시 연결할 수 있음
- 소규모 운영에는 저사양 VPS로도 충분하지만, 외부 친구와 이용하려면 **기본 포트 5190**과 고정 IP 또는 동적 DNS, 인터넷 공개에 맞는 방화벽 설정이 필요함
- `settings.env`의 `OSCAR_LISTENERS`와 `OSCAR_ADVERTISED_LISTENERS_PLAIN`을 **LAN 또는 WAN 모드**에 맞추고, AIM 클라이언트가 폐쇄된 AOL 서버 대신 자체 서버에 접속하도록 변경함
- 기본 상태에서는 임의의 화면 이름과 비밀번호로 로그인할 수 있어 `DISABLE_AUTH=false`로 **비밀번호 인증**을 활성화하고 API로 계정을 관리해야 함
- 서버 상태가 SQLite 데이터베이스와 설정 파일에 저장되므로, 야간 전체 백업이나 서버 중지 후 `rsync` 복사로 **복구 가능한 AIM 환경**을 유지할 수 있음

---

### Discord 대신 AIM을 다시 운영한 이유
- 휴대전화와 문자 메시지가 보편화되기 전에는 학교 프로젝트부터 인간관계까지 많은 활동이 **AIM 창**에서 이뤄졌고, 이런 경험이 AIM에 대한 향수로 이어짐
- 최근 Discord 사용 경험이 좋지 않아 [Open OSCAR Server](https://github.com/mk6i/open-oscar-server?ref=veronicaexplains.net)를 시험했으며, 자체 AIM/ICQ 서버에 여러 구형 클라이언트를 연결할 수 있었음
- 구축 과정은 [YouTube 영상](https://www.youtube.com/watch?v=VDQTuJWST4M&ref=veronicaexplains.net)과 [PeerTube 영상](https://makertube.net/w/dVCTYsbMqChaWktWDZNmMd?ref=veronicaexplains.net)에서도 다뤘으며, Macintosh Librarian의 [별도 영상](https://www.youtube.com/watch?v=KxKeugklbXM&ref=veronicaexplains.net)은 AIM 자체를 더 자세히 소개함

### Debian Trixie 서버 준비
- 설치 대상은 **Debian Trixie**이며, 운영체제 자체의 설치 과정은 다루지 않음
- 수백 명과 대화할 계획이 아니라면 저사양 VPS에서도 운영 가능함
  - 처음에는 집에서 호스팅했지만 친구들과 공유하기 시작하면서 최하위 요금제 VPS로 이전함
  - Raspberry Pi에서도 동작할 가능성이 있으나 직접 시험하지는 않음
- 집이나 방화벽 뒤에서 운영한다면 AIM 클라이언트가 접속할 **기본 포트 5190**을 열어야 함
  - 일부 클라이언트는 포트 변경이 쉽지 않아 기본 포트를 유지하는 편이 나음
- 고정 IP가 없는 가정용 환경에서는 동적 DNS가 필요함
  - 직접 사용한 서비스는 No-IP이며 결과에 만족함
  - 동적 DNS가 익숙하지 않다면 월 **5~10달러**의 클라우드 서버에서 고정 IP와 더 간단한 구성을 이용할 수 있음
  - 어느 방식을 택하든 서버는 고정 IP나 도메인으로 접근 가능해야 하며 5190 포트가 열려 있어야 함
- Open OSCAR Server의 기본값은 홈 네트워크에서 시험하기에는 편하지만 인터넷 공개에는 적합하지 않음
  - 설정을 잠그기 전까지는 **자신의 트래픽만 허용**하고, 방화벽에서 다른 출발지의 접속을 거부하는 방식을 권장함

### Open OSCAR Server 설치
- [GitHub 저장소](https://github.com/mk6i/open-oscar-server/?ref=veronicaexplains.net)에서 `.tar.gz` 릴리스를 내려받음

```bash
wget [RELEASE URL]
```

- `[RELEASE URL]`은 실제 릴리스 파일 주소로 바꿔야 함
- 내려받은 압축 파일은 `tar`로 해제함

```bash
tar -zxvf open_oscar_server.X.XX.X.linux.x86_64.tar.gz
```

- `X.XX.X`는 내려받은 **실제 버전 번호**로 교체함

### 수신 모드와 서버 주소 설정
- 로컬 머신에서만 실행한다면 압축을 푼 하위 디렉터리로 이동해 바로 실행할 수 있음
- 다른 머신의 클라이언트를 연결하려면 `settings.env`를 편집해야 함
- Open OSCAR Server는 세 가지 **클라이언트 수신 모드**를 지원함
  - `LOCAL`: 기본값이며 AIM 클라이언트와 서버가 같은 머신에 있을 때 사용함
  - `LAN`: 서버와 AIM 클라이언트가 같은 내부 네트워크에 있고 인터넷을 거치지 않을 때 사용함
  - `WAN`: 인터넷을 통해 외부 친구의 AIM 클라이언트를 연결할 때 사용함
- `settings.env`에서는 두 변수를 함께 설정함
  - `OSCAR_LISTENERS`: Open OSCAR Server가 연결을 수신하는 방식을 지정함
  - `OSCAR_ADVERTISED_LISTENERS_PLAIN`: AIM 같은 클라이언트에 알려줄 서버 주소를 지정함
- 도메인이 `example.domain`인 공개 VPS라면 다음과 같이 구성할 수 있음

```text
OSCAR_LISTENERS=WAN://0.0.0.0:5190
OSCAR_ADVERTISED_LISTENERS_PLAIN=WAN://example.domain:5190
```

- 내부 네트워크에서는 `WAN`을 `LAN`으로 바꾸고, 도메인 대신 서버에 할당한 IP 주소를 사용함
- 두 변수의 모드는 반드시 **`LAN`과 `LAN`, 또는 `WAN`과 `WAN`** 처럼 일치해야 함
  - 양쪽 변수에 두 모드를 모두 지정하는 구성도 가능함
- 설정을 마치면 다음 명령으로 서버를 시험 실행함

```bash
./open_oscar_server
```

### AIM 클라이언트 연결
- 여러 AIM 버전에서는 현재 폐쇄된 기본 로그인 서버 `login.oscar.aol.com`을 다른 주소로 교체할 수 있음
- AIM 5.1에서는 `Setup`의 큰 **`Configuration` 버튼**을 통해 서버 주소를 변경함
- 기본 로그인 서버 주소를 `OSCAR_ADVERTISED_LISTENERS_PLAIN`에 지정한 주소로 교체하면 됨
- 인증을 강화하기 전에는 임의의 화면 이름과 비밀번호를 입력해 로그인할 수 있음
- 다른 이용자의 접속 조건은 서버 모드에 따라 달라짐
  - `LAN` 모드에서는 서버와 같은 네트워크에 있어야 함
  - `WAN` 모드에서는 외부 이용자가 방화벽을 통과할 수 있도록 접근 권한을 제공해야 함

### systemd로 서버 상시 실행
- Open OSCAR Server는 SSH 연결이 끊긴 뒤에도 서버를 계속 실행할 수 있는 **systemd 서비스**를 함께 제공함
- 서비스 설치와 설정은 프로젝트의 [SYSTEMD 문서](https://github.com/mk6i/open-oscar-server/blob/main/docs/SYSTEMD.md?ref=veronicaexplains.net)를 따르면 됨

### 비밀번호 인증 활성화
- 기본 상태에서는 실제 비밀번호를 검증하지 않으므로 systemd 서비스 파일에서 `DISABLE_AUTH`를 변경해야 함
- 다음 명령으로 전체 서비스 파일을 기본 편집기에서 수정함

```bash
sudo systemctl edit --full ras.service
```

- `[Service]` 아래의 환경 변수를 다음처럼 설정함

```ini
Environment="DISABLE_AUTH=false"
```

- 변수 이름이 이중 부정 형태이므로 인증을 요구하려면 값이 **`false`** 여야 함
- 서비스 파일을 저장한 뒤 systemd 데몬 설정을 다시 불러옴

```bash
sudo systemctl daemon-reload
```

- 기존 화면 이름과 비밀번호로 로그인을 다시 시험하고, 실패하면 API로 새 사용자를 생성할 수 있음

### API로 사용자와 비밀번호 관리
- 인증을 활성화한 뒤에는 Open OSCAR Server의 API와 `curl`로 사용자 및 비밀번호를 관리함
- ## 사용자 추가
  ```bash
  curl -d'{"screen_name":"NEWUSERNAME", "password":"NEWPASSWORD"}' http://localhost:8080/user
  ```
  - `curl`의 `-d` 옵션으로 **POST 데이터**를 전송함
  - JSON 본문에는 `screen_name`과 `password` 키를 넣음
  - 요청 대상은 로컬 서버의 `http://localhost:8080/user` 엔드포인트임
- ## 기존 사용자 비밀번호 변경
  ```bash
  curl -X PUT -d'{"screen_name":"NEWUSERNAME", "password":"NEWPASSWORD"}' http://localhost:8080/user/password
  ```
  - 기존 사용자 갱신에는 POST 대신 **`-X PUT`** 을 사용함
  - `screen_name`에는 이미 존재하는 화면 이름을 지정해야 함
  - 비밀번호 변경 엔드포인트는 `http://localhost:8080/user/password`임
  - API는 사용자 삭제와 채팅방 추가 등도 지원하며, 다른 기능은 [프로젝트 문서](https://github.com/mk6i/open-oscar-server?ref=veronicaexplains.net#macos--linux--freebsd)에서 확인할 수 있음

### 백업과 복구
- Open OSCAR Server의 주요 상태는 **SQLite 데이터베이스와 설정 파일**로 구성돼 백업이 단순함
- VPS 전체 시스템을 매일 밤 백업하고 있으며, 복원 시험에서도 예상대로 동작함
- 큰 변경 전에는 서버를 중지한 뒤 작업 디렉터리 전체를 `rsync`로 백업 머신에 복사함
- [Borgmatic](https://torsion.org/borgmatic/?ref=veronicaexplains.net)을 사용하면 백업 과정을 더 간단하게 만들 수 있으며, 후속 글에서 자세히 다룰 계획임

## Comments



### Comment 61970

- Author: neo
- Created: 2026-07-18T09:02:49+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/4dcp6w/here_s_how_i_host_my_own_aim_server) 
- 재미있게 읽었지만, 과거에는 메신저 종류가 많지 않았다고 생각하면 착각임. AIM이나 MSN에서 오랜 시간을 보낸 사람도 많았지만, 나와 학교 친구들은 둘 다 쓰지 않고 **ICQ에서 IRC로** 옮겨 갔으며 서비스 파편화도 지금보다 딱히 낫지 않았음
  - 그래도 당시에는 여러 메신저를 **한곳에서 이용하는 통합 클라이언트**가 있었음
  - 맞는 말임. 2005년에 Google Talk의 Jabber 서버에 적절한 **서버 간 연합 계획**이 없다는 내용으로 썼다가 Slashdot에 소개된 LiveJournal 글이 떠오름  
    https://nugget.livejournal.com/97081.html  
    한 달 뒤 Google의 답변을 받고 쓴 후속 글도 있음  
    https://nugget.livejournal.com/103322.html
  - 지역별 차이가 크지 않았나 싶음. **미국은 AIM**, 유럽은 ICQ를 주로 썼던 것으로 기억함

- 이 주제를 다룬 [영상](https://www.youtube.com/watch?v=VDQTuJWST4M)도 있음. 직접 올리려다가 다소 낚시성인 원래 제목을 유지할지, [DeArrow](https://dearrow.ajay.app/)가 제공한 제목을 쓸지 고민했음
  - 영상 제목이 꼭 낚시성으로 느껴지지는 않았지만, 대체로 영상보다는 **블로그 글**을 선호함

- 재미있지만 글을 읽으며 기대했던 답은 “그래서 그다음에는?”이었음. 다른 서버와 **연합되지 않는다면** 대화하려는 모두가 같은 서버에 있어야 하는지, 아니면 혼자 이야기하는 용도인지 궁금함
  - 여러 서버에 가입하면 무엇이 문제인지 모르겠음. 사실상 **Discord가 표방하는 방식**도 그런 구조임

- 글 첫머리에 마땅히 들어가야 할 **정석 스크린샷**을 놓치지 않았음. 당시 소프트웨어의 실용성과 유용성은 정말 잘 다듬어져 있었음

- AIM 자체에는 관심이 없지만, 사람들이 **옛 기술을 다시 만져 보는 모습**은 즐거움. 저자의 다른 글까지 둘러보다 보니 또 여러 탐구의 늪에 빠질 것 같은데, 그것도 나쁘지 않아 보임

- ICQ와 AIM 시대 자체는 전혀 그립지 않지만, 그 말미에는 업계의 짧은 **황금기**가 있었음. 서버 간 연합이 가능한 XMPP와 다른 프로토콜로 이어 주는 게이트웨이 덕분에 직접 서버를 만들거나 남의 서버에 계정을 두고 누구와도 대화할 수 있었음  
  게이트웨이로 연결한 네트워크의 계정도 유지해야 했지만 대부분 아주 가끔 손보면 충분했고, 계정 하나로 Google Talk·Facebook Messenger·ICQ·MSN 사용자와 모두 대화할 수 있었음. 유독 Skype만 완강하게 호환을 거부했음  
  이제는 문화가 놀라울 정도로 달라져, 오픈 소스인 Signal조차 **외부 클라이언트**를 막는데도 마땅한 반감을 사기는커녕 어느 정도 합리적인 요구로 받아들여짐. 우리가 더는 누릴 자격이 없어서 황금기를 잃은 듯함
