-
CMP Wasm 으로 블로그 개발 - 1 - Android Termux 로 서버만들기IT 2025. 12. 29. 00:38SMALL
요즘 CMP 에 관심이 많이 생겼습니다. 그리고 조만간 회사에서도 CMP 로 신규앱 개발을 할 예정이기도 해서 미리 경험을 해보기위해 사이드프로젝트를 하나 시작하게 되었습니다. 지금 운영하고있는 tistory 블로그를 CMP 로 새롭게 만들고 서버환경도 구성해서 운영을 해보는것으로 결정이 되었는데요, 예전부터 블로그는 플랫폼을 이용하는게 아니라 제 스스로 만들고 운영해보고 싶은 생각이 있었습니다. 마침 지금이 좋은 시기인것같아 시작을 하게 되었습니다. 이글을 작성하는 동안 front 쪽은 계속해서 작업 중에있고 CMP ktor 웹서버를 올리고 .dev 도메인을 구입하여 https 까지 적용해 놓은 상태입니다. 또한 간단하게 github action 을 이용하여 현재 운영중인 서버에 웹서버와 프론트의 CI/CD 까지 적용을 해보았습니다.
블로그를 만들기까지의 여정을 공유해보려 합니다.
목차는 다음과 같습니다.
- Android Termux 로 서버 만들기
- Let's Encrypt 서비스를 이용하여 https 인증서 발급 및 도메인에 https 적용하기
- Ktor 웹 애플리케이션 서버 만들기
- CMP Wasm 으로 SPA 웹앱 만들기
일반적인 구성이라면 우선 CMP 로 웹 프론트와 ktor 서버를 만드는게 먼저 들어가야하지 않나 싶긴 한데, 아직 작업중이라서 순서가 서버부터 시작하는점은 양해 부탁드리겠습니다.
1. Android Termux 로 서버 만들기
1-1. Termux 를 사용하게된 이유
웹서버를 자체적으로 구성하기 위해서는 우선 서버가 필요한데요, 처음 고려했던것은 AWS 같은 클라우드 서비스를 이용하는 것이었습니다. 그러나 성능자체는 낮아도 상관은 없었지만 비용이 발생할 수 있다는것이 조금 마음에 걸렸습니다. 그래서 대체제를 찾던중 집에서 게임용으로 사용중인 데스크탑에 올려볼까도 생각을 해봤지만 간단한 웹서버를 돌리기위해서 너무 과하다고 생각했고, 제가 간간히 게임도 하는지라 안정적으로 운영하기는 힘들겠다는 생각이 들었습니다.
여러가지를 찾아보던중에 Android 기반 휴대폰을 서버로 활용할수 있다는 글을 보았고, 마침 집에 놀고있는 S21 휴대폰이 있었기때문에 이곳에 설치를 해보기로 하였습니다.
1-2. Termux 설치
기본적으로 Android OS 에서는 루팅을 하지않는한 유저가 직접 root 권한으로 무언가 작업을 할 수는 없습니다. 하지만 웹 서버나 개발용 환경을 구성하는 데 꼭 root 권한이 필요한 것은 아니기 때문에, 유저 권한 환경에서 Linux와 유사한 셸을 제공해주는 도구를 사용하면 충분히 서버를 운영할 수 있습니다.
이때 사용할 수 있는 도구가 바로 Termux입니다.
Termux는 Android 위에서 동작하는 터미널 에뮬레이터이자 패키지 관리 환경으로, 리눅스 배포판과 유사하게 apt 기반 패키지 관리, 셸 환경, 각종 개발 도구를 사용할 수 있습니다.
쉽게 말해 Android 위에 작은 Linux 사용자 공간을 올려서 사용하는 느낌이라고 생각하시면 됩니다.Termux 는 Play store 정책 변경으로 인하여 더이상 스토어에서는 다운로드나 업데이트가 불가능하고, https://f-droid.org 이곳 f-droid 의 공식 홈페이지 또는 github 리포지터리에서 다운받을 수 있습니다.

f-droid 앱 F-droid 를 설치 후 앱을 실행하면 다양한 앱들을 제공해주고 있는데요, 이중에서 termux 를 검색하여 Termux Terminal emulator with packages 를 다운로드 받습니다.
설치후 Termux 를 실행하게되면 익숙한 터미널이 휴대폰창 가득 메워지게 되는데요. 이게 바로 유저권한 환경의 셸이고 이걸 이용하여 nginx, ktor 등의 웹 서버와 애플리케이션 서버를 올릴수 있게 됩니다.

