Simon의 AI 시대에 살아남는 법

Termux

Termux 총 6개의 포스트
줄지어 선 도미노 가운데 하나가 멈춰 뒤가 전부 서 있는 모습을 터미널 창 안에 그린 일러스트
개발 일지

부팅 스크립트 한 줄이 서비스 전체를 막다 — 첫 워치독의 오탐까지

이 글은 ‘폰 서버 안정화 일지’ 시리즈의 첫 번째다. 재부팅만 하면 절반쯤의 서비스가 안 올라오던 시절, 원인이 부팅 스크립트의 한 줄이었다는 이야기와, 그걸 고치려고 만든 첫 워치독이 거꾸로 건강한 봇을 매번 죽이던 이야기다. 증상: 재부팅 뒤 Claude 세션이 안 뜬다 폰을 재부팅하면 카카오톡 봇은 살아나는데 Claude Code 세션과 터널 몇 개가 안 올라오는 날이 반복됐다. 재부팅 직후 tmux 세션 목록을 보면 iris만 있고 claude, cloudflare, blogadmin 같은 세션이 없었다. 하루는 수동으로 띄우고 넘어갔지만, 같은 일이 세 번째 반복되자 부팅 스크립트를 처음부터 끝까지 읽었다.

2026.11.03 10:05 조회수: – 댓글: –
스마트폰 한 대 위에 여러 서비스 블록이 층층이 쌓여 있는 서버 구조 일러스트
개발 일지

2026년 10월 기준, 내 폰 서버 전체 지도 — 무엇이 어디서 돌아가는가

루팅한 갤럭시 S9 한 대가 내 홈 서버다. 처음엔 카카오톡 봇 하나 돌리려고 시작했는데, 어느새 블로그와 자동화 루틴, 데이터 수집기까지 전부 이 폰 위에 올라가 있다. 지난 한 달 동안 이 폰에서 겪은 장애와 수정 기록을 시리즈로 남기기 전에, 먼저 “지금 이 폰에서 무엇이 어디서 돌아가는가"를 한 장의 지도로 정리해 둔다. 이 글은 이어질 시리즈들의 서문이자 색인이다. 두 겹의 리눅스 폰 안에는 리눅스가 두 겹으로 있다. 바깥은 Termux다. 안드로이드 위에 리눅스 유저랜드를 올려주는 앱이고, tmux 서버와 cloudflared 터널, 그리고 카카오톡 봇처럼 안드로이드와 직접 닿아야 하는 것들이 여기서 돈다. 안쪽은 proot-distro로 올린 Ubuntu 컨테이너다. 블로그 관리 서버, 데이터 수집기, 자동화 루틴, 그리고 이 모든 것을 관리하는 Claude Code 원격 세션이 여기서 돈다.

2026.11.02 07:30 조회수: – 댓글: –
IT 시리즈 — Termux 강제종료 문제를 MacroDroid로 해결하기
개발 일지

안드로이드가 Termux를 자꾸 죽이는 문제, MacroDroid로 해결하기

루팅을 마치고 Termux + proot-distro로 서버 환경까지 만들었는데, 정작 그 위에서 tmux 세션들이 가만히 있다가 조용히 죽어있는 일이 반복됐습니다. 카카오톡 봇이 이유 없이 응답을 멈추길래 확인해보면, Termux 프로세스 자체가 안드로이드 시스템에 의해 강제 종료돼 있었습니다. 이번 글은 그 문제를 해결하기까지의 과정입니다. 증상: 화면을 안 보고 있으면 죽는다 패턴은 명확했습니다. 화면을 켜서 Termux를 보고 있을 때는 멀쩡하다가, 다른 앱을 쓰거나 화면을 꺼두고 시간이 좀 지나면 tmux 세션 안의 프로세스들이 통째로 죽어있는 경우가 잦았습니다. 전형적인 안드로이드의 백그라운드 프로세스 관리 — 특히 삼성 기기의 배터리 최적화가 공격적이기로 유명합니다 — 에 의해 Termux가 “안 쓰는 앱"으로 분류되어 정리되는 것으로 보였습니다.

2026.09.23 07:00 조회수: – 댓글: –
IT 시리즈 — 루팅된 갤럭시 S9 서버 환경 구축기
개발 일지

루팅된 갤럭시 S9 위에 상시 구동 서버 만들기

이 블로그 자체가 유휴 휴대폰을 서버로 쓰는 프로젝트인데, 사실 이 방식을 먼저 시도해본 기기가 하나 더 있습니다. 오래된 갤럭시 S9입니다. 이 시리즈는 그 S9 위에서 카카오톡 챗봇 “Iris"를 돌리고, 여러 기능을 개발하면서 겪은 과정을 기록합니다. 루팅 이후, 서버 환경부터 지난 글에서 이 S9을 루팅하기까지의 과정(그리고 일반적인 방법이 안 통해 TWRP로 돌아갔던 이야기)을 다뤘습니다. 이번 글은 그 이후, 루팅된 안드로이드 위에 실제로 상시 구동되는 서버 환경을 어떻게 쌓아올렸는지부터 시작합니다. Termux + proot-distro 조합 기본 구조는 이 블로그의 다른 서버(휴대폰 서버)와 동일합니다. Termux를 리눅스 유저랜드로 쓰고, 그 위에 proot-distro로 우분투 컨테이너를 하나 더 얹습니다. 루트 권한이 있는 기기라고 해도 Claude CLI가 안드로이드 환경에서 구동되지 않기 때문에 이 기기를 agent로 두고 Claude를 통해 이 휴대폰 서버에서 돌아가는 모든 서비스를 원격으로 통제하기 위해서는 우분투 환경이 필수적이었습니다.

2026.09.22 07:00 조회수: – 댓글: –
quantum2 시리즈 1편 — Remote Control로 시작한 폰 서버
개발 일지

폰 한 대로 상시 구동 서버 만들기 — Remote Control로 시작한 quantum2

폰 한 대로 상시 구동 서버를 만들 수 있을까. 답은 “된다"였지만, 그 과정은 생각보다 여러 겹의 장애물을 넘는 일이었다. 시작은 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가 바인드 마운트로 연결된 같은 파일이다. 어느 쪽에서 편집해도 같은 파일이 바뀌지만, 이 이중 구조를 모르면 “분명히 저장했는데 안 보인다"는 혼란에 빠지기 딱 좋다.

2026.09.21 16:46 조회수: – 댓글: –
IT 시리즈 — Termux와 proot-Ubuntu로 리눅스 환경 만들기
개발 일지

Termux + proot-Ubuntu로 휴대폰에 리눅스 환경 만들기

서랍 속 유휴 휴대폰을 서버로 쓰기로 결심한 다음 가장 먼저 부딪힌 질문은 “루트 권한도 없는 안드로이드 폰에서 어떻게 진짜 서버 환경을 만들 것인가"였습니다. 이번 글에서는 실제로 이 서버를 세팅할 때 사용한 Termux + proot-distro 조합을 정리합니다. 왜 Termux인가 Termux는 안드로이드 위에서 동작하는 터미널 에뮬레이터이자 패키지 관리 환경입니다. 루트 권한 없이도 apt 기반 패키지 설치, SSH, Python, Node.js 실행이 가능합니다. 다만 Termux 자체의 리눅스 환경은 안드로이드 샌드박스 제약 때문에 일반 리눅스 배포판과 100% 동일하지는 않습니다. 그래서 그 위에 proot-distro를 얹어 진짜 우분투 환경을 통째로 격리 실행하는 방식을 선택했습니다.

2026.09.20 17:00 조회수: – 댓글: –