Android 폰에 웹서버 설치하기

software | 2024-11-03

철지난 스마트폰을 보면 하드웨어 성능은 나쁘지 않은데 이를 활용할 방법은 없을까 고민해 왔다. 보통은 대체제들도 가격이 워낙 싸서 그다지 유용한 경우는 많지 않았다. 라즈베리 파이 가격이 많아 올라서 작은 서버로 사용할 수 있을지 시도해 봤다.

서버는 리눅스 계열이 익숙해서 살펴보니 하드코어하게 폰을 다 밀고 설치하는 방법도 있는데 설치할 수 있는 폰도 제한적이고 위험도도 높아 보였다. 가장 많이 사용하는 방법은 터먹스(Termux) 앱을 사용하는 방법 같다. 터먹스는 "안드로이드 터미널 에뮬레이터와 리눅스 환경 앱(Android terminal emulator and Linux environment app)"이라고 설명이 되어 있는데 루팅 필요없이 리눅스 환경을 사용할 수 있다고 한다. 앱을 깔고 실행하면 터미널 창이 나오고 얼추 리눅스 비슷한 환경이다.

폰에서 터미널을 계속 쓸수는 없으니 ssh 연결 방법을 참고해서 sshd를 올리고 원격으로 접속한다.

whoami # 현재 사용자 이름
passwd # 비밀번호 설정
pkg install openssh
sshd

기본 8022로 ssh가 열리고 설정한 비밀번호로 접속하면 된다. 퍼블릭키 추가하면 별도 설정없이 비밀번호 없이도 잘 연결된다.

ssh -p 8022 u0_a332@192.168.1.1

Nginx도 그냥 설치하고 실행하면 된다.

pkg install nginx
nginx

설정 파일은 /data/data/com.termux/files/usr/etc/nginx/nginx.conf에 들어 있는데 앞부분 /data/data/com.termux/files/usr$PREFIX로 설정되어 있고 여기를 루트 디렉토리 처럼 생각하면 된다.

vi $PREFIX/etc/nginx/nginx.conf

nano는 기본으로 들어 있는데 vi는 없어서 pkg install vim으로 설치해야 쓸 수 있다.

ssh로 연결해서 사용하다 보면 계속 해서 연결이 끊기거나 지연되는데 폰이 슬립으로 들어가면 안드로이드가 프로세스를 슬립시켜서 그렇다. 안드로이드 노티피케이션에서 웨이크 락(wake-lock)을 요청해도 되고 터미널에서 코드로 활성화 할 수도 있다.

termux-wake-lock

안드로이드 버전이나 제조사에 따라서 조금씩 다른것 같은데 배터리 최적화 기능을 끄거나 터먹스를 배터리 관리 대상에서 빼거나 하는 추가 설정도 필요해 보인다. 터먹스앱이 백그라운드로 전환되지 않게 전면에 위치하도록 열어둬야 한다는 글도 찾아볼 수 있었다.

crontab도 사용하려면 설치하고 실행해 준다. 위의 웨이크 락이 안걸려 있으면 크론이 이상한 간격으로 작동한다든가 한꺼번에 몰아서 작동하는 현상을 볼 수 있다. Healthchecks.io 같은 서비스로 계속해서 잘 도는지 확인해 볼 수 있다.

pkg install cronie
crond

안드로이드를 재부팅하면 터먹스를 자동으로 실행해 준다거나 termux-services를 통해 runit이나 systemd같이 자동으로 뜨게 관리도 가능하다. 나는 top에 프로세스가 늘고 복잡해지는 것이 싫어서 설치했다가 다시 지웠다. 대신 .bashrc에 매번 실행되게 등록해 놓고 쓰고 있다. 폰을 재부팅하면 터먹스를 한번 눌러주기만 하면 된다. 프로세스 체크하는 부분은 클로드(Claude)가 만들어줬다.

termux-wake-lock
export EDITOR="vi"

if ! pgrep -x "crond" > /dev/null
then
    echo "Starting crond."
    sudo crond
else
    echo "crond   is running."
fi

계속 켜져 있게 하는 부분에서 처음에 약간의 삽질을 했지만 지금은 제로보드로 돌아가는 오래된 사이트를 올려뒀고 잘 작동되고 있다. 월비용을 내고 사용하는 VM 호스팅보다 훨씬 좋은 CPU/메모리 자원으로 작동하고 있다. 트래픽이 거의 없는 사이트여서 장애에 대한 부담은 없다. 공유기 IP 바뀔때 손을 봐줘야 하는데 몇 달 써보니 아직 IP가 자동으로 바뀌거나 하지는 않았다.

충전기에 연결된 상태로 계속 두고 있어서 배터리가 좀 걱정되는데 termux-battery-status같은 패키지로 배터리 상태 검사도 가능하다. 기종에 따라 85%까지만 충전되게 하는 기능이 있는 경우도 있어서 설정해 두고 쓰고 있다. 집에 스마트 플러그가 몇 개 있어서 정기적으로 충전기 연결을 끊어놓을 생각이다.

Comments

Post a comment

:

: 공개 되지 않습니다. Gravatar를 표시 합니다.

:

: HTML 태그를 사용할 수 없습니다.