Android

[Android] 기기에 MQTT Broker 돌리기. How to run a MQTT broker on android device

욘두로이드 2024. 10. 29. 00:37

목표

AOS 기기에 Mosquitto Broker 설치 후 실행하기

방법

1. 첫 번째 옵션은 Github에 공개된 프로젝트를 활용하는 것입니다.

https://github.com/TeamDotworld/android-mqtt-broker 

앱을 빌드하고 활용하여 MQTT 브로커를 실행하시면 됩니다.

단 이 방법은 라이선스 문제가 생길 수도 있고, 지속적인 버전 관리가 안될 수 있어 추후에 이슈가 발생할 수도 있습니다.

 

2. 첫 번째 옵션은 Termux 앱을 이용합니다.

https://github.com/termux/termux-app

 

GitHub - termux/termux-app: Termux - a terminal emulator application for Android OS extendible by variety of packages.

Termux - a terminal emulator application for Android OS extendible by variety of packages. - termux/termux-app

github.com

 

앱 설치 후 Mosquitto를 설치하여 실행하면 됩니다.

 

이 글에서는 이 방법으로 사용하여 브로커 사용하여 보겠습니다.

사실 별 내용 없고 순서대로 따라 하시면 되겠습니다.

 

1. Apk Pure 설치 (Google Play Store 대용)

검색창에 “termux” 검색 후 설치

제 기기에는 Google Play Store 가 없어 사용했습니다.

그냥 구글 플레이 스토어에서 다운로드하여도 됩니다. 

 

2. 앱 실행 후 Mosquitto 설치

앱을 열면 다음과 같은 터미널 화면이 보입니다.

 

아래 명령어를 입력하고 mosquitto를 설치합니다.

pkg install mosquitto

 

 

3. Config, Password 파일 준비 (Optional)

ID와 Password를 적용하기 위한 설정파일과 패스워드 파일입니다.

mosquitto.conf 파일을 수정하여 보안 관련 설정뿐 아니라 많은 기능들을 사용할 수 있습니다.

이 부분은 필요하신 분만 해도 무방하겠습니다.

 

mosquitto.conf
0.04MB

 

passwd.txt
0.00MB

 

 

mosquitto.conf

# 익명 사용자 허용
allow_anonymous true

# 1883포트사용 모든 주소 접속허용
listener 1883 0.0.0.0

# 패스워드 파일 명시
password_file passwd.txt

 

 

passwd.txt

# [ID]:[PASSWORD]
admin:admin

 

 

4. ADB 사용 Device의 mosquitto 설치 경로에 파일 배치(Optional)

Path: /data/data/com.termux/files/usr/etc/mosquitto

Root 권한을 가지고 adb shell을 실행하고 모스키토 경로에 설정파일과 패스워드 파일을 복사합니다.

Root 권한이 있어야 복사가 가능하며 추후에 파일 소유자와 그룹, 권한을 변경하기 편합니다.

 

위 두 개 파일의 경로에서 터미널을 열고 아래 명령어는 순차적으로 입력합니다.

adb root
adb push mosquitto.conf /data/data/com.termux/files/usr/etc/mosquitto
adb push passwd.txt /data/data/com.termux/files/usr/etc/mosquitto

 

 

5. 파일 확인(Optional)

 

cd /data/data/com.termux/files/usr/etc/mosquitto
ls -al

 

6. 파일 권한, 소유자, 소유 그룹 변경(Optional)

권한 변경: 0666 → 0700

chmod 0700 mosquitto.conf
chmod 0700 passwd.txt

변경하지 않아도 무방하나 파일의 소유자만 해당 파일에 접근하여 Read/Write 하면 되기 때문에 다른 권한이 들어가면 Warning이 뜨게 되어 있는듯합니다. 패스워드 파일 역시 가급적 안전하게 사용하기 위해 권고 사항을 따르는것이 좋을 듯 합니다.

 

소유자, 그룹 변경: root → u0_a89 (termux app user id)

chown u0_a89:u0_a89 mosquitto.conf
chown u0_a89:u0_a89 passwd.txt

 

이렇게 하는 이유는 브로커의 실행을 Termux 앱의 샌드박스 안에서 실행하기 때문에

위에 보이는 파일의 소유자 u0_a89 즉 Termux 앱이 부여받은 사용자 아이디로 파일에 접근하여야 하기 때문에

 

root 소유의 파일인 상태로 mosquitto를 실행하면 오류가 나기 때문입니다.

디테일이 궁금하신 분들은 직접 오류를 내서 메시지를 확인하는 것을 추천드립니다.

 

7. 패스워드 파일 암호화, 확인(Optional)

이 부분은 Termux 앱 내의 터미널에서 수행합니다.

mosquitto_passwd -U passwd.txt
cat passwd.txt

 

cat 명령어로 확인해 보면 처음 입력했던 패스워드 부분이 암호화되어 있을 겁니다.

 

8. Broker 실행

# mosquitto.conf 파일을 사용하여 로그가 표시되도록 실행
mosquitto -v -c mosquitto.conf

 

여기까지 했다면 이제 끝입니다.

IP를 확인해서 테스트해보시면 됩니다.

 

 

Tips.

# mosquitto.conf 파일을 사용하여 데몬모드로 실행
mosquitto -d -c mosquitto.conf

 

 

데몬 모드로 돌아가는 브로커 중지 시키는 법

# PID 확인
ps ax | grep mosquitto

# 해당 프로세스 중지
kill -9 [pid]

 

 

감사합니다.