<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Termux on Simon의 AI 시대에 살아남는 법</title><link>https://mhub.uk/tags/termux/</link><description>Recent content in Termux on Simon의 AI 시대에 살아남는 법</description><generator>Hugo</generator><language>ko-KR</language><copyright>2026 mhub. 이 블로그의 모든 글·그림과 전자책(그림으로 배우는 시리즈)의 저작권은 mhub에 있으며, 저작권자의 허락 없는 무단 복제·배포·전재를 금지합니다. 이용 허락이나 오류 제보는 문의하기로 보내 주세요.</copyright><lastBuildDate>Tue, 03 Nov 2026 10:05:00 +0900</lastBuildDate><atom:link href="https://mhub.uk/tags/termux/index.xml" rel="self" type="application/rss+xml"/><item><title>부팅 스크립트 한 줄이 서비스 전체를 막다 — 첫 워치독의 오탐까지</title><link>https://mhub.uk/posts/ops-01-boot-script-one-line-and-first-watchdog/</link><pubDate>Tue, 03 Nov 2026 10:05:00 +0900</pubDate><guid>https://mhub.uk/posts/ops-01-boot-script-one-line-and-first-watchdog/</guid><description>&lt;p&gt;이 글은 &amp;lsquo;폰 서버 안정화 일지&amp;rsquo; 시리즈의 첫 번째다. 재부팅만 하면 절반쯤의 서비스가 안 올라오던 시절, 원인이 부팅 스크립트의 한 줄이었다는 이야기와, 그걸 고치려고 만든 첫 워치독이 거꾸로 건강한 봇을 매번 죽이던 이야기다.&lt;/p&gt;
&lt;h2 id="증상-재부팅-뒤-claude-세션이-안-뜬다"&gt;증상: 재부팅 뒤 Claude 세션이 안 뜬다&lt;/h2&gt;
&lt;p&gt;폰을 재부팅하면 카카오톡 봇은 살아나는데 Claude Code 세션과 터널 몇 개가 안 올라오는 날이 반복됐다. 재부팅 직후 tmux 세션 목록을 보면 &lt;code&gt;iris&lt;/code&gt;만 있고 &lt;code&gt;claude&lt;/code&gt;, &lt;code&gt;cloudflare&lt;/code&gt;, &lt;code&gt;blogadmin&lt;/code&gt; 같은 세션이 없었다. 하루는 수동으로 띄우고 넘어갔지만, 같은 일이 세 번째 반복되자 부팅 스크립트를 처음부터 끝까지 읽었다.&lt;/p&gt;</description></item><item><title>2026년 10월 기준, 내 폰 서버 전체 지도 — 무엇이 어디서 돌아가는가</title><link>https://mhub.uk/posts/it-17-phone-server-full-map-2026-10/</link><pubDate>Mon, 02 Nov 2026 07:30:00 +0900</pubDate><guid>https://mhub.uk/posts/it-17-phone-server-full-map-2026-10/</guid><description>&lt;p&gt;루팅한 갤럭시 S9 한 대가 내 홈 서버다. 처음엔 카카오톡 봇 하나 돌리려고 시작했는데, 어느새 블로그와 자동화 루틴, 데이터 수집기까지 전부 이 폰 위에 올라가 있다. 지난 한 달 동안 이 폰에서 겪은 장애와 수정 기록을 시리즈로 남기기 전에, 먼저 &amp;ldquo;지금 이 폰에서 무엇이 어디서 돌아가는가&amp;quot;를 한 장의 지도로 정리해 둔다. 이 글은 이어질 시리즈들의 서문이자 색인이다.&lt;/p&gt;
&lt;h2 id="두-겹의-리눅스"&gt;두 겹의 리눅스&lt;/h2&gt;
&lt;p&gt;폰 안에는 리눅스가 두 겹으로 있다. 바깥은 Termux다. 안드로이드 위에 리눅스 유저랜드를 올려주는 앱이고, tmux 서버와 cloudflared 터널, 그리고 카카오톡 봇처럼 안드로이드와 직접 닿아야 하는 것들이 여기서 돈다. 안쪽은 proot-distro로 올린 Ubuntu 컨테이너다. 블로그 관리 서버, 데이터 수집기, 자동화 루틴, 그리고 이 모든 것을 관리하는 Claude Code 원격 세션이 여기서 돈다.&lt;/p&gt;</description></item><item><title>안드로이드가 Termux를 자꾸 죽이는 문제, MacroDroid로 해결하기</title><link>https://mhub.uk/posts/s9-01b-termux-macrodroid/</link><pubDate>Wed, 23 Sep 2026 07:00:00 +0900</pubDate><guid>https://mhub.uk/posts/s9-01b-termux-macrodroid/</guid><description>&lt;p&gt;루팅을 마치고 Termux + proot-distro로 서버 환경까지 만들었는데, 정작 그 위에서 tmux 세션들이 가만히 있다가 조용히 죽어있는 일이 반복됐습니다. 카카오톡 봇이 이유 없이 응답을 멈추길래 확인해보면, Termux 프로세스 자체가 안드로이드 시스템에 의해 강제 종료돼 있었습니다. 이번 글은 그 문제를 해결하기까지의 과정입니다.&lt;/p&gt;
&lt;h2 id="증상-화면을-안-보고-있으면-죽는다"&gt;증상: 화면을 안 보고 있으면 죽는다&lt;/h2&gt;
&lt;p&gt;패턴은 명확했습니다. 화면을 켜서 Termux를 보고 있을 때는 멀쩡하다가, 다른 앱을 쓰거나 화면을 꺼두고 시간이 좀 지나면 tmux 세션 안의 프로세스들이 통째로 죽어있는 경우가 잦았습니다. 전형적인 안드로이드의 백그라운드 프로세스 관리 — 특히 삼성 기기의 배터리 최적화가 공격적이기로 유명합니다 — 에 의해 Termux가 &amp;ldquo;안 쓰는 앱&amp;quot;으로 분류되어 정리되는 것으로 보였습니다.&lt;/p&gt;</description></item><item><title>루팅된 갤럭시 S9 위에 상시 구동 서버 만들기</title><link>https://mhub.uk/posts/s9-01-rooted-server-environment/</link><pubDate>Tue, 22 Sep 2026 07:00:00 +0900</pubDate><guid>https://mhub.uk/posts/s9-01-rooted-server-environment/</guid><description>&lt;p&gt;이 블로그 자체가 유휴 휴대폰을 서버로 쓰는 프로젝트인데, 사실 이 방식을 먼저 시도해본 기기가 하나 더 있습니다. 오래된 갤럭시 S9입니다. 이 시리즈는 그 S9 위에서 카카오톡 챗봇 &amp;ldquo;Iris&amp;quot;를 돌리고, 여러 기능을 개발하면서 겪은 과정을 기록합니다.&lt;/p&gt;
&lt;h2 id="루팅-이후-서버-환경부터"&gt;루팅 이후, 서버 환경부터&lt;/h2&gt;
&lt;p&gt;지난 글에서 이 S9을 루팅하기까지의 과정(그리고 일반적인 방법이 안 통해 TWRP로 돌아갔던 이야기)을 다뤘습니다. 이번 글은 그 이후, 루팅된 안드로이드 위에 실제로 상시 구동되는 서버 환경을 어떻게 쌓아올렸는지부터 시작합니다.&lt;/p&gt;
&lt;h2 id="termux--proot-distro-조합"&gt;Termux + proot-distro 조합&lt;/h2&gt;
&lt;p&gt;기본 구조는 이 블로그의 다른 서버(휴대폰 서버)와 동일합니다. Termux를 리눅스 유저랜드로 쓰고, 그 위에 &lt;code&gt;proot-distro&lt;/code&gt;로 우분투 컨테이너를 하나 더 얹습니다. 루트 권한이 있는 기기라고 해도 Claude CLI가 안드로이드 환경에서 구동되지 않기 때문에 이 기기를 agent로 두고 Claude를 통해 이 휴대폰 서버에서 돌아가는 모든 서비스를 원격으로 통제하기 위해서는 우분투 환경이 필수적이었습니다.&lt;/p&gt;</description></item><item><title>폰 한 대로 상시 구동 서버 만들기 — Remote Control로 시작한 quantum2</title><link>https://mhub.uk/posts/q2-01-remote-control-server/</link><pubDate>Mon, 21 Sep 2026 16:46:24 +0900</pubDate><guid>https://mhub.uk/posts/q2-01-remote-control-server/</guid><description>&lt;p&gt;폰 한 대로 상시 구동 서버를 만들 수 있을까. 답은 &amp;ldquo;된다&amp;quot;였지만, 그 과정은 생각보다 여러 겹의 장애물을 넘는 일이었다.&lt;/p&gt;
&lt;p&gt;시작은 Termux였다. 안드로이드 폰 안에 리눅스 환경을 올려서 코드를 짜고 서버를 띄우는 건 어렵지 않다. 문제는 그 위에 Claude Code를 올리려는 순간 터졌다 — &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;가 &lt;code&gt;linux-arm64-android&lt;/code&gt; 네이티브 바이너리가 없다는 이유로 실패했다. 안드로이드용 Node.js 바이너리 생태계가 표준 리눅스 배포판과 미묘하게 다르다는 걸 이때 처음 체감했다.&lt;/p&gt;
&lt;p&gt;해법은 한 겹 더 감싸는 것이었다. &lt;code&gt;proot-distro&lt;/code&gt;로 Termux 안에 진짜 우분투 컨테이너를 하나 더 띄우고, 그 안에서 Claude Code를 설치했다. &lt;code&gt;proot-distro login ubuntu&lt;/code&gt;로 들어가면 완전한 리눅스 환경이라 패키지 생태계 문제가 사라진다. 대신 파일 경로가 두 겹이 됐다 — Termux 쪽에서 보는 &lt;code&gt;/data/data/com.termux/files/home/phoneserver&lt;/code&gt;와 우분투 컨테이너 안에서 보는 &lt;code&gt;/root/termux-home/phoneserver&lt;/code&gt;가 바인드 마운트로 연결된 같은 파일이다. 어느 쪽에서 편집해도 같은 파일이 바뀌지만, 이 이중 구조를 모르면 &amp;ldquo;분명히 저장했는데 안 보인다&amp;quot;는 혼란에 빠지기 딱 좋다.&lt;/p&gt;</description></item><item><title>Termux + proot-Ubuntu로 휴대폰에 리눅스 환경 만들기</title><link>https://mhub.uk/posts/it-01-termux-proot/</link><pubDate>Sun, 20 Sep 2026 17:00:00 +0900</pubDate><guid>https://mhub.uk/posts/it-01-termux-proot/</guid><description>&lt;p&gt;서랍 속 유휴 휴대폰을 서버로 쓰기로 결심한 다음 가장 먼저 부딪힌 질문은 &amp;ldquo;루트 권한도 없는 안드로이드 폰에서 어떻게 진짜 서버 환경을 만들 것인가&amp;quot;였습니다. 이번 글에서는 실제로 이 서버를 세팅할 때 사용한 Termux + proot-distro 조합을 정리합니다.&lt;/p&gt;
&lt;h2 id="왜-termux인가"&gt;왜 Termux인가&lt;/h2&gt;
&lt;p&gt;Termux는 안드로이드 위에서 동작하는 터미널 에뮬레이터이자 패키지 관리 환경입니다. 루트 권한 없이도 &lt;code&gt;apt&lt;/code&gt; 기반 패키지 설치, SSH, Python, Node.js 실행이 가능합니다. 다만 Termux 자체의 리눅스 환경은 안드로이드 샌드박스 제약 때문에 일반 리눅스 배포판과 100% 동일하지는 않습니다. 그래서 그 위에 &lt;code&gt;proot-distro&lt;/code&gt;를 얹어 진짜 우분투 환경을 통째로 격리 실행하는 방식을 선택했습니다.&lt;/p&gt;</description></item></channel></rss>