3주. 제가 핸드폰으로 웹 서버를 만드는 데 걸린 시간입니다.
아무 기반 지식이 없었기에 좀 걸렸지만,
여러분은 아래 글을 통해 빠르고 신속, 정확하게 모바일 개인 웹 서버를 활용해 보시기를 바랍니다.
이 글에서는 핸드폰 루팅을 하지 않고 진행하는 방법에 대해 다룹니다.
환경:
- 핸드폰: 샤오미 Poco폰 f1
- 앱/리눅스 환경: termux v0.118.2
- 런타임 환경: NodeJS
- 보조 프로그램: Putty, WinSCP
- 와이파이 공유기: TP Link
준비물:
- 안 쓰는 안드로이드 핸드폰
(저는 샤오미 Poco F1(안드로이드, 스냅드래곤 845)를 사용하였습니다.) - 집 와이파이
- 집 와이파이의 공용 IP
방법:
1. 핸드폰 공장 초기화
핸드폰의 공장 초기화를 진행합니다.
공장 초기화 방법은 핸드폰마다 다르기 때문에 이 부분은 구글링을 부탁드립니다.
이 글은 웹 서버를 만들기만을 위한 방법이기에 보안에 취약하거나, 추가 보안 설정을 취해야 합니다.
추후에 기회가 되거나 요청이 있을 경우 보안에 대해서도 다룰 예정이지만, 지금은 간단하게 웹 서버만을 구축하는 방법을 다루고 있기 때문에 보안과 성능을 위해 깔끔한 설정의 핸드폰이 필요합니다.
2. termux 앱 설치
Releases · termux/termux-app
Termux - a terminal emulator application for Android OS extendible by variety of packages. - termux/termux-app
github.com
위 링크에서 Latest 버전을 다운로드합니다.
예시 파일: termux-app_v0.118.2+github-debug_arm64-v8a.apk
위처럼 마지막이 v8a.apk로 끝나는 앱을 다운로드합니다.
다운로드한 파일을 PC에서 모바일로 복사합니다.
모바일에서 termux 설치 파일을 실행합니다.
모든 권한은 "허용"을 줍니다.
그럼 위처럼 모바일에서 리눅스 화면을 보실 수 있습니다.
3. termux 설정
# 기본 프로그램 업데이트, 업그레이드.
# 기기 사양에 따라 10분 이상이 소요될 수 있습니다.
# 선택 사항이 나올 경우 전부 y > Enter를 통해 수락해줍니다.
pkg update && pkg upgrade -y
# 파일 로컬 스토리지에 접근이 가능하도록 허용
termux-setup-storage
# sshd 설치
pkg install openssh
# sshd 실행
sshd
# 내 termux id 확인하기
# 답변으로 나오는 ID를 어딘가에 적어주세요.
whoami
# 현재 아이디의 비밀번호 설정하기.
# 비밀번호도 까먹지 않게 어디 적어둡니다.
passwd
# 내부 아이피 확인
# 내부 아이피도 어딘가에 적어둡니다.
# termux라면 내부 IP는 아마 192.168.0.200일 겁니다.
ifconfig
sshd를 실행하면 이제부터 PC와 모바일을 연결할 수 있습니다.
내부 아이피는 아래 빨간 박스를 참고 부탁드립니다.
4. Putty, WinSCP로 모바일과 PC 연결
Putty와 WinSCP는 서버 접속 및 파일 전송에 사용되는 프로그램입니다.
둘 다 무료 프로그램이며, 구글에서 검색하 쉽게 설치할 수 있습니다.
모바일에서 터치 키보드로 명령어를 하나하나 두들기기에는 불편하니 PC에 연결하여 작업할 수 있도록 할 예정입니다.
이 글에서는 두 프로그램에 대한 기본 이해도가 있다고 판단하고 진행하겠습니다.
최대한 자세하게 작성할 예정이지만, 제가 놓친 부분이 있거나, 궁금한 점이 있다면 댓글을 남겨 주시기를 바랍니다.
Putty의 host name에는 "내 termux 아이디"@"ifconfig로 나온 내부 아이피"를 적습니다.
포트는 8022를 적습니다.
SSH, Telnet 등 위에 보이는 내용들을 그대로 적어주신 다음에 우측의 Save를 클릭해 해당 정보들을 저장합니다.
그리고 세션을 클릭 후 아래의 Open을 클릭하면 모바일에 PC로 원격 접속하실 수 있습니다.
비밀번호는 아까 "passwd"로 설정한 비밀번호를 적습니다.
그럼 이제 putty로 모바일에 접속할 수 있습니다.
WinSCP도 똑같습니다.
호스트 이름, 포트, 사용자 ID, 비밀번호 등을 알맞은 위치에 적고 세션을 저장합니다.
이미지를 참고하여 모든 내용을 작성하신 후 로그인합니다.
로그인하면 아래와 같은 화면을 보실 수 있습니다.
보시면 경로가 상당히 내부에 있는 것을 볼 수 있습니다.
/data/data/com.termux/files
저희는 루팅을 하지 않았기 때문에 com.termux 위로는 열어볼 수 없습니다.
그렇기 때문에 저는 /data/data/com.termux/files/home에 웹 사이트 코드들을 두었습니다.
5. NodeJS, PM2 설치/설정
# nodejs 설치
pkg install nodejs -y
# 제대로 설치되었는지 확인
node -v
# express 설치
npm install express
# pm2 설치
npm install -g pm2
pm2 start server.js --name Name
먼저 NodeJS와 PM2 등을 설치합니다.
pm2는 NodeJS를 관리하고 배포하는 데 사용되는 프로세스 관리 도구입니다.
NodeJS의 서비스 포트는 헷갈리지 않기 위해 8081로 설정합니다.
NodeJS를 돌리는 코드를 선택한 다음 PM2 명령어로 코드를 시작합니다.
# pm2로 웹 서버가 꺼지지 않게 상시 돌립니다.
pm2 start server.js --name Mobile_Server
# pm2로 돌리는 서버 확인하는 명령어
pm2 list
# pm2 멈추기, 숫자도 가능합니다.
pm2 stop Mobile_Server
pm2 stop 0
그럼 이제 브라우저에서 내부 아이피와 포트로 접근할 수 있습니다!
http://localhost:8081/
위 링크로 이동.
http라 경고 내용이 나올 텐데 무시하고 사이트로 이동을 합니다.
이제는 공용 IP에서도 사이트에 접근할 수 있도록 해보겠습니다.
6. 공유기. 포트 포워딩
외부에서 접속하기 위해서는 2가지가 필요합니다.
- 집 공유기의 공용 IP.
- 공유기를 통해 포트 포워딩을 하여 모바일 웹 서버에 연결.
내 아이피 알기:
집 공유기의 IP는 네이버에서 "내 아이피"라고 검색하면 쉽게 알 수 있습니다.
공유기를 통해 포트 포워딩하기:
웹을 통해 공유기의 환경 설정을 설정할 수 있습니다.
http://192.168.0.1
보통은 위처럼 간단한 링크로 들어갈 수 있으며, 각 공유기마다 다른 링크를 사용할 수 있습니다.
집에서 어떤 공유기를 사용하는지 확인한 다음,
구글링을 통해 공유기를 설정할 수 있는 링크를 검색하여 주시기를 부탁드립니다.
TP-Link의 공유기 설정 페이지는 아래처럼 생겼습니다.
이 페이지에서 로그인하신 뒤에 아래 경로로 들어갑니다.
대부분의 공유기는 비슷한 설정을 가지고 있습니다.
어떤 공유기든 포트 포워딩에 들어가면 됩니다.
고급 > NAT 포워딩 > 포트 포워딩
위 경로에서 방금 만든 웹 서버의 포트를 추가합니다.
그렇다면 이제 공용 IP를 통해 모바일 웹 서버로 연결할 수 있습니다.
http://내_공용_IP:8081/
여담:
적고 보니까 좀 기네요.
2번의 포맷, 수많은 삽질과 다시 시작을 통해 위처럼 방법을 간소화할 수 있었습니다.
자료가 적으니 확실히 쉽지 않았습니다.
위에서 부족한 부분은 댓글을 남겨주시거나, AI와 함께 헤쳐나가시기를 부탁드립니다.
GPT가 없었다면 불가능했을 여정입니다. OpenAI 감사합니다.
원래는 Ubuntu를 설치한 다음 Ubuntu에서 웹 서버를 돌릴 예정이었습니다.
실제로 핸드폰에 Ubuntu를 설치한 다음 파이어 폭스로 유튭도 틀고, 다양한 설정을 하며 갖고 놀기도 했습니다.
그러나 루팅을 하지 않아서 WinSCP에서 Ubuntu에 접근할 수 없는 이슈가 있었습니다.
안드로이드 > termux > Ubuntu 이렇게 타고 타고 들어가서 다소 제한적이었던 기억이 있습니다.
어떤 분은 갤럭시 탭에 Ubuntu를 설치해서 작업 PC로 사용하시더군요.
안드로이드 Ubuntu에서 VS Code를 돌리고, 인터넷 서핑을 하고, 심지어 유로 트럭 게임까지 돌린 분이 있다고 합니다.
세상에 고수는 많습니다.
사용하지 않는 모바일을 NAS(구글 드라이브 같은 스토리지, 대신 개인용)로 사용할 수도 있습니다.
이 내용은 유튭에서 쉽게 찾아볼 수 있으니 참고 부탁드립니다.
블로그는 다시 주에 하나는 올릴 수 있도록 하려 합니다.
찾아와 주시는 Search Console이 아닌 사람 분들 항상 감사드립니다.
좋은 하루 보내세요!
'개발' 카테고리의 다른 글
[JQuery] 커스텀 select 만들기 wiht 깔끔한 코드 (0) | 2024.11.23 |
---|---|
[프론트엔드] 폰트 쓰다 겪는 문제들 해결법 (1) | 2024.11.03 |
프론트엔드 개발자에게 추천하는 사이트 모음 (특히 뉴비) (0) | 2024.10.20 |
개인정보보호를 아십니까? (2) | 2024.10.16 |
00님, 저희 페이지 검색해도 안 나오는데요?[5] (H tag 작성하는 법) (0) | 2024.10.14 |