폰 한 대로 상시 구동 서버를 만들 수 있을까. 답은 “된다"였지만, 그 과정은 생각보다 여러 겹의 장애물을 넘는 일이었다.

시작은 Termux였다. 안드로이드 폰 안에 리눅스 환경을 올려서 코드를 짜고 서버를 띄우는 건 어렵지 않다. 문제는 그 위에 Claude Code를 올리려는 순간 터졌다 — npm install -g @anthropic-ai/claude-code가 linux-arm64-android 네이티브 바이너리가 없다는 이유로 실패했다. 안드로이드용 Node.js 바이너리 생태계가 표준 리눅스 배포판과 미묘하게 다르다는 걸 이때 처음 체감했다.

해법은 한 겹 더 감싸는 것이었다. proot-distro로 Termux 안에 진짜 우분투 컨테이너를 하나 더 띄우고, 그 안에서 Claude Code를 설치했다. proot-distro login ubuntu로 들어가면 완전한 리눅스 환경이라 패키지 생태계 문제가 사라진다. 대신 파일 경로가 두 겹이 됐다 — Termux 쪽에서 보는 /data/data/com.termux/files/home/phoneserver와 우분투 컨테이너 안에서 보는 /root/termux-home/phoneserver가 바인드 마운트로 연결된 같은 파일이다. 어느 쪽에서 편집해도 같은 파일이 바뀌지만, 이 이중 구조를 모르면 “분명히 저장했는데 안 보인다"는 혼란에 빠지기 딱 좋다.

그다음은 이 모든 걸 “폰 하나로” 완결시키는 마지막 조각, Anthropic의 Remote Control이었다. SSH도 아니고 별도 터널도 아니다. Claude 앱의 코드 탭에서 세션 목록을 보고 그대로 이어서 코딩할 수 있게 해주는 기능이다. claude --remote-control 한 줄로 이 세션이 원격에서 열리고, PC 없이 폰 화면만으로 실제 코드를 고치고 서버를 재시작할 수 있게 됐다.

물론 폰이라는 하드웨어의 한계도 같이 따라왔다. Termux 앱이 백그라운드에서 스와이프로 꺼지면 세션이 통째로 끊긴다. Termux:Boot 앱을 따로 설치해서 재부팅 시 자동 기동 스크립트를 등록하고, 배터리 최적화 예외 설정도 손으로 해줘야 했다 — 이건 Claude Code가 대신할 수 없는, 사람이 안드로이드 설정 화면에서 직접 눌러야 하는 부분이다.

이렇게 만들어진 게 “quantum2server"다. 이름 그대로 갤럭시 퀀텀2 한 대가 코드 편집 환경이자 실행 서버 역할을 동시에 하는 구조. 이 시리즈는 이 폰 위에서 실제로 벌어진 사건들 — AI 폴백 서버를 직접 설계한 이야기, 블로그 에디터가 세 번 연속으로 망가졌던 이야기, 그리고 결국 이 서버 역할 전체를 다른 기기로 넘기게 된 이야기까지 — 을 순서대로 기록한다.