지금까지 나는 유휴 휴대폰 두 대를 각각 다른 용도의 서버로 굴리고 있었다. 갤럭시 퀀텀2는 Cloudflare Tunnel로 노출된 FastAPI 기반 업비트 시세 서버, 갤럭시 S9는 루팅해서 만든 IRIS 카카오톡 봇 서버. 이번에 이 두 서버의 기능을 S9 하나로 합쳤다.

왜 합쳤나

두 폰을 따로 유지보수하는 비용이 생각보다 컸다. 각 폰마다 Termux 환경, proot-Ubuntu, Claude Code 원격 세션을 따로 관리해야 했고, 장애가 나면 어느 폰의 어느 서비스인지부터 확인해야 했다. 서버 자체의 부하는 두 서비스를 합쳐도 충분히 감당할 수준이라 판단해서, 한 대로 통합하는 쪽을 택했다.

방법: 원격 세션끼리 직접 통신시키기

수동으로 코드를 복사해서 옮기는 대신, 두 폰에서 각각 돌아가던 Claude Code 원격 제어(Remote Control) 세션이 서로 통신하도록 해서 기능을 자동으로 이식했다. 퀀텀2 쪽 세션이 자신의 FastAPI 서버 코드와 설정(Upbit 엔드포인트, Cloudflare Tunnel 설정 등)을 정리해서 전달하고, S9 쪽 세션이 이를 받아 자신의 환경(IRIS가 이미 돌고 있는 proot-Ubuntu)에 맞게 포팅하는 방식이다.

이 방식의 장점은 단순 파일 복사와 다르다. 각 폰의 환경 차이(예: S9는 이미 IRIS + irispy가 같은 proot-Ubuntu 안에서 돌고 있어 포트 충돌이나 프로세스 관리 방식을 맞춰야 했다)를 세션이 직접 파악하고 조정할 수 있었다.

결과

지금은 S9 한 대가 다음을 모두 담당한다.

  • IRIS 카카오톡 봇 서버 (Termux + proot-Ubuntu)
  • 기존 퀀텀2의 FastAPI + Upbit 엔드포인트 서버
  • 두 서비스에 대한 Claude Code 원격 세션

퀀텀2는 현재 유휴 상태다. 이 폰을 앞으로 어떻게 쓸지는 아직 정하지 않았다 — 로컬 LLM 호스트 후보로도 검토했지만 4-6GB RAM, 발열·배터리 제약, 초당 1-3토큰 수준의 속도 때문에 실용성이 없다고 판단해 제외했다(이 판단의 배경은 별도 글에서 다룬 인텔 아이맥 로컬 LLM 실험과도 맞닿아 있다 — 저전력 모바일 칩에서는 사정이 더 나쁘다).

남은 과제

S9는 RAM이 4GB뿐인데, 이제 IRIS + irispy + 새로 옮겨온 FastAPI 서버 + Claude Code 원격 세션 + proot-Ubuntu까지 한 기기에서 동시에 돌아간다. 부하가 늘어난 만큼 안정성을 계속 지켜봐야 하고, 저장 공간이 부족해지면 앞선 글에서 정리한 256GB SD카드(순수 저장소 용도)로 여유를 마련해둔 상태다. 다음 단계로는 Termux:Boot 자동 시작 스크립트에 새로 옮겨온 FastAPI 서버 기동 절차까지 포함시켜, 재부팅 후에도 수동 개입 없이 두 서비스가 모두 살아나도록 정리할 계획이다.