안드로이드 폰을 개발 서버로 만들기

안드로이드 폰을 개발 서버로 만들기

최근에 안드로이드 폰에서 F-Droid와 Termux로 여러가지를 해봤는데 상당히 유용한 것 같다. 안타깝게도 도커를 구동하려면 루팅이 필수적으로 필요해서 패스하였지만 Debian을 컨테이너 형태로 띄워서 그 안에서 실행하면 서버로도 충분히 활용이 가능했다.

이 글에서는 Debian 컨테이너를 띄우고 code-server를 활용해서 브라우저 내에서 VSCode 환경으로 접근해서 개발 작업을 진행할 수 있도록 하는 것, ssh로 원격으로 접근할 수 있는 방법, GUI가 필요한 경우를 대비해 VNCserver 설정 과정을 다루고 있다.


개발 환경 설치


F-Driod & Termux

https://f-droid.org/F-Droid.apk

위 링크에서 받은 apk를 기기에 설치하여 실행한 후 termux를 검색하여 설치한다.

설치 후 실행해서 아래 화면이 뜨면 완료되었다.

다른 패키지를 설치하기 위해서 아래 명령어를 입력해준다.

pkg update -y && pkg upgrade -y


proot-distro

기본 환경에서도 개발 및 다양한 작업이 가능하지만 제약되는 사항이 많아서 다른 리눅스 배포판을 컨테이너 형태로 띄울 수 있는 proot-distro를 활용하여 그 안에 개발환경을 셋팅할 것이다. 따라서 아래 명령어를 입력하여 설치해준다.

pkg install -y proot-distro

설치가 완료되면 원하는 리눅스 배포판을 설치할 수 있다. 여기서는 debian으로 진행하지만 아래와 같은 배포판을 선택하여 설치할 수 있다.

  • alpine: Alpine Linux (edge)
  • archlinux: Arch Linux ARM
  • debian: Debian (stable)
  • fedora: Fedora 37 (AArch64 only)
  • manjaro-aarch64: Manjaro AArch64
  • opensuse: OpenSUSE (Tumbleweed)
  • pardus: Pardus (yirmibir)
  • ubuntu: Ubuntu (22.04)
  • void: Void Linux
proot-distro install debian

위는 설치가 진행되는 화면이고 설치가 완료되면 아래 명령어로 해당 컨터이너에 접근할 수 있다.

proot-distro login debian
# 여기부터는 컨테이너 내부
apt update -y && apt upgrade -y


code-server

https://github.com/coder/code-server

필자가 애용하는 code-server를 안드로이드에서 실행한 후 접근할 것이다. 위 링크에 접속해서 가장 최근에 릴리즈 된 버전에서 arm64 용으로 만들어진 tar.gz 파일로 진행하면 된다. 참고로 apt로 직접 설치하는 방법도 가능하다.

apt install -y wget
wget https://github.com/coder/code-server/releases/download/v4.16.1/code-server-4.16.1-linux-arm64.tar.gz
tar -xvf code-server-4.16.1-linux-arm64.tar.gz

압축이 풀리면 해당 디렉터리로 이동한 후 다음과 같이 실행시킬 수 있다.

cd code-server-4.16.1-linux-arm64
./bin/code-server --auth none --host 0.0.0.0
  • --auth none : code-server는 접근시 기본적으로 패스워들 입력을 요구하는데 $PASSWORD를 환경 변수를 지정해주면 해당 패스워드로 접근이 가능하다. (ex. export PASSWORD=1234) 여기서는 --auth none 옵션을 주어서 패스워드 입력을 받지 않도록 하였다.
  • --host 0.0.0.0 : code-server는 기본적으로 localhost로 접근할 수 있도록 되어있기 때문에 --host 0.0.0.0을 설정하여 기기의 아이피로 접근이 가능하도록 해주었다.

이제 기기의 브라우저에서 localhost:8080으로 접근하거나 같은 네트워크에 연결된 장치에서 해당 기기의 {IP}:8080으로 접근하면 정상적으로 VSCode 환경이 보여진다.


openssh-server

