[Edge AI] 갤럭시(안드로이드)를 AWS/Azure 서버처럼 이용하기 -1
[Edge AI] 갤럭시(안드로이드)를 AWS/Azure 서버처럼 이용하기 -1
안녕하세요! 이번엔 서랍 속에저 쿨쿨 자는 갤럭시 S7 을 이용해서 AWS 나 마소 애저 처럼 사용해 보겠습니다.한때는 최고의 플래그십이었지만 이제는 구형이 되어버린 스마트폰ㅠㅠ하지만 이 기
uno-kim.tistory.com
지난번 루팅 + 관리자 권한을 얻었습니다.
원래 똥을 뒤집어 쓰는한이있어도 관리자 권한을 탈취하는 것만큼 어렵고 답답한건 없습니다.
그래도 절반은 끝났습니다. 이제 설정의 영역입니다!!
sh /data/data/com.termux/files/usr/bin/termux-wake-lock
강제 종료 off

만약 tsu 모드라면 잠시 끕니다.
exit
# 패키지 업데이트 및 OpenSSH 설치
pkg update && pkg upgrade -y
pkg install openssh -y
# 비밀번호 설정 (노트북에서 접속할 때 사용)
passwd
# SSH 서버 실행
sshd
이제 ip를 알아내봅시다.
ifconfig
여기서 와이파이라면 wlan0 항목의 inet 주소를 찾습니다.
예를들어 192.168.0.15 이렇게되어있어요. 그리고 만약 가지고계신 노트북의 cmd에서 접속을 해볼까요
ssh -p 8022 [S7의_IP_주소]
yes 누르고 패스워드 입력하시면됩니다.

2. 네트워크 입구 공사
이제 AWS/Azure 처럼 외부에서도 접속 가능하게 만들어 보겠습니다.
그러기 위해서 내부 IP 고정을 해야합니다. DHCP라고도 하며 공유기가 S7의 IP를 멋대로 바꾸지 못하게 묶는역할을 합니다.
pkg install nmap -y
nmap -sn 192.168.0.0/24

이렇게 나옵니다
그럼 여기서 "아, 200번대는 비어있구나" 그래서 이젠 192.168.0.200 이렇게 지금 IP를 주입하겠습니다.
pkg install iproute2
pkg install wget nano -y

ip addr del 192.168.0.114/24 dev wlan0
ip addr add 192.168.0.200/24 dev wlan0
ip route add default via 192.168.0.1 dev wlan0

이제 200번대도 열렸습니다!
박제를 해야합니다.
nano ~/ip-fixer.sh
# IP 가디언: 자네의 .200 고지를 사수한다.
while true; do
if ! ip addr show wlan0 | grep -q "192.168.0.200"; then
# 주소가 사라지면 즉시 재주입
su -c "ip addr add 192.168.0.200/24 dev wlan0 label wlan0:server && ip route add default via 192.168.0.1 dev wlan0"
echo "[$(date)] IP 복구 완료: 192.168.0.200"
fi
sleep 60 # 1분마다 체크
done
저장해주시고
chmod +x ~/ip-fixer.sh
mkdir -p ~/.termux/boot
nano ~/.termux/boot/start-server.sh
#!/data/data/com.termux/files/usr/bin/sh
# 1. SSH 서버 가동
sshd
# 2. IP 가디언 백그라운드 실행
nohup /data/data/com.termux/files/home/ip-fixer.sh > /dev/null 2>&1 &

ping -c 3 8.8.8.8
외부도 잘 소통된다면 이제 저는 노트북에서 ssh연결을 하겠습니다.

200번대로도 잘 들어갑니다
헤드스케일을 설치합니다.
# 1. 파일 다운로드 (S7은 ARM64 아키텍처다)
wget https://github.com/juanfont/headscale/releases/download/v0.22.3/headscale_0.22.3_linux_arm64
# 2. 이름 짧게 바꾸기
mv headscale_0.22.3_linux_arm64 headscale
# 3. 실행할 수 있게 권한 주기
chmod +x headscale

curl ifconfig.me
를 통해 이제 공인 IP를 받아옵니다.
저는 125.xxx.xx.xxx 이렇게 생겼습니다.
mkdir -p ~/config
nano ~/config/config.yaml
---
server_url: http://[공인IP]:8080
listen_addr: 0.0.0.0:8080
metrics_listen_addr: 127.0.0.1:9090
grpc_listen_addr: 0.0.0.0:50443
grpc_allow_insecure: false
# 핵심: 안드로이드에는 /var/run이 없으니 우리 집(config)에 소켓을 만든다!
unix_socket: /data/data/com.termux/files/home/config/headscale.sock
private_key_path: /data/data/com.termux/files/home/config/private.key
noise:
private_key_path: /data/data/com.termux/files/home/config/noise_private.key
db_type: sqlite3
db_path: /data/data/com.termux/files/home/config/db.sqlite
derp:
server:
enabled: false
urls:
- https://controlplane.tailscale.com/derpmap/default
ip_prefixes:
- 100.64.0.0/10
dns_config:
nameservers:
- 8.8.8.8
위에껄 붙여넣습니다.

