Skip to content

Commit cbd4974

Browse files
committed
stf: post 수정. docker 사용법 추가
1 parent d40e0ff commit cbd4974

File tree

1 file changed

+77
-38
lines changed

1 file changed

+77
-38
lines changed

_posts/2024-05-24-stf.md

Lines changed: 77 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ tags:
88
- STF
99
date: 2024-05-24 17:57 +0900
1010
---
11-
이 글에서는 스마트폰과 스마트워치 등의 장치를 원격으로 디버깅할 수 있는 STF(Smartphone Test Farm)에 대해 소개합니다. STF를 이용하면 다양한 디바이스를 서버에 연결하여, 개발한 애플리케이션을 여러 디바이스 환경에서 쉽게 테스트할 수 있습니다. 1인 개발자로서, 브라우저를 통해 원격으로 핸드폰을 조작할 수 있다는게 가장 큰 장점인 것 같습니다.
11+
이 글에서는 스마트폰과 스마트워치 등의 장치를 원격으로 디버깅할 수 있는 STF(Smartphone Test Farm)에 대해 소개합니다.
12+
13+
STF를 이용하면 다양한 디바이스를 서버에 연결하여, 개발한 애플리케이션을 여러 디바이스 환경에서 쉽게 테스트할 수 있습니다.
1214

