AIM 서버를 직접 호스팅하는 방법
(veronicaexplains.net)- [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를 시험했으며, 자체 AIM/ICQ 서버에 여러 구형 클라이언트를 연결할 수 있었음
- 구축 과정은 YouTube 영상과 PeerTube 영상에서도 다뤘으며, Macintosh Librarian의 별도 영상은 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 저장소에서
.tar.gz릴리스를 내려받음
wget [RELEASE URL]
[RELEASE URL]은 실제 릴리스 파일 주소로 바꿔야 함- 내려받은 압축 파일은
tar로 해제함
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라면 다음과 같이 구성할 수 있음
OSCAR_LISTENERS=WAN://0.0.0.0:5190
OSCAR_ADVERTISED_LISTENERS_PLAIN=WAN://example.domain:5190
- 내부 네트워크에서는
WAN을LAN으로 바꾸고, 도메인 대신 서버에 할당한 IP 주소를 사용함 - 두 변수의 모드는 반드시
LAN과LAN, 또는WAN과WAN처럼 일치해야 함- 양쪽 변수에 두 모드를 모두 지정하는 구성도 가능함
- 설정을 마치면 다음 명령으로 서버를 시험 실행함
./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 문서를 따르면 됨
비밀번호 인증 활성화
- 기본 상태에서는 실제 비밀번호를 검증하지 않으므로 systemd 서비스 파일에서
DISABLE_AUTH를 변경해야 함 - 다음 명령으로 전체 서비스 파일을 기본 편집기에서 수정함
sudo systemctl edit --full ras.service
[Service]아래의 환경 변수를 다음처럼 설정함
Environment="DISABLE_AUTH=false"
- 변수 이름이 이중 부정 형태이므로 인증을 요구하려면 값이
false여야 함 - 서비스 파일을 저장한 뒤 systemd 데몬 설정을 다시 불러옴
sudo systemctl daemon-reload
- 기존 화면 이름과 비밀번호로 로그인을 다시 시험하고, 실패하면 API로 새 사용자를 생성할 수 있음
API로 사용자와 비밀번호 관리
- 인증을 활성화한 뒤에는 Open OSCAR Server의 API와
curl로 사용자 및 비밀번호를 관리함 -
사용자 추가
curl -d'{"screen_name":"NEWUSERNAME", "password":"NEWPASSWORD"}' http://localhost:8080/usercurl의-d옵션으로 POST 데이터를 전송함- JSON 본문에는
screen_name과password키를 넣음 - 요청 대상은 로컬 서버의
http://localhost:8080/user엔드포인트임
-
기존 사용자 비밀번호 변경
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는 사용자 삭제와 채팅방 추가 등도 지원하며, 다른 기능은 프로젝트 문서에서 확인할 수 있음
- 기존 사용자 갱신에는 POST 대신
백업과 복구
- Open OSCAR Server의 주요 상태는 SQLite 데이터베이스와 설정 파일로 구성돼 백업이 단순함
- VPS 전체 시스템을 매일 밤 백업하고 있으며, 복원 시험에서도 예상대로 동작함
- 큰 변경 전에는 서버를 중지한 뒤 작업 디렉터리 전체를
rsync로 백업 머신에 복사함 - Borgmatic을 사용하면 백업 과정을 더 간단하게 만들 수 있으며, 후속 글에서 자세히 다룰 계획임
댓글과 토론
Lobste.rs 의견들
-
재미있게 읽었지만, 과거에는 메신저 종류가 많지 않았다고 생각하면 착각임. 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를 주로 썼던 것으로 기억함
-
이 주제를 다룬 영상도 있음. 직접 올리려다가 다소 낚시성인 원래 제목을 유지할지, DeArrow가 제공한 제목을 쓸지 고민했음
- 영상 제목이 꼭 낚시성으로 느껴지지는 않았지만, 대체로 영상보다는 블로그 글을 선호함
-
재미있지만 글을 읽으며 기대했던 답은 “그래서 그다음에는?”이었음. 다른 서버와 연합되지 않는다면 대화하려는 모두가 같은 서버에 있어야 하는지, 아니면 혼자 이야기하는 용도인지 궁금함
- 여러 서버에 가입하면 무엇이 문제인지 모르겠음. 사실상 Discord가 표방하는 방식도 그런 구조임
-
글 첫머리에 마땅히 들어가야 할 정석 스크린샷을 놓치지 않았음. 당시 소프트웨어의 실용성과 유용성은 정말 잘 다듬어져 있었음
-
AIM 자체에는 관심이 없지만, 사람들이 옛 기술을 다시 만져 보는 모습은 즐거움. 저자의 다른 글까지 둘러보다 보니 또 여러 탐구의 늪에 빠질 것 같은데, 그것도 나쁘지 않아 보임
-
ICQ와 AIM 시대 자체는 전혀 그립지 않지만, 그 말미에는 업계의 짧은 황금기가 있었음. 서버 간 연합이 가능한 XMPP와 다른 프로토콜로 이어 주는 게이트웨이 덕분에 직접 서버를 만들거나 남의 서버에 계정을 두고 누구와도 대화할 수 있었음
게이트웨이로 연결한 네트워크의 계정도 유지해야 했지만 대부분 아주 가끔 손보면 충분했고, 계정 하나로 Google Talk·Facebook Messenger·ICQ·MSN 사용자와 모두 대화할 수 있었음. 유독 Skype만 완강하게 호환을 거부했음
이제는 문화가 놀라울 정도로 달라져, 오픈 소스인 Signal조차 외부 클라이언트를 막는데도 마땅한 반감을 사기는커녕 어느 정도 합리적인 요구로 받아들여짐. 우리가 더는 누릴 자격이 없어서 황금기를 잃은 듯함