정말 미리 썻어야 한데.. 이제야 씁니다. 게을러 빠져서
폰 하나로 죽은 AI 봇들을 되살린다 — 비개발자가 Tailscale + Termius로 만든 '비상 관제망'
📝 한줄 요약
집 데스크탑, 맥미니, 회사 노트북, 그리고 내 휴대폰까지 흩어진 기기들을 사설 메시 네트워크(Tailscale) 하나로 묶고, 폰의 SSH 앱(Termius)으로 외출 중에도 맥미니에 접속해 멈춘 AI 봇을 직접 되살릴 수 있게 만들었다.
바쁘시면 이것만 읽어도 돼요:
목적: 내 AI 비서·회계사·투자 봇들이 맥미니 위에서 24시간 도는데, 멀리 있을 때 하나가 멈추면 손쓸 방법이 없었다. → 폰으로 어디서든 들어가 살리는 '비상문'이 필요했다.
확장 스토리: 기기들을 사설망으로 묶는 것(Tailscale)에서 시작해 → 폰에서 그 망으로 접속하는 것(Termius)까지 한 걸음씩 넓혔다.
제일 큰 깨달음: 비상문은 비상 상황에서도 살아있어야 의미가 있다. 그래서 평소용 통로와 비상용 통로를 이중으로 깔았다.
인상적이었던 순간: AI가 "이건 App Store 버전이라 막힌 기능이에요"라고 함정을 먼저 짚어줬을 때.
결과: 회사에서, 카페에서, 폰만 들고 내 실제 맥미니의 AI 오케스트레이터(Hermes)에 접속해 상태를 보고 재시작까지 한다.
🎯 이런 분들께 도움돼요
집이나 서버에 24시간 돌아가는 무언가(AI 봇, 자동화, 홈서버)를 두고, 외부에서 관리하고 싶은 분
"포트 포워딩", "공인 IP" 같은 말에 막혀서 원격 접속을 포기했던 비개발자
AI 도구로 인프라를 세팅하다가 에러 메시지 앞에서 멈춰본 적 있는 분
😫 문제 상황 (Before)
내 맥미니 한 대 위에는 AI 봇이 여러 개 살고 있다. 메인 오케스트레이터(Hermes)와 회계사·세무사·투자·비서 역할의 봇들이 24시간 돌면서 텔레그램·카카오·디스코드로 나를 돕는다.
문제는 이게 전부 집 맥미니 한 대에 묶여 있다는 것이었다.
외출 중에 봇 하나가 멈추면? → 집에 돌아갈 때까지 죽어 있다.
회사에서 "지금 내 AI한테 시키고 싶은데" 싶어도 → 맥미니 앞에 앉아야만 했다.
공유기 IP는 장소마다·시간마다 바뀌니, 외부에서 집 맥미니를 찾아 들어가는 것 자체가 난관이었다.
집에 있는 단일 기기일 땐 모든 게 한 컴퓨터 안에서 통하니 이런 게 필요 없었다. 그런데 기기가 여러 대로 늘고, 봇이 내 일상에 깊이 들어오면서 "멀리서도 손댈 수 있어야 한다"는 게 더 이상 미룰 수 없는 숙제가 됐다.
내가 원한 건 두 가지로 분명했다:
봇이 죽었을 때 폰으로 어디서든 들어가 살리기
휴대폰을 통해 내 오케스트레이터(Hermes)에 접속해서 일 시키기
🛠️ 사용한 도구
AI 코딩 파트너: 내 로컬 AI 비서 '유 성이'(Hermes 기반) — 한 단계씩 명령을 주고 결과를 확인하며 진행
Tailscale: 흩어진 기기들을 하나의 사설 메시 네트워크로 묶는 도구 (무료 플랜, 개인용)
Termius: 휴대폰에서 SSH로 기기에 접속하는 앱
대상 기기: 맥미니(봇들의 집), 윈도우 데스크탑, 회사 노트북, 안드로이드 폰
🔧 작업 과정
🧩 1막 — "기기들을 어떻게 한 망으로 묶지?"
시작은 단순한 고민이었다. 집·회사·맥미니가 다 다른 네트워크에 있는데, 이걸 어떻게 서로 보이게 할까.
전통적인 방법(공인 IP, 포트 포워딩)은 비개발자에게 지옥이고 보안도 위험하다. 유성이가 제안한 건 Tailscale — 같은 계정으로 로그인하기만 하면 기기들이 알아서 암호화된 사설망으로 묶이고, 각 기기에 평생 안 바뀌는 주소가 생기는 방식이었다.
3기기를 Tailscale로 묶고, 폰에서 제어할 수 있게 하고, 봇 상태 대시보드까지 만들고 싶어핵심이 마음에 들었다. 공유기 IP가 어떻게 바뀌든, 기기에 한 번 부여된 사설 주소(100.x.x.x)는 평생 고정이다. 외부에서 켜도 재설정이 0이라는 뜻이다.
🚧 2막 — App Store 함정: "그거 깔면 안 돼요"
첫 삽을 뜨자마자 함정을 먼저 짚었다.
맥미니에 Tailscale을 그냥 App Store에서 깔면 안 돼?돌아온 답이 인상적이었다. "App Store 버전은 보안 샌드박스라서, 정작 우리가 필요한 SSH 원격 접속 기능이 막혀 있어요." 그냥 깔았으면 한참 헤맸을 함정을, 시작 전에 걸러준 것이다.
그래서 App Store 버전을 지우고 개발자용(brew) 버전으로 갈아끼웠다. 그런데 이번엔 백그라운드 서비스가 자꾸 죽었다. 알 수 없는 에러 코드와 함께.
이게 두 번째 인상적인 순간이었다. 로그를 파고들어 진짜 원인을 찾아냈다 — 설치 과정에서 프로그램이 "이 위치에 있을 것"이라고 적어둔 경로와, 실제 파일이 있는 위치가 서로 달라서 시스템이 못 찾고 죽는 문제였다. 해결책으로 두 경로를 연결하는 '바로가기'를 걸어주자, 컴퓨터를 재부팅해도 살아남는 안정적인 상태가 됐다.
비상문이 목적인데, 재부팅 한 번에 비상문이 사라지면 의미가 없다. 재부팅에도 살아남는 것까지 확인하고 넘어간 게 나중에 두고두고 든든했다.
🛡️ 3막 — "비상문은 비상 상황에서도 살아있어야 한다"
여기서 설계 원칙이 이 프로젝트의 핵심이 됐다.
원래 목적이 "봇이 다 죽었을 때 들어가서 살리기"다. 그런데 만약 접속 통로 자체가 그 봇·그 네트워크 도구에 의존하고 있다면? 정작 다 죽었을 때 비상문도 같이 잠겨버린다.
편하게 들어가는 것도 좋은데, 다 죽었을 때 확실히 들어갈 비상 통로도 같이 있으면 좋겠어그래서 통로를 이중으로 깔았다:
평소용: Tailscale의 편리한 SSH (키 관리 없이 바로 접속, 95%는 이걸로)
비상용: 맥 자체의 독립적인 SSH (Tailscale이 죽어도 따로 살아있는 보험)
평소엔 편한 길로 다니고, 그 길이 막힌 5%의 순간에 비상문으로 들어간다. 이 이중화가 "그냥 원격접속"과 "비상 복구망"을 가르는 결정적 차이였다.
📱 4막 — Termius로 확장: 드디어 폰에서 손이 닿다!!!!!
기기들이 묶였으니, 이제 폰이 주인공이 될 차례다. 폰에 Tailscale 앱을 깔고 같은 계정으로 로그인하니, 폰도 이 사설망의 한 노드가 됐다.
그런데 Tailscale 앱은 '연결'만 할 뿐, 접속해서 명령을 칠 창구가 없었다. 그래서 SSH 접속 앱이 필요했고 — Termius를 깔았다.
폰에서 Termius로 맥미니의 사설 주소를 입력하고 접속을 시도했다. 그런데 "연결 중..."에서 멈추고 비밀번호를 안 물어봤다.
또 한 번의 삽질. 알고 보니 평소용 SSH 통로가 22번 포트를 가로채서 비상용 통로로 트래픽을 안 넘기고 있던 것이다. 두 문을 같이 열어두면 알아서 양보하는 게 아니라, 막혔을 땐 한쪽을 명시적으로 비켜줘야 했다. 그 한 줄을 정리하자 —
폰 화면에 비밀번호 입력창이 떴고, 입력하자 맥미니 터미널이 손바닥 안에 들어왔다.
회사에서, 길에서, 폰만 들고 내 봇들의 집에 접속할 수 있게 된 순간이었다.
<어플리케이션에서 Termius 실행했을 때 모습>
Host아래 라인의 맥마크를 눌르면 아래로 이동이 된다.
<Terminus앱에서 터미널 접속화면>
여기서 hermes 라고 치면 hermes 에이전트가 켜진다
<hermes 에이전트를 실행한 모습>
이렇게 휴대폰에서도 hermes에이전트를 구동할 수 있다!!!!!
🌐 5막 — 한 대를 넘어 모든 기기로
여기서 욕심이 났다. 맥미니만이 아니라 윈도우 데스크탑, 회사 노트북까지 다 닿고 싶었다.
직접 폰에서 모든 기기에 일일이 접속 설정을 하는 대신, 맥미니를 중간 거점(점프 호스트)으로 삼는 방식을 택했다. 폰 → 맥미니 → 나머지 기기. 맥미니에 한 번만 열쇠를 등록해두면, 거기서 다른 기기들로 뻗어나가는 구조다. "한 군데(유성이)에서 전부 제어한다"는 원래 그림과 정확히 맞아떨어졌다.
이 과정에서도 자잘한 함정이 많았다(윈도우는 SSH 서버를 따로 켜야 하고, 회사 노트북은 화면에 보이는 계정 이름과 실제 로그인 계정 이름이 달랐다). 하지만 하나씩 실측으로 확인하며 넘으니, 결국 흩어진 4기기가 하나의 망으로, 폰 한 대가 그 전체의 리모컨으로 완성됐다.
✅ 결과 (After)
Before vs After
항목
Before
After
외부에서 봇 복구
불가능 (집에 가야만)
폰으로 어디서든 접속·재시작
기기 접속 주소
장소마다 바뀜 (찾기 난망)
평생 고정된 사설 주소
Hermes 오케스트레이터 접속
맥미니 앞에서만
휴대폰 SSH로 외부에서
닿는 기기 수
맥미니 1대 (그것도 집에서만)
4기기 메시 (폰이 리모컨)
비상 복구 안정성
단일 통로 (막히면 끝)
이중 통로 (평소+비상문)
결과물
폰(Termius) → 맥미니 SSH 접속 성공, 외부망(LTE)에서도 동작
평소용·비상용 SSH 이중화로 "다 죽어도 들어갈 비상문" 확보
폰 → 맥미니 → 윈도우/회사노트북 점프 접속 체계
(이후 확장) 폰 홈 화면에서 봇 상태를 보고 재시작하는 대시보드까지
💬 이 과정에서 배운 AI 활용 팁
효과적이었던 것
함정을 먼저 묻기: "이거 그냥 깔면 돼?"라고 물으면 AI가 "그건 이래서 안 된다"고 짚어준다. 삽질 전에 거르는 게 가장 큰 시간 절약이었다.
한 단계씩, 결과 확인하며: 인프라 작업은 한 번에 몰아치면 어디서 깨졌는지 모른다. 명령 하나 → 결과 확인 → 다음. 되돌릴 수 있게.
'자기보고' 말고 실측으로 확 인: "됐어요"가 아니라 실제로 폰에서 접속해보고, 프로세스가 진짜 바뀌었는지 눈으로 확인했다.
이렇게 하면 안 돼요
목적을 잊고 편한 길만 깔기: 비상 복구가 목적이면, 통로가 비상 상황에서 같이 죽으면 안 된다. '목적'을 설계의 기준으로 계속 되물어야 한다.
에러 코드를 보고 바로 포기하기: 알 수 없는 에러 코드도, 로그를 한 겹 파면 대부분 "경로가 안 맞아서" 같은 단순한 원인이다.
"됐겠지" 하고 넘기기: 재부팅하면 사라지는 설정, 표면상 켜졌지만 실제론 막힌 포트 — 끝까지 실측해야 진짜 완성이다.
🌍 다른 업무에 적용한다면?
홈서버·NAS 원격관리: 똑같은 방식으로 집 서버를 외부에서 안전하게 관리할 수 있다.
소규모 팀의 기기 공유: 포트 포워딩 없이 팀원들끼리 특정 기기·서비스만 안전하게 공유.
자동화 모니터링: "어디서든 폰으로 상태 보고 재시작"은 어떤 24시간 자동화에도 그대로 적용되는 패턴이다.