모바일 + 외부 접속 완전 셋업 활용 가이드
사용자 Mac이 어디서든 작동하는 상태가 됐다. 폰에서 명령하면 Mac이 일하고, 결과물 HTML은 외부 어디서든 영구 URL로 볼 수 있다. 모든 컴포넌트는 Mac 부팅 시 자동 시작, 사용자가 따로 켤 필요 없음.
사용자가 가지고 있는 것
가장 중요한 두 가지 주소
https://midbar-mac-bookpro.tail6a7423.ts.net폰에서 Mac 작업 시키기 — Claude Code Remote Control
Mac 안에 켜진 Claude Code 세션을 폰에서 그대로 조작. 파일은 Mac에만 있고, 폰은 리모컨 역할.
시나리오 A — 새 작업 시작 (가장 일반적)
외출 중에 새로운 작업을 시키고 싶을 때.
폰 Claude 앱 → "코드" 탭
Mac에 떠 있는 세션 목록이 보임. 우측 상단에 주황색 ⊕ 버튼이 있다.
주황색 ⊕ 탭 → 메시지 입력
예: "트렌드 리포트 폴더 안의 모든 파일 검토해서 빠진 부분 알려줘"
전송 → Mac에서 자동 실행
새 세션이 Mac에 만들어지고 작업 시작. 답이 폰으로 돌아옴. 이름은 메시지 내용 기반으로 자동 지어짐.
시나리오 B — 데스크에서 하던 거 폰으로 이어받기
출근길에 어제 끝내지 못한 작업 계속하고 싶을 때.
Mac의 그 세션에서 슬래시 명령
/remote-control 트렌드리포트
이름은 원하는 대로. 이미 진행된 대화가 그대로 보존된 채 폰에서 이어볼 수 있게 됨.
폰 앱 세션 목록 새로고침
위에서 아래로 당겨 새로고침 → "트렌드리포트" 새 세션이 추가됨.
탭해서 들어가면 어제 대화 그대로
이어서 메시지 보내면 됨. Mac과 폰 양쪽에서 동시에 같은 대화 보면서 작업 가능.
시나리오 C — 매번 명령 없이 자동 노출
작업할 때마다 /remote-control 치는 게 귀찮으면 한 번만 켜두면 됨.
/config # 화살표로 항목 찾기 # "Enable Remote Control for all sessions" 토글 → true # Esc로 닫기
claude 세션이 자동으로 폰에서 보인다. 편하지만 어떤 세션이든 전부 노출되니, 비공개 작업이 섞이는 게 신경 쓰이면 매번 명시적으로 /remote-control만 쓰는 게 안전.
푸시 알림 받기
긴 작업이 끝나거나 결정이 필요할 때 폰으로 자동 알림.
/config
# "Push when Claude decides" → true
또한 메시지 끝에 "끝나면 알림 줘" 한 줄 붙이면 그 작업 한정 푸시 보장.
HTML 결과물 어디서든 보기 — Tailscale Funnel
Mac 안의 HTML 결과물 폴더(~/Desktop/Claude/)가 영구 URL로 노출되어 있다. 카페·지하철·해외 어디서든 인터넷만 되면 접근 가능.
자동 시작 구조 — 사용자가 따로 할 일 없음
두 개의 컴포넌트가 Mac 부팅 시 자동으로 켜진다.
| 컴포넌트 | 역할 | 자동 시작 방식 |
|---|---|---|
| Python HTTP 서버 (포트 8765) | HTML 폴더를 웹서버로 노출 (localhost 한정) | launchd 등록com.midbar.claude-outputs |
| Tailscale Funnel | localhost:8765를 외부 인터넷으로 라우팅 | Tailscale 데몬 (Mac 시스템 서비스) |
KeepAlive=true로 설정되어 있어, HTTP 서버 프로세스가 어떤 이유로 죽어도 즉시 재시작된다. Tailscale도 시스템 서비스라 같은 방식으로 살아남음.
실제 일상 시나리오
🚇 출근길
지하철에서 폰 → 어제 작업 세션 탭 → "어제 멈춘 부분부터 이어서 진행" → 도착하면 이미 진척돼 있음. 푸시 알림으로 완료 시점 확인.
☕️ 카페에서 자료 검토
외부 URL 홈 아이콘 탭 → 모든 결과물 인덱스 → 트렌드 리포트나 회사 분석 자료 폰으로 그대로 읽기. 회의 직전 빠르게 복습.
🛏 침대에서 사소한 수정
"index.html에서 첫 번째 항목 색깔만 강조" → Mac에서 실행되어 파일 수정 → 외부 URL 새로고침으로 즉시 확인.
💼 회의 중 메모
회의 도중 떠오른 아이디어 → 폰 → 새 세션 ⊕ → "이런 컨셉으로 1페이지 정리해줘" → 회의 끝날 때쯤 Mac에 HTML 완성.
✈️ 외근·출장
다른 도시·해외에서도 외부 URL 그대로 동작. Tailscale Funnel은 위치 무관. 호텔 와이파이, 4G/5G 어디서든 OK.
👥 자료 공유
특정 결과물을 다른 사람과 공유하고 싶을 때 그 페이지 URL 그대로 복사·전송. (단 폴더 내 모든 자료가 같이 보임 — 보안 섹션 참고)
어떻게 동작하나 — 시스템 구성
2개 채널(Remote Control / Tailscale Funnel)이 각각 다른 Anthropic·Tailscale 서버를 거쳐 사용자 Mac으로 들어온다.
# 채널 1: 폰에서 Mac에 명령 (Claude Code Remote Control) 폰 Claude 앱 ──HTTPS──▶ Anthropic API ──HTTPS──▶ 사용자 Mac (claude 세션) │ └─▶ 파일·터미널 실행 │ 폰 Claude 앱 ◀──HTTPS── Anthropic API ◀──HTTPS── 답변 스트림 # 채널 2: 외부에서 HTML 보기 (Tailscale Funnel) 폰/외부 브라우저 ──HTTPS──▶ Tailscale Funnel 엣지 ──암호터널──▶ 사용자 Mac │ └─▶ Python http.server (포트 8765) │ └─▶ ~/Desktop/Claude/ 폴더의 HTML
관리 명령어 (필요할 때만)
Remote Control 쪽
| 하고 싶은 것 | 입력 |
|---|---|
| 현재 세션 폰에 노출 | /remote-control 이름 |
| 모든 세션 자동 노출 | /config → "Enable Remote Control for all sessions" |
| 푸시 알림 켜기 | /config → "Push when Claude decides" |
| 세션 이름 바꾸기 | /rename 새이름 |
| 세션 끄기 | Mac 터미널에서 Ctrl+C |
Tailscale Funnel + HTTP 서버 쪽
| 하고 싶은 것 | 명령 |
|---|---|
| Funnel 잠시 끄기 (외부 접속 차단) | tailscale funnel --https=443 off |
| Funnel 다시 켜기 | tailscale funnel --bg http://localhost:8765 |
| HTTP 서버 끄기 | launchctl unload ~/Library/LaunchAgents/com.midbar.claude-outputs.plist |
| HTTP 서버 켜기 | launchctl load ~/Library/LaunchAgents/com.midbar.claude-outputs.plist |
| 서버 로그 보기 | tail -f /tmp/claude-outputs.log |
| 현재 Funnel 상태 | tailscale funnel status |
| Tailscale 전체 상태 | tailscale status |
문제가 생기면
📱 폰에서 Mac 세션이 회색으로 표시
Mac이 절전 들어갔거나, claude 프로세스가 종료된 상태. 해결:
- Mac 깨우기 (마우스 움직이기, 키보드 누르기)
- Mac에서 다시
claude실행 (Remote Control이 자동 노출 모드면 자동으로 잡힘) - Mac 뚜껑은 닫지 말고 화면만 잠그기 (Cmd+Ctrl+Q)
🌐 외부 URL이 안 뜸
tailscale status— Mac이 Tailscale에 연결돼 있나 확인tailscale funnel status— Funnel이 켜져 있나 확인curl -I http://localhost:8765/index.html— Mac 안에서 HTTP 서버는 돌고 있나- 위 셋 다 OK면 폰 와이파이/모바일 데이터 자체 문제일 가능성
🔔 푸시 알림이 안 와
/config에서 "Push when Claude decides"가true인지 재확인- iOS: 설정 → 알림 → Claude → 알림 허용 / 사운드 / 배지 모두 ON
- iOS: 집중 모드(방해금지)에 걸려 있는지 확인
- Android: 배터리 최적화에서 Claude 앱 제외
💥 HTTP 서버가 죽었다고 나옴
이론상 launchd가 자동 재시작하지만, 안 되면:
launchctl unload ~/Library/LaunchAgents/com.midbar.claude-outputs.plist
launchctl load ~/Library/LaunchAgents/com.midbar.claude-outputs.plist
launchctl list | grep claude-outputs # PID가 0이 아닌 숫자면 정상
보안 — 꼭 알고 쓰세요
midbar-mac-bookpro.tail6a7423.ts.net)이지만, 한 번 새면 그 폴더 전체가 노출된다.
권장 습관
- URL을 캡쳐·복사해서 메신저에 보낼 때 한 번 더 생각
- 회사 기밀·고객 정보 등 진짜 민감한 자료는
~/Desktop/Claude/에 두지 말고 다른 폴더로 - 잠깐 외부 노출 차단하고 싶을 때:
tailscale funnel --https=443 off(집 와이파이 안에서는 계속 봄)
더 안전하게 쓰는 옵션
비밀번호 보호 추가하면 URL이 새도 비번을 모르면 못 봄. 원하면 별도 셋업:
- HTTP Basic Auth: Caddy/Nginx 같은 가벼운 리버스 프록시 + 비번 (10분 작업)
- Tailscale 전용 (외부 X): Funnel을 끄고 Serve로만 — 사용자 Tailscale 계정 기기에서만 접근 가능. 폰에 Tailscale 깔려 있으면 충분
iphone181)도 Tailscale 계정에 등록돼 있어, Funnel을 꺼도 폰에서는 tailscale serve 경로로 계속 접근 가능. 외부 카페·외근에서만 접속할 일이 적다면 Funnel을 끄고 Serve만 쓰는 게 가장 안전.
습관 만들기 — 잘 활용하는 사람이 되는 법
새 작업 시작할 때 이름부터 붙이기
/remote-control 트렌드, /remote-control 바디코디 — 이름 없으면 midbar-graceful-unicorn 같은 자동 이름이라 폰에서 헷갈림.
Mac 뚜껑은 안 닫기
닫으면 절전 → 폰 명령이 들어와도 처리 못 함. 화면만 잠그기 (Ctrl+Cmd+Q) 또는 클램쉘 모드 (외장 모니터·키보드 연결 시).
긴 작업 시킬 땐 "끝나면 알림 줘"
메시지 끝에 한 줄 추가하면 푸시 보장. 자리를 비워도 완료 시점에 폰에 알림.
외부 URL은 홈 화면에 추가
Safari에서 한 번 접속 → 공유 → "홈 화면에 추가" → 앱처럼 한 탭. 매번 URL 입력 안 함.
시작은 작게 — 한 작업만 폰으로
처음부터 모든 걸 모바일로 옮기려 하지 말고, 일단 "출퇴근길 코드 리뷰 한 가지만" 같은 좁은 시나리오부터. 익숙해지면 자연스럽게 확장됨.
설정된 파일·서비스 위치
나중에 어디 뭐가 있나 헷갈릴 때 참고.
| 대상 | 위치 / 식별자 |
|---|---|
| HTML 결과물 폴더 | /Users/midbar_/Desktop/Claude/ |
| HTTP 서버 launchd 설정 | ~/Library/LaunchAgents/com.midbar.claude-outputs.plist |
| HTTP 서버 로그 | /tmp/claude-outputs.log |
| HTTP 서버 포트 (로컬) | 127.0.0.1:8765 |
| Tailscale 어드민 | login.tailscale.com/admin |
| 외부 접속 URL | https://midbar-mac-bookpro.tail6a7423.ts.net |
| Mac Tailscale 내부 IP | 100.96.137.44 |
| iPhone Tailscale 내부 IP | 100.92.136.22 |
📌 한 장 요약
- 새 작업 → 폰 ⊕, 하던 거 이어받기 → Mac에서
/remote-control 이름 - 결과물 보기: 폰 홈 화면에 추가한 외부 URL 한 번 탭
- Mac은 항상 켜두기, 뚜껑 닫지 말기
- 긴 작업엔 "끝나면 알림 줘" 한 줄
- URL은 비공개로 — 캡쳐·전송 시 한 번 더 생각