DevOps 엔지니어 K씨에게는 언제부터인지 어렴풋이 품게 된 로망이 하나 있었다.
‘나만의 홈 서버를 구축하고 싶다.’
하지만 서버를 새로 사기엔 재정적인 부담이 있었기에 기약 없는 희망사항으로만 간직하고 있던 것이었다.
어느날 K씨는 가정 내에서 사용할 가계부 대시보드가 필요해 AI 툴로 어렵지 않게 제작했다. Python Flask로 구현한 간단한 웹 앱이었다.
문제는 이 앱을 어디에 배포해서 사용할 것이냐였다. 이런저런 클라우드 서비스를 살펴보던 K씨는 순간 떠올렸다. 핸드폰을 몇 번 바꾸면서 책장 서랍 속에 방치해뒀던 갤럭시 노트 8을…
그러자 K씨가 소중히 간직하고 있던 홈 서버 로망이 다시 불타오르기 시작했다.
‘갤럭시 노트 8에 가계부 앱을 올리자!’
스마트폰을 집에서 서버로 사용하면 그것이 홈 서버 아니겠는가? 첫 도전으로 부담도 적어서 좋았다.
K씨는 개발한 가계부 웹 앱을 GitHub 비공개 레파지토리에 부랴부랴 업로드한 뒤, ‘안드로이드 홈 서버 구축’에 대해 조사하기 시작했다.
앞으로 이어지는 내용은 스마트폰을 홈 서버로 구축해 웹 앱을 배포한 K씨의 여정을 기록한 것이다.
안드로이드 스마트폰에 Termux 설치 및 기본 설정
안드로이드 기기를 홈 서버, 그러니까 Linux 환경처럼 사용하려면 필수인 앱이 있다.
바로 Termux인데, Bash 또는 Zsh 쉡을 사용할 수 있게 해주는 터미널 에뮬레이션 툴이다.

Termux는 구글 스토어에도 등록되어 있지만, 최신 버전은 F-Droid라는 플랫폼에서 받을 수 있다. 보안을 고려한다면 아래 링크에서 최신 버전을 사용하는 것이 권장된다.
https://f-droid.org/en/packages/com.termux/
서버로 사용할 안드로이드 기기를 깔끔하게 초기화한 다음 Termux까지 설치했다면 아래처럼 Termux가 절전 상태로 저절로 꺼지지 않도록 설정한다. 서버는 의도치 않게 꺼지면 안 되니까.
설정 → 디바이스 관리 → 배터리 → 절정 대상이 아닌 앱 → 앱 추가로 이동해서 Termux 추가
이제 Termux 앱에 들어가서 아래 순서로 초기 설정을 한다.
- Termux 접속 후
termux-setup-storage명령어 실행 후 팝업 창 뜨면허용클릭- Termux가 장치 내 저장소에 접근할 수 있게 한다.
pkg upgrade -y로 다운 가능한 패키지를 최신 버전으로 업그레이드- 시간이 꽤 소요될 수 있음
다음은 PC에서 Termux 환경에 SSH로 원격 접속하는 데에 필요한 설정이다.
pkg install openssh -y명령어로 OpenSSH 설치passwd명령어로 Termux 접속용 비밀번호 설정 (2번 입력)sshd명령어로 SSH 서버 실행ifconfig명령어로 현재 안드로이드 장치의 IP 주소 확인 (wlan0의inet값 확인)whoami명령어로 Termux의 사용자 이름 확인

조그마한 스마트폰 화면에서 해야 하는 작업은 여기까지이다. 이제 자신의 PC에서 마저 진행하면 된다.
PC 내 터미널에서 Termux로 원격 접속하기
이제 Termux 환경에 원격 접속할 PC에서 작업할 차례다. 익숙한 작업 환경이니 마음도 한결 가벼워졌다.
혹시나 헷갈릴 수 있어서 이야기하지만 사용하는 PC와 안드로이드 장치는 동일한 네트워크 안에 있어야 한다. 쉽게 말하자면, 두 기기 모두 같은 공유기에 연결되어야 한다는 것이다.
K씨는 WSL2를 애용하고 있기 때문에 Termux에 SSH 접속할 때에도 WSL을 사용했으나, 얼마 지나지 않아 Windows의 기본 PowerShell에서도 SSH을 사용할 수 있음을 깨달았다.
굳이 WSL이라는 가상환경을 한 번 더 거쳐 Termux 장치에 접속할 이유가 없었던 K씨는 Windows의 기본 터미널에서 원격 접속하기 시작했고, 기분탓일 수도 있으나 그 이후부터 Termux의 반응속도가 더 빨라졌다고 한다.
이제 본격적으로 Termux 환경에 접속해보자. PC의 터미널에서 아래 명령어로 안드로이드 장치의 Termux 환경에 접속한다.(8022는 Termux의 기본 SSH 포트번호)
ssh {Termux 사용자 이름}@{안드로이드 장치의 IP 주소} -p 8022계속하겠냐는 질문이 뜨면 yes를 입력하고, 아까 Termux에서 설정한 비밀번호까지 입력하면 Termux 환경에 SSH 접속 성공.