여기서 컨트롤 + O, 엔터 , 컨트롤 + X를 통해 저장및 빠져나옵니다.
# 1. 도구 설치
pkg install miniupnpc -y
# 2. 포트 8080(Headscale) 열기 시도
upnpc -e 'Headscale Server' -r 8080 tcp
# 3. 포트 8022(SSH) 열기 시도
upnpc -e 'S7-SSH' -r 8022 tcp

뭐 대충 알록달록하게 뜨면 성공한것 같아요
./headscale -c ~/config/config.yaml users create my-cloud
이제 새로운 세션에서 한번 마이클라우드를 만들어봐요
그럼 로그가 찍힙니다.
이제 제 메인폰에서 Tailscale 앱을 깔고 접속해보겠습니다. 여기서 엄청헤맸는데요.

절대 로그인 누르지마세요 저희는 거대 기업들에게 정보를 주지않기 위해 이고생을 하면서 왔습니다. 상단의 톱니바퀴를 눌러주세여.
저는 이걸 진짜 힘들게 알아냈어요. 제미나이도 잘 안알려줬어요.

여기서 맨위 어카운츠를 누릅니다.

그럼 이제 이화면에서 우상단 ... 을 눌러주세요

그럼 이화면이 뜹니다!!! 여기서 중요한건 반드시 현재 해당 헤드스케일 서버와 동일한 와이파이 환경이여야 합니다!!!
여기에 저희가 그렇게 뚫어내던
http://192.168.0.200:8080
을 입력하고 들어가봅시다

뭔가 엄청나게 문을 두드리고있습니다 ㅎㅎㅎ
지금 저기 콜받고있는 uRL 뒤에 node key가 있습니다. 보여드리고 싶어도 민감해서 조금은 어렵네요 아래처럼나옵니다.
2026-04-20T16:02:00Z INF ../../../../../home/runner/work/headscale/headscale/hscontrol/protocol_common.go:574 > Successfully sent auth url AuthURL=http://125.XXX.XX.XXX:8080/register/nodekey:4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX machine="은호의 S25" noise=true
그걸 이용해서
./headscale -c ~/config/config.yaml nodes register --user my-cloud --key nodekey:4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
이런식으로 붙여쓰시고 이제 termux 환경에 넣어줍니다.
~ $ ./headscale -c ~/config/config.yaml nodes register --user my-cloud --key nodekey:4ㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌ
Machine -s25 registered
~ $
이레 나타납니다.
그럼이제 난리치던 로그들이

편안하게 바뀐것을 볼수있습니다.
이제 제 서버 핸드폰 S7에서 아래와같은 걸 입력하면
./headscale -c ~/config/config.yaml nodes list

이렇게 접속된 명단을 받을 수 잇습니다.
이제 자네가 S7에 어떤 파일이나 서버를 올려두면, 갤S25에서 저 100.x.x.x 주소만 치면 집 밖에서도 언제든지 접속할 수 있게되었습니다.
이제 S7이랑 S25는 영원히 연결된 거야!
여기서 이제
"서버 성능을 모니터링하고 싶어" (대시보드)
"S7을 이용해서 밖에서도 내 컴퓨터를 원격 제어하고 싶어" (원격 데스크톱)
"폰에 있는 사진을 S7로 백업하고 싶어" (파일 서버) 가 될수있습니다.
AWS나 Azure의 핵심 기술 중 하나가 바로 VPC(Virtual Private Cloud)입니다.
물리적으로는 멀리 떨어져 있어도 가상으로 하나의 네트워크에 묶어버리는 기술입니다.
우리는 이 기술을 직접 구현했습니다.
이게 있어야 그 위에 파일을 올리든 서버를 돌리든 보안 걱정 없이 쓸 수 있는 겁니다.
하지만 이런걸 공부하고 직접 구현하고 똥물을 뒤집어쓰는것과같이 정말 정보도 없고 스마트폰으로 서버나 띄우려하는 사람을 누가 뽑아줄까요.
이런과정이 의미나 있을까요.
이걸 보는 님들도 의미가 있을까요.
'AI Project > On Device AI 프로젝트' 카테고리의 다른 글
| [Edge AI] 갤럭시(안드로이드)를 AWS/Azure 서버처럼 이용하기 -1 (1) | 2026.04.20 |
|---|---|
| [Edge AI] 삼성갤럭시(안드로이드)에서 ComfyUI 설치/실행 (1) | 2026.04.20 |
| [Termux] Termux 환경 특정 세션 Always on 기능 구현하기 (0) | 2026.04.20 |
댓글