본문 바로가기
AI Project/On Device AI 프로젝트

[Edge AI] 갤럭시(안드로이드)를 AWS/Azure 서버처럼 이용하기!!!-2

by 으노으뇨 2026. 4. 21.
728x90
반응형
SMALL

[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)입니다.

물리적으로는 멀리 떨어져 있어도 가상으로 하나의 네트워크에 묶어버리는 기술입니다.

우리는 이 기술을 직접 구현했습니다.

이게 있어야 그 위에 파일을 올리든 서버를 돌리든 보안 걱정 없이 쓸 수 있는 겁니다.

하지만 이런걸 공부하고 직접 구현하고 똥물을 뒤집어쓰는것과같이 정말 정보도 없고 스마트폰으로 서버나 띄우려하는 사람을 누가 뽑아줄까요. 

이런과정이 의미나 있을까요.

이걸 보는 님들도 의미가 있을까요.

728x90
반응형
LIST

댓글