이제 원격 접속한 터미널에서 앱을 배포하면 된다.
홈 서버에 어떤 앱을 배포하든, 대부분 GitHub을 통해 소스코드가 관리되기 때문에 Termux에서 GitHub을 설치하고 계정 연동하는 방법을 아래에 정리했다.
Termux에서 Github 레파지토리 내려받기
먼저 pkg install git -y 명령어로 Git 설치한다.
GitHub 비공개 레파지토리에 소스코드를 관리할 경우, SSH 키 설정이 필요하다. 소스코드를 받을 환경(Termux)에서 생성한 SSH 키를 GitHub 계정에 연동하는 과정이다.
먼저 아래 명령어를 실행한 다음, 질문 메시지 나올 시 계속 엔터키 눌러 기본값으로 설정한다. (SSH 키 저장 위치 및 보안 설정하는 과정이다.)
ssh-keygen -t ed25519 -C "{GitHub 계정 이메일}"
eval "$(ssh-agent -s)" 명령어로 ssh-agent를 백그라운드에서 실행 후, ssh-add ~/.ssh/id_ed25519 명령어로 개인키를 등록한다.

이제 아까 생성된 키 중에 공개키의 내용을 복사한 다음, 웹 브라우저에서 GitHub 홈페이지에 접속한다.
그리고 아래 과정을 따라 자신의 계정과 Termux 환경의 SSH 키를 연동한다.
- GitHub 프로필 클릭 > Settings
- 좌측 메뉴에서 SSH and GPG Keys 클릭
New SSH key버튼 클릭- Title은 원하는 이름으로 → 예: Termux-Android-Phone
- Key: 아까 복사한 공개키 붙여넣기
Add SSH key클릭
이제 Termux 환경에서 git clone 명령어로 GitHub에 올렸던 비공개 레파지토리의 프로젝트도 받아올 수 있다.
개발한 앱 배포
만약 Termux에서 배포할 앱의 서버를 실행했다면, 해당 서버가 계속 안정적으로 실행되기 위해 tmux(Terminal Multiplexer)라는 툴을 사용하는 것이 좋다.
tmux는 터미널 세션 유지 및 분할 툴로, 우리는 특히 앱 서버를 실행한 세션을 계속 유지하는 용도로 사용할 것이다.
먼저 아래 순서로 tmux를 설치한 다음 새로운 세션을 실행한다.
pkg install tmux -y명령어로 tmux 설치tmux명령어로 앱 서버 실행용 세션 새로 시작
이제 새로 열린 세션에서 각자 실행할 앱 서버를 실행한다.

앱 서버 실행이 끝났다면 CTRL + b 누른 다음 d 키를 누른다.
tmux 명령 모드에 진입한 다음 현재 세션에서 나오는 것인데, 아래처럼 세션에서 나왔다는 명령어가 뜨면서 처음 Termux 터미널 환경으로 돌아올 것이다.

그럼 tmux로 켜진 세션은 계속 유지되고, 해당 세션에서 실행한 앱 서버도 계속 돌아가게 되는 것이다.
나중에 tmux attach 명령어(또는 tmux a)로 해당 세션에 다시 진입할 수 있다. 앱 서버를 업데이트하거나 디버깅 시 유용하다.
마무리
위 내용으로 아마 집 안에서 사용할 서비스는 무리없이 배포할 수 있는 환경이 되었을 것이다.
물론 DevOps 엔지니어로서 본 환경의 개선점도 보인다. 지금 당장 생각나는 것은 아래와 같다.
- 배포한 앱 서버를 공유기 외부에서도 접속할 수 있도록 설정
- 안전하게 노출시킬 수 있는 Cloudflare Tunnel 서비스 활용
- 소스코드 수정 후 GitHub 업로드 시 Termux 환경에서도 자동으로 업데이트 (지속적 배포)
- 현재 사용 중인 홈 서버에서 무리되지 않는 경량 CD 툴 필요
안드로이드 Termux 덕분에 스마트폰으로 가벼운 홈 서버를 구축하는 경험을 할 수 있었다. 나만의 홈 서버 구축이라는 로망도 일정 부분 해소되어 재밌었다.
만약 안 쓰는 안드로이드 스마트폰이 있다면, 그리고 클라우드 서비스 없이 본인이 직접 서비스를 배포해보고 싶다면 위에서 정리한 방법으로 작은 홈 서버를 꾸려보는 것을 추천한다. 직접 해보면서 느낄 수 있는 즐거움이 분명 있을 것이다.