1315
공식 git 주소는 다음과 같습니다.
1416
[https://github.com/DeviceFarmer/stf](https://github.com/DeviceFarmer/stf)
@@ -22,39 +24,63 @@ List of devices attached
2224
192.168.0.40:5555 device
2325
```
2426

25-
## 주요 기능
27+
![stf 화면](/assets/img/STF/stf.webp)
28+
<p class="image-caption">STF 메인 화면</p>
2629

27-
### 운영 체제 지원
28-
- **안드로이드**: 2.3.3 (SDK 10)부터 12 (SDK 32)까지 지원
29-
- **Wear OS**: 5.1 지원 (5.0은 권한 문제로 지원하지 않음)
30-
- **기타**: Fire OS, CyanogenMod 등 안드로이드 기반 배포판 지원
30+
## Docker로 실행
31+
Dockerfile을 제공해주기 때문에, Docker 환경에 익숙한사람은 docker를 활용하면 아주 쉽게 세팅할 수 있습니다.
32+
> Docker가 익숙하지 않거나 로컬에서 바로 실행하고 싶다면 [설치 방법](#설치-방법)으로 바로 넘어가세요
33+
{: .prompt-info}
34+
35+
```
36+
stf-docker/ # 프로젝트 루트
37+
├── docker-compose.yml # STF 서비스를 정의
38+
└── .env # PUBLIC_IP 등 가변 환경변수
39+
```
3140

32-
### 장치 제어
33-
- 브라우저에서 장치 원격 제어
34-
- 실시간 화면 보기 (최대 30-40 FPS)
35-
- 회전 지원
36-
- 키보드 입력 및 메타 키 지원
37-
- 드래그 앤 드롭을 통한 apk 파일 설치 및 실행
38-
- 장치 로그 실시간 보기 및 필터링
41+
```yaml
42+
# docker-compose.yml
43+
services:
44+
  rethinkdb:
45+
    image: rethinkdb:2.4
46+
    container_name: rethinkdb
47+
    network_mode: host
48+
    restart: unless-stopped
49+
  stf:
50+
    image: devicefarmer/stf:latest
51+
    container_name: stf
52+
    network_mode: host              # 호스트 네임스페이스 그대로 사용
53+
    volumes:
54+
      - ~/.android:/root/.android   # 호스트 ADB RSA 키 재사용
55+
    environment:
56+
      # STF 웹 UI·포트 포워딩에 표시될 호스트 주소
57+
      - PUBLIC_IP=${PUBLIC_IP:-127.0.0.1}
58+
    command: >
59+
      stf local
60+
        --public-ip ${PUBLIC_IP:-127.0.0.1}
61+
        --adb-host 127.0.0.1
62+
        --adb-port 5037
63+
        --provider-min-port 7400
64+
        --provider-max-port 7500
65+
        --no-cleanup
66+
        --allow-remote
67+
    restart: unless-stopped
68+
    depends_on:
69+
      - rethinkdb
70+
```
71+
```
72+
#.env
73+
PUBLIC_IP={나의 IP 주소} # (ex. 192.168.0.62) 호스트 → STF 접근 시 사용
74+
```
75+
위와 같이 설정하고 `docker compose up -d`를 하면 바로 smartfarm을 사용할 수 있습니다.
76+
host와 adb server를 공유하기 때문에, usb로 새로운 디바이스를 꽂으면 바로 인식됩니다.
3977

40-
### 장치 관리
41-
- 연결된 장치 상태 모니터링 (사용 중, 오프라인, 인증되지 않음 등)
42-
- 장치 하드웨어 사양 표시
43-
- 배터리 상태 모니터링
78+
docker가 실행되면 바로 [브라우저로 접속](#브라우저로-접속하기)하시면 됩니다.
4479

4580
## 설치 방법
81+
Host에 직접 설치해서 실행할 수도 있습니다.
4682

4783
### 1. 필수 의존성 설치
48-
- Node.js (최대 20.x)
49-
- ADB
50-
- RethinkDB (>= 2.2)
51-
- CMake (>= 3.9)
52-
- GraphicsMagick
53-
- ZeroMQ 라이브러리
54-
- Protocol Buffers 라이브러리
55-
- yasm
56-
- pkg-config
57-
5884
```bash
5985
# Add the RethinkDB repository
6086
wget -qO- https://download.rethinkdb.com/repository/raw/pubkey.gpg | \
@@ -68,7 +94,7 @@ sudo apt-get update
6894
sudo apt-get install -y nodejs adb rethinkdb cmake graphicsmagick libzmq3-dev libprotobuf-dev yasm pkg-config npm
6995
```
7096

71-
만약 `apt update`중에 RethinkDB repository 때문에 error가 난다면 직접 빌드해서 사용할수도 있습니다.
97+
만약 `apt update`중에 RethinkDB repository 때문에 error가 난다면 직접 빌드해서 사용하면 됩니다.
7298
```bash
7399
# Remove RethinkDB repository
74100
sudo rm /usr/share/keyrings/rethinkdb-archive-keyrings.gpg
@@ -97,28 +123,41 @@ rethinkdb
97123
```bash
98124
stf local
99125
```
100-
그 후 브라우저로 `http://localhost:7100` 접속하면 됩니다.
101-
![STF 로그인 페이지](/assets/img/STF/login.webp)
102-
<p class="image-caption">STF 로그인 페이지</p>
103-
104-
초기 관리자 계정은 다음과 같습니다.
105-
> Name: administrator
106-
107126

108127
만약 localhost가 아닌 외부에서 접근하고 싶다면 다음과 같이 실행하면 됩니다.
128+
109129
```bash
130+
110131
stf local --public-ip <your_internal_network_ip_here>
111-
# ex) stf local --public-ip 192.168.0.55
132+
133+
# ex) stf local --public-ip 192.168.0.55  
134+
112135
# 브라우저로 http://192.168.0.55:7100 접속
136+
113137
```
114138

139+
115140
또한 usb가 아닌 wifi로 연결되어 있는 디바이스(`ex. adb connect 192.168.0.40:5555`)도 지원하려면 `--allow-remote`를 추가해야 합니다.
141+
116142
```bash
143+
117144
stf local --allow-remote
145+
118146
```
119-
![stf 화면](/assets/img/STF/stf.webp)
120-
<p class="image-caption">STF 메인 화면</p>
147+
148+
149+
## 브라우저로 접속하기
150+
151+
그 후 브라우저로 `http://localhost:7100` 접속하면 됩니다.
152+
![STF 로그인 페이지](/assets/img/STF/login.webp)
153+
<p class="image-caption">STF 로그인 페이지</p>
154+
155+
초기 관리자 계정은 다음과 같습니다.
156+
> Name: administrator
157+
158+
121159

122160
> 만약 접속이 안되거나 control 페이지에 디바이스 화면이 보이지 않는다면, 방화벽을 끄고 시도해보세요.
123161
{:.prompt-tip}
124162

163+

0 commit comments

Comments
 (0)