1-3. ssh 접속
조금더 편하게 작업하기위해 termux 환경에 외부 컴퓨터로 ssh 로 접근해서 작업을 할 수 있게 해보겠습니다.
먼저 접속을 하기위해서는 Username 와 password 가 필요하겠죠?
Termux 에서는 root권한이 아니라 유저권한으로 실행된다고 말씀드렸었는데요, 이를 확인하기위해 터미널에서 whoami 를 입력해보면
~ $ whoami u0_a34이런식으로 root 가 아닌 별도의 사용자명이 뜨는것을 확인할 수 있습니다.
또 초기 비밀번호 설정의 경우 'passwd' 명령어를 이용하여 세팅할 수 있습니다.
이 계정정보와 비밀번호를 이용하여 ssh 에 접속을 할 수 있습니다.
이제는 ssh 서비스를 실행시켜 보겠습니다.
Termux 에서pkg install openssh
sshd명령어를통해 ssh 서비스를 실행시켜주면 termux 에서는 기본적으로 8022 포트를 활용하여 ssh 접속이 가능하게 됩니다.

termux ssh 연결 이제는 조금더 편하게 컴퓨터에서 작업을 할 수 있게 되었습니다!
1-4. nginx 로 웹서버 띄워보기
이제 nginx 를 한번 올려볼까요 ?
pkg install nginx
nginx을 실행하면 기본적으로 휴대폰의 ip 주소와 8080 포트번호로 nginx 웹 서버가 올라간것을 확인할 수 있습니다.
ex) http://192.168.1.123:8080
1-5. Android OS 절전·백그라운드 정책과 wakelock 사용
여기까지 설정을 마치면 Android 휴대폰에서도 웹 서버가 정상적으로 동작하는 것을 확인할 수 있습니다.
하지만 실제로 서버처럼 장시간 운영해보려고 하면 곧 한 가지 문제를 마주하게 됩니다.바로 Android OS의 절전 및 백그라운드 앱 관리 정책입니다.
Android는 배터리 사용 시간을 늘리기 위해
- 화면이 꺼진 상태에서
- 일정 시간 이상 백그라운드에서 동작하는 앱을
자동으로 중지하거나 리소스를 제한하는 정책을 가지고 있습니다.
이로 인해 Termux에서 실행 중인 서비스들이 의도치 않게 종료되는 상황이 발생할 수 있습니다.
절전 정책으로 인해 발생할 수 있는 문제
실제로 사용해보면 다음과 같은 현상을 겪게 됩니다.
- 화면을 끄고 일정 시간이 지나면 서버 응답이 끊김
- ssh 접속이 갑자기 종료됨
- 재접속 시 서비스가 내려가 있음
즉, Android를 서버로 사용하기 위해서는 절전 정책에 대한 대응이 필수입니다.
wake-lock을 이용한 대응
Termux에서는 이러한 문제를 완화하기 위해
wakelock이라는 기능을 제공합니다.wakelock은 Android 시스템에 '지금 이 앱은 백그라운드에서도 계속 실행 중이어야 한다' 라고 알려주는 역할을 합니다.
Termux에서 termux-wake-lock 명령어를 실행하면 wakelock을 활성화할 수 있습니다.
이 명령어를 실행하면
- 화면이 꺼진 상태에서도
- CPU가 sleep 상태로 들어가지 않도록 유지되어
서버 프로세스가 비교적 안정적으로 동작하게 됩니다.
이와 함께 Termux 에 배터리최적화 제외, 백그라운드 데이터 제한 등의 제한사항들을 풀어놓는다면 더 안정적으로 서비스 운영이 가능해 집니다.
다음 장에서는 지금까지 구성한 termux 기반의 서버에 올려진 nginx 에 https 적용기를 다뤄보도록 하겠습니다.
LIST'IT' 카테고리의 다른 글
Android clean architecture 적용기 미친글 (2) 2024.06.19 Android Activity lifecycle (0) 2024.06.09 Model 과 DTO 그리고 VO 에 관한 미친글 (1) 2024.03.14 웹 서버 와 웹 애플리케이션 서버 (1) 2023.12.06