안 쓰는 핸드폰을 서버로 쓰기
서랍 속 안드로이드 폰에 Termux를 깔아 작은 서버로 쓰는 방법과, 그 폰으로 Uptime Kuma 모니터링 서버를 만든 예를 정리했어요.
Termux는 루팅 없이 바로 쓰는 안드로이드 터미널이자 리눅스 환경이에요. APT로 패키지를 깔고 Node.js, Python을 쓸 수 있어서, AI로 만든 봇, 작은 API, 자동화, 모니터링처럼 혼자 쓰는 작은 서비스는 클라우드 서버 대신 남는 폰에서 돌릴 수 있어요.
혼자 쓰는 작은 서비스용이에요. 트래픽이 큰 서비스나 중요한 데이터는 클라우드에 두세요.
이렇게 되면 성공이에요
- 1접속
같은 와이파이의 다른 기기 브라우저에서 http://<폰 IP>:<포트> 가 열려요. - 2유지
화면을 꺼 두고 시간이 지나도 서버가 계속 응답해요. - 3재부팅
폰을 다시 켜면 서버가 자동으로 다시 올라와요.
한눈에 보는 진행 순서
- 얼마나 아끼나, 무엇을 할까
돈 계산과 할 수 있는 일 목록
자세히 보기 → - Termux 설치
Google Play 또는 F-Droid에서 받아요.
자세히 보기 → - 패키지 설치
Node.js, Python, git, openssh
자세히 보기 → - 서버 띄우기
같은 와이파이에서 폰 IP로 접속해요.
자세히 보기 → - 24시간 켜 두기
충전기, wake-lock, 배터리 최적화 끄기, 자동 시작
자세히 보기 → - 원격 접속
Mac에서 SSH로 폰에 들어가요.
자세히 보기 → - 활용 예: Uptime Kuma
남는 폰을 모니터링 서버로
자세히 보기 → - 막힐 때
자주 막히는 다섯 가지와 해결법
자세히 보기 →
얼마나 아낄 수 있나
혼자 쓰는 작은 서버를 1년 돌린다고 치면, 남는 폰은 전기료만 들어요.
| 처음 드는 돈 | 1년 동안 | |
|---|---|---|
| 남는 폰 | 0원 | 전기료 약 2,400~6,000원 |
| 라즈베리파이 5 (4GB) | 약 18만 원 (본체 $110 + 전원, 메모리카드) | 전기료 약 4,000~10,000원 |
| 클라우드 서버 (가장 작은 요금제) | 0원 | 약 6.7만~10만 원 (한 달 $4~6) |
| 좋은 점 | 아쉬운 점 | |
|---|---|---|
| 남는 폰 | 배터리가 있어 잠깐 정전에도 버팀, 와이파이 내장 | 안드로이드가 백그라운드 프로세스를 끌 수 있음 |
| 라즈베리파이 | 리눅스 그대로, 부품 교체 쉬움 | 2026년 메모리 값 상승으로 본체 값이 크게 오름 |
| 클라우드 | 고정 IP, 밖에서 바로 접속 | 매달 돈이 나가고 메모리가 512MB~1GB로 작음 |
계산 기준: 폰은 화면 끄고 가벼운 서버만 돌릴 때 약 2~3W, 라즈베리파이 5는 약 3~5W를 하루 종일 쓴다고 가정했어요. 전기는 주택용 누진 1~2단계 단가(kWh당 약 135~230원, 기후환경요금과 연료비조정 포함 어림값), 1달러는 1,400원으로 계산했어요. 실제 전기료는 집의 사용량 구간에 따라 달라요.
실제로 돌려 보니
이 자료의 예시 폰은 2019년에 나온 갤럭시 A50(Android 11, 쓸 수 있는 메모리 약 3.6GB)이에요. 10월 17일부터 Uptime Kuma를 끄지 않고 돌리고 있고, 저장 공간은 52GB 중 17GB를 써요. 집 서버 3곳을 1분마다 확인하고 문제가 생기면 텔레그램으로 알려 줘요.