arm용 code-server에서 플러그인 마켓이 동작하지 않는 것으로 보여서 vsix로 직접 설치하면서 사용하고 있는데 아무래도 불편한 느낌이라 ssh로 원격 접근하여 작업하는 방법이 더 나아보인다. 아래 명령어를 입력하여 패키지를 설치해준다.

apt install -y vim openssh-server

ssh 접근시 입력할 패스워드를 지정해준다.

passwd

접속할 포트와 root의 접근을 허용해주자

vi /etc/ssh/sshd_config

# 파일에 아래 내용 추가
Port 2222
PermitRootLogin yes

아래 명령어로 서버를 활성화 시켜준다.

service ssh start

아래 명령어로 접속할 수 있다.

ssh root@{IP} -p 2222

이제 원격으로 접근할 기기의 VSCode의 Remote Explorer 플러그인을 설치하여 접근하여 작업할 수 있다.


vncserver

GUI가 필요한 상황이라면 이 과정을 따라하여 구축할 수 있다. 아래와 같이 GUI 구동에 필요한 패키지를 설치해준다.

apt install -y xfce4 xfce4-goodies dbus-x11 tightvncserver

설치는 20분 가량 소요되며 완료되면 아래 명령어를 입력하여 실행을 시켜준다. 첫 실행시 패스워드를 생성하라고 하는데 원하는 패스워드로 생성해주면 된다.

vncserver :1
export DISPLAY=":1"

vnc 서버가 실행될 때 xfce session을 구동시키기 위해 아래와 같이 작업해준다.

vi ~/.vnc/xstartup

# 파일에 아래 내용 추가
xfce4-session &

이제 VNC Client 도구(RealVNC과 같은)를 이용해서 {IP}:5901로 접근할 수 있다. 웹으로 편하게 접근하려면 아래와 같이 noVNC를 이용하여 접근 할 수 있다.

apt install -y git
git clone https://github.com/novnc/noVNC
./noVNC/utils/novnc_proxy --vnc localhost:5901
WebSocket server settings:
  - Listen on :6080
  - Web server. Web root: /root/noVNC
  - No SSL/TLS support (no cert file)
  - proxying from :6080 to localhost:5900

위와같이 뜨면 브라우저에서 {IP}:6080으로 접근하여 vnc.html로 이동하여 GUI 환경에 접근할 수 있다.


이어서 보면 좋은 자료


데비안 환경에서 대표적인 언어에 대한 개발 환경을 설정하는 명령어를 작성해 둔 글이므로 참고하여 원하는 개발 환경을 설정할 수 있다.

  • Linux Debian 개발환경 설정 가이드 · BLEX @baealex #

안드로이드 12나 13에서는 termux에서 조금만 무리한 작업을 돌려도 종료되는 현상이 있다. 팬텀 프로세스 모니터라는 것을 비활성화 해야 이러한 현상을 방지할 수 있다.

  • termux 'process completed signal 9 press enter' 해결 · BLEX @baealex #


성능 비교


문득 성능이 어느정도 나오는지 궁금해졌다. 같은 프로젝트를 5개(PC 3대, 모바일 2대)의 장치에서 빌드하여 빌드 타임을 비교해 보았다. 5회 정도 실시했을 때 가장 빨랐던 시간을 작성해 두었다.

  • Apple M1 Pro (2021)
  • Mac OS / 32GB RAM / SSD
vite v4.4.7 building for production...
✓ 236 modules transformed.
✓ built in 1.58s
  • Intel(R) Core(TM) i5-9400F (2019)
  • Debian (Windows WSL) / 32GB RAM / SSD
vite v4.4.7 building for production...
✓ 236 modules transformed.
✓ built in 3.03s
  • Snapdragon 8 Gen 2 (2023)
  • Debian (Android Termux) / 8GB RAM / UFS 4.0
vite v4.4.7 building for production...
✓ 236 modules transformed.
✓ built in 4.28s
  • Intel(R) Core(TM) i5-4200U (2013)
  • Debian / 8GB RAM / SSD
vite v4.4.7 building for production...
✓ 236 modules transformed.
✓ built in 5.80s
  • Exynos 9820 (2019)
  • Debian (Android Termux) / 6GB RAM / UFS 2.1
vite v4.4.7 building for production...
✓ 236 modules transformed.
✓ built in 18.07s

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.