폰으로 서버를 제어한다 — Claude Code Remote Control 세팅기

폰으로 홈 서버에 채팅을 걸면, 서버 위의 Claude가 실행하고 결과를 돌려준다. MacBook 없이 10분 세팅으로 된다.


문제: 서버가 항상 책상 앞에 있어야 했다

나는 Intel N100 미니PC에 Ubuntu 24를 올려서 홈 서버(duncan-ubuntu)를 운영하고 있다. n8n 자동화를 비롯해 여러 도커 컨테이너들이 거기서 돌아간다.

문제는 외부에서 서버를 제어하려면 MacBook을 꺼내야 했다는 거다. Tailscale이 깔려 있어서 어디서든 SSH는 가능하다. 그런데 SSH로 터미널을 여는 건 폰에서 하기엔 번거롭다. 코드도 입력해야 하고, 작은 화면에 터미널 UX는 그렇게 좋지 않다.

내가 원했던 건 이거였다:

  • 이동 중에 폰으로 서버 상태를 물어보고 싶다
  • "n8n 컨테이너 재시작해줘"처럼 자연어로 작업을 시키고 싶다
  • 결과를 텍스트로 받아보고 싶다

그러니까 터미널 에뮬레이터가 아니라, 서버 위의 AI 에이전트를 폰에서 채팅으로 제어하는 것.

Claude Code Remote Control이 그 역할을 한다.


Claude Code Remote Control이 뭔가

Claude Code는 CLI 기반 AI 코딩 에이전트다. 터미널에서 실행하면 파일을 읽고, bash를 실행하고, 코드를 수정하는 걸 Claude가 알아서 한다.

Remote Control은 여기에 붙는 기능이다. 서버에서 실행 중인 Claude Code 세션을 외부 기기(폰, 다른 맥)에서 채팅 UI로 연결할 수 있다. Claude 앱을 열면 "Code" 탭에 연결된 세션이 나타나고, 거기서 채팅하면 실제로 서버 위에서 명령이 실행된다.

구조를 단순하게 그리면 이렇다:

[폰 Claude 앱] ←→ [Anthropic 릴레이] ←→ [duncan-ubuntu의 claude 프로세스]

서버를 인터넷에 직접 노출하지 않고, Anthropic 릴레이를 통해 연결된다. Tailscale 없이도 된다.


사전 조건

  • Claude Pro 또는 Max 플랜 (API 키 방식 불가, claude.ai OAuth 로그인 필수)
  • 서버: Ubuntu 등 Linux 계열 (macOS도 됨)
  • 폰: Claude 앱 설치 (iOS / Android)

세팅 방법

1. Claude Code 설치

서버에 SSH로 접속한 뒤:

curl -fsSL https://claude.ai/install.sh | bash

설치 확인:

claude --version
# v2.1.183 이상이어야 함

2. 로그인

claude auth login

claude.ai 계정으로 OAuth 로그인. API 키 방식으로 연결된 환경이라면 먼저 해제해야 한다:

unset ANTHROPIC_API_KEY

3. tmux 설치 및 세션 생성

tmux 없이도 Remote Control은 된다. 그러나 SSH 연결이 끊기면 프로세스도 같이 죽는다. 상시 연결을 원한다면 tmux가 필수다.

sudo apt install tmux -y
tmux new -s claude

4. Remote Control 활성화

tmux 세션 안에서:

claude

Claude Code가 실행되면, 프롬프트에서:

/remote-control duncan-ubuntu

세션 이름은 원하는 이름으로 지으면 된다. 실행하면 연결 URL과 QR 코드가 출력된다.

5. 폰에서 연결

Claude 앱 → Code 탭 → 좌측 사이드바에 방금 만든 세션이 보인다. 탭하면 연결 완료.

혹은 서버에서 출력된 QR을 폰 카메라로 스캔해도 된다.


이걸로 뭘 할 수 있나

연결되면 채팅창에 타이핑한 내용이 서버의 Claude Code로 전달된다. Claude는 필요하면 bash를 실행하고, 파일을 읽고, 결과를 돌려준다.

실제로 쓰는 것들:

서버 상태 확인

docker ps 해줘

컨테이너 목록, 상태, 업타임을 정리해서 보여준다.

컨테이너 재시작

n8n 재시작해줘

docker restart n8n-n8n-1을 실행하고 결과를 알려준다.

로그 확인

n8n 최근 에러 로그 보여줘

docker logs 결과에서 에러만 필터링해서 가져온다.

디스크/메모리 상태

디스크 남은 용량 확인해줘

간단한 파일 작업

/etc/hosts에 뭐가 들어있어?

요약하면, 터미널에서 SSH로 하던 작업 대부분을 자연어 채팅으로 할 수 있다.


한계와 주의할 점

푸시 알림은 안 된다. Routines(클라우드 스케줄 에이전트)는 Remote Control 세션과 분리된 환경에서 실행되기 때문에, 작업 완료 알림이 폰으로 오지 않는다. 정기 알림이 필요하면 n8n cron → Slack으로 별도 구성하는 게 낫다.

서버 재시작 후 세션이 죽는다. tmux 세션이 살아있어도 서버가 재부팅되면 다시 접속해서 claude/remote-control을 실행해야 한다. systemd 서비스로 자동 시작을 구성할 수 있지만 아직 직접 해보진 않았다.

OAuth 로그인 필수. Hermes처럼 API 키로 Anthropic API를 쓰는 에이전트 시스템과는 별개다. Remote Control은 claude.ai 계정 기반이라 구독 플랜이 필요하다.


결론

복잡한 셋업 없이 10분 안에 끝난다. Tailscale로 이미 서버에 붙을 수 있는 환경이라면 추가 네트워크 설정은 전혀 필요 없다.

이동 중에 서버에 뭔가 물어보거나, 간단한 작업을 시켜야 할 때 MacBook을 꺼낼 필요가 없어졌다는 게 체감상 제일 크다.

코딩 에이전트라는 포지셔닝 때문에 개발 용도로만 생각하기 쉬운데, 서버 운영·관리 용도로도 충분히 유용하다.


설치 환경: Ubuntu 24.04, Claude Code v2.1.183+, Claude Pro/Max 플랜

Posts