이 폰으로 할 수 있는 것
혼자 쓰는 작고 가벼운 일이 잘 맞아요. 폰 부담이 가벼운 것부터 해 보세요.
| 하는 일 | 예시 | 부담, 난이도 |
|---|---|---|
| 텔레그램 봇 | 명령을 보내면 답하는 봇, 할 일 알림 봇 (Node.js, Python) | 가벼움, 쉬움 |
| 정해진 시각 자동화 | 매일 아침 날씨, 환율, 새 글 모아서 보내기 (cron) | 가벼움, 쉬움 |
| 집 안 웹 페이지 | 가족이 보는 메모, 링크 모음, 간단한 대시보드 | 가벼움, 쉬움 |
| 혼자 쓰는 작은 API | 내 앱이나 단축어가 부르는 Express, FastAPI 서버 | 가벼움~보통, 보통 |
| 사이트 감시 | 내 서버, 블로그가 죽으면 알림 (Uptime Kuma, 아래 예시) | 보통, 보통 |
| 파일 동기화 | 폰과 PC 사이 폴더 자동 동기화 (Syncthing) | 보통, 쉬움 |
정해진 시각에 돌리기 (cron)
pkg install cronie termux-services # Termux를 한 번 닫았다 열고 sv-enable crond crontab -e
crontab에 한 줄씩 적어요. 예를 들어 매일 아침 8시에 스크립트를 돌리려면:
0 8 * * * node ~/bots/morning.js
파일 동기화 (Syncthing)
pkg install syncthing syncthing
처음 설정 화면은 폰 안에서만 열려요. 폰 브라우저로 http://127.0.0.1:8384 를 열고 설정 → GUI → GUI 수신 주소를 0.0.0.0:8384로 바꾸면, 같은 와이파이의 PC에서 http://<폰 IP>:8384 로 열 수 있어요. 이때 GUI 비밀번호도 꼭 정해 두세요.
동영상 변환, 큰 데이터베이스, 사람이 많이 들어오는 공개 서비스는 폰에 맞지 않아요. 발열과 배터리 부담이 커요.
1. Termux 설치
Google Play 또는 F-Droid 중 한 곳에서 받아요.
Termux:Boot 같은 플러그인은 Termux를 받은 곳과 같은 곳에서 받아야 해요. 서명이 달라서 섞으면 안 돼요.
공식 사이트는 termux.dev, 소스는 GitHub termux/termux-app 이에요.
2. 패키지 설치
pkg update pkg install nodejs python git openssh
3. 간단한 서버 띄우기
둘 중 편한 쪽 하나면 돼요.
Node.js
npx http-server
직접 만든 express 파일 하나를 node로 실행해도 돼요.
Python
python -m http.server 8000
접속
같은 와이파이에 연결된 컴퓨터나 폰 브라우저에서 아래 주소로 열어요.
http://<폰 IP>:<포트>
4. 24시간 켜 두기
termux-wake-lock
Termux:Boot는 ~/.termux/boot/ 안의 스크립트를 부팅 때 실행해요. 여기에 wake-lock, sshd, 내 서버 실행을 넣어요.
#!/data/data/com.termux/files/usr/bin/sh termux-wake-lock sshd # 여기에 내 서버 실행 명령
스크립트 파일은 chmod +x 로 실행 권한을 주고, 설치 뒤 Termux:Boot 앱을 한 번 열어 두세요.
Android 12 이상은 phantom process killer가 백그라운드 프로세스를 죽일 수 있어요.
5. 원격 접속 (선택)
Termux의 sshd는 8022 포트를 써요.
폰의 Termux에서:
passwd whoami sshd
Mac에서 접속하고, 열쇠 로그인으로 바꿔요.
ssh -p 8022 <사용자>@<폰 IP> ssh-copy-id -p 8022 <사용자>@<폰 IP>
활용 예: 안 쓰는 안드로이드 폰을 모니터링 서버로 (Uptime Kuma)
집 서버나 배포한 웹사이트가 살아 있는지 알림으로 받는 구성이에요. 감시 도구를 감시 대상 서버 안에 두면 같이 죽으니, 남는 폰을 따로 감시 서버로 써요.
갤럭시 A50, Android 11에서 확인한 구성이에요.
- Termux에 Debian 깔기
pkg update pkg install proot-distro openssh proot-distro install debian proot-distro login debian
- Debian 안에서 Uptime Kuma 설치
apt update apt install -y nodejs npm git git clone https://github.com/louislam/uptime-kuma.git cd uptime-kuma npm run setup node server/server.js
Uptime Kuma는 Node.js 20.4 이상이 필요해요.
- 브라우저로 접속
http://<폰 IP>:3001 을 열고 관리자 계정을 만들어요.
- 꺼지지 않게
termux-wake-lock, 배터리 '제한 없음', ~/.termux/boot/ 시작 스크립트(wake-lock, sshd, Kuma 실행). 4번과 같아요.
자세히 보기 →
모니터 추가
새 모니터 추가 → 모니터 타입에서 골라요.
| 감시할 것 | 모니터 타입 |
|---|---|
| 웹사이트 (접속 여부, 응답 시간) | HTTP(s) |
| 서버 | Ping |
| API (/api/health) | HTTP JSON 쿼리 |
| 데이터베이스 (PostgreSQL 5432) | TCP 포트 |
| 컨테이너 | Docker 컨테이너 |
| SSL 인증서 만료일 | HTTPS 모니터의 인증서 정보 |
| 스케줄 작업이 정해진 시간에 실행됐는지 | Push |
확인 주기 60초, 재시도 2회를 권해요. 짧은 끊김에는 알림이 안 와요.
텔레그램 알림
- 설정 → 알림 → Telegram
BotFather에서 받은 봇 토큰과 채팅 ID를 넣어요.
- 모든 모니터에 적용
'기본적으로 활성화'와 '기존 모니터에 모두 적용'을 켜요.
- 테스트
테스트 버튼으로 메시지가 오는지 확인해요.
- 1분마다 확인확인 주기 60초
- 세 번 연속 실패첫 실패 뒤 재시도 2회
- 다운 알림약 2~3분 뒤
- 다시 살아나면바로 온라인 알림
상태 페이지
상태 페이지를 만들면 OpenAI 상태 페이지처럼 공개 페이지가 생겨요. 아래 API로 내 대시보드에서도 상태를 읽을 수 있어요.
/api/status-page/<slug> /api/status-page/heartbeat/<slug>
막힐 때 이렇게 해 보세요
몇 분 뒤 서버가 꺼져요
Android 12 이상은 phantom process killer가 Termux가 띄운 프로세스를 강제로 끌 수 있어요. 이건 휴대폰 설정만으로는 안 꺼지고 아래 방법이 필요해요.
- 개발자 옵션에 메뉴가 있으면 (주로 Android 14 이상)
개발자 옵션 → '하위 프로세스 제한 사용 중지'를 켜요. 개발자 옵션은 설정 → 휴대전화 정보 → 소프트웨어 정보 → 빌드번호를 7번 누르면 생겨요.
- 메뉴가 없으면 (Android 12, 13)
adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent" adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647" adb shell settings put global settings_enable_monitor_phantom_procs false
PC에 adb를 깔고 폰의 USB 디버깅을 켠 뒤, PC에서 아래 명령을 실행해요. 재부팅하면 풀릴 수 있어서 재부팅 뒤 다시 확인해요.
다른 기기에서 접속이 안 돼요
# 예: Vite 개발 서버 npx vite --host 0.0.0.0 # 예: Flask flask run --host 0.0.0.0
pkg update에서 오류가 나요
내려받는 미러 서버가 느리거나 막힌 경우가 많아요. 다른 미러로 바꾸고 다시 해요.
termux-change-repo pkg update
폰을 다시 켜면 서버가 안 올라와요
폰 IP가 자꾸 바뀌어요
공유기 관리 화면의 'DHCP 고정 할당'(이름은 공유기마다 달라요)에서 폰의 MAC 주소에 IP를 고정해요. 폰의 와이파이 설정에서 'MAC 주소 유형'을 '휴대전화 MAC'으로 바꿔야 고정이 유지돼요.
한계와 주의
설치처, 포트, 부팅 스크립트 위치는 Termux와 Termux:Boot 공식 저장소, Kuma 설치와 Node.js 버전은 Uptime Kuma README 기준이에요.
2LAZZZY / 2026-10-19 기준. 이 페이지에는 실제 키나 로그인 정보가 없어요. 체크 표시는 이 기기에만 저장돼요.