끊김 감시·자동 업데이트·백업
조용히 멈췄을 때 알아채는 장치
하트비트와 끊김 알림으로 봇이 멈춘 것을 알아채고, 서명된 자동 업데이트의 개념과 키 백업 원칙을 이해합니다.
예상 소요 시간 약 45분
봇은 만드는 것보다 멎은 걸 알아채는 게 일이에요
실패하면 침묵하도록 만들었기 때문에, 멈춰도 방에서는 아무 일도 안 일어나요. 그래서 밖에서 상태를 볼 장치가 필요해요.
감시의 세 층
- 하트비트: 폰 봇이 몇 분마다 서버에 "살아 있다 + 카운터"를 올려요. 한참 안 오면 폰·네트워크·로더가 원인이에요. 방 문제를 보기 전에 여기서 멈춰요.
- 방별 카운터: 방마다 수신·호출어 감지·응답 성공/실패·무시된 이유(쿨다운·한도·정지·허용 방 아님)를 세요. 메시지 원문과 이용자 이름은 보내지 않아요.
- 이상 판정: 서버가 계산해요. 하트비트 끊김, 호출은 있는데 응답이 0, 허용하지 않은 방에서 호출 수신, 오류 연속, 폰 버전이 최신보다 낮음.
카운터는 폰이 재시작되면 0부터 다시 세요.
읽는 순서
- 맨 위 하트비트
- 버전 줄: 폰 버전이 서버 최신보다 낮은데 한참 지났으면 업데이트 실패
- 방별 표: 수신 0 → 폰이 그 방을 못 봄(알림 권한·방 알림). 수신 있고 호출 0 → 호출어로 시작하지 않음. 호출 있고 허용 아님 → 방 식별 불일치. 허용인데 응답 0 → 무시 이유 열을 봄
- 그래도 모르면 폰이 연결돼 있을 때만 로그를 봐요
서버에 하트비트·방별 카운터를 받는 API와, 내 컴퓨터에서 상태를 한 화면으로 보여 주는 스크립트(
status)를 만들어줘. 카운터에는 메시지 원문과 사람 이름을 절대 넣지 마. 하트비트가 일정 시간 없으면 '이상'으로 표시하는--check옵션도 만들어줘.
끊김 알림
화면을 열어 봐야만 알 수 있으면 늦어요. 하트비트가 몇 분 넘게 없으면 내 컴퓨터에 알림을 띄우는 작은 감시 스크립트를 1분마다 돌려요. 알림 방법은 내 환경에 맞게 클로드에게 정하게 하고, 일부러 하트비트를 끊어 알림이 정말 뜨는지 시험해요.
자동 업데이트와 서명
폰에 스크립트를 통째로 붙여넣으면 고칠 때마다 폰을 만져야 하고, 폰 키보드로 고치다 따옴표가 깨지기도 해요. 그래서 구조를 둘로 나눌 수 있어요.
- 로더(짧음): 폰에 한 번만 설치해요. 주기적으로 서버에 새 본체가 있는지 보고, 검증을 통과하면 교체해요.
- 본체: 실제 기능. 내 컴퓨터에서 고쳐 서명해서 올리면 폰이 받아요.
서버가 뚫려도 가짜 코드가 폰에서 실행되면 안 돼요. 그래서 서명을 확인해요.
- 비대칭 서명(키 두 개): 폰 로더에는 확인만 되는 공개키만 있고, 서명을 만드는 개인키는 내 컴퓨터에만 있어요. 폰이나 서버가 털려도 서명을 만들 수 없어요. 공용 비밀번호를 폰에 두는 방식은 폰이 털리면 끝이라 쓰지 않아요.
- 폰은 서명이 틀리거나, 버전이 같거나 낮거나(옛 코드 재전송 방지), 문법 오류가 있으면 이전 버전을 유지해요.
- 서버 토큰은 서명 키가 아니에요. 토큰이 새도 코드를 실행시킬 수는 없어야 해요.
- 로더 자체는 서명 대상이 아니라 바꿀 때 폰에 다시 설치해요.
이 구조는 이 과정의 필수가 아니에요. 혼자 시험하는 단계에서는 붙여넣기로도 돌아가요. 하지만 폰이 서버가 주는 코드를 실행하는 구조로 운영하려면 필요해요.
로더와 본체를 나누고, 본체에 서명을 붙여 올리는 구조를 설계만 해줘. 코드는 만들지 말고 필요한 파일, 키가 어디에 있어야 하는지, 폰이 거부해야 하는 경우의 목록, 개인키를 실수로 출력·커밋하지 않는 방법을 표로 정리해줘.
백업
- 개인키를 잃으면 새 본체에 서명할 수 없고, 새 키를 만들면 폰의 로더를 다시 설치해야 해요.
- 개인키는 패스프레이즈로 암호화한 파일만 클라우드 드라이브에 백업해요. 평문을 올리면 "키는 내 컴퓨터에만"이라는 전제가 깨져요. 패스프레이즈는 비밀번호 관리자에 따로 보관해요.
- 개인키·토큰·모델 키는 채팅, 문서, 저장소 어디에도 쓰지 않아요.
- 지식 팩·정정표·설정은 저장소(Git)에 두고, 키와 토큰은 저장소 밖에 둬요.
앱을 새 버전으로 바꿀 때
메신저봇R을 바꾸는 동안 봇이 멈추니 예약 발송이 없는 시간에 해요. 설치 방식에 따라 앱 설정과 알림 접근이 초기화될 수 있으니, 바꾸기 전에 봇 파일을 내 컴퓨터에 옮겨 두고, 바꾼 뒤 알림 접근·배터리 제한·봇 컴파일과 전원을 다시 확인해요.
🧪 실습
- 하트비트가 서버에 올라오는 것을 상태 화면에서 확인했다
- 폰 전원을 일부러 꺼서 이상 판정과 끊김 알림이 뜨는지 확인했다
- 방별 표 한 줄(수신 있음·호출 있음·허용 아님)을 보고 원인을 말로 추정했다
- 서명 구조에서 폰이 거부해야 하는 경우 네 가지를 내 말로 적었다
- 개인키를 쓴다면 어떻게 백업할지 계획을 적었다(실제 키는 다루지 않았다)
오늘의 체크리스트
- 응답이 없을 때 전원 → 방 화면 → 알림 설정 → 컴파일 → 서버 상태 순으로 점검할 수 있다
- 공개키와 개인키 중 폰에 두는 것이 어느 쪽인지 안다
- 키와 토큰이 어디에도 노출되지 않았다