통신/MQTT

raspberry pi zero 2 W에 mosquitto 설치

찬영_00 2025. 4. 27. 10:01
728x90

이번 포스팅은 라즈베리파이 zero 2 W에 mosquitto를 설치해보려한다.

이유는 브로커를 라즈베리파이에서 구동시킬 예정이기 때문이다.

 

windows랑은 다르게 터미널에서 진행해줘야하니 조금 복잡해서 기록남겨둔다.

 

개발 환경

- 라즈베리파이 zero 2 W ( debian 11, 32bit )

- 32GB 용량

- 사용 참조 패키지 : deb http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi  

 

먼저 mosquitto를 설치해줄건데 명령어는 아래와 같다.

sudo apt-get update
sudo apt-get install -y mosquitto

 

만약 간단하게 코드 없이 터미널에서 테스트를 해보고 싶으면 clients를 설치하는게 도움이 된다.

명령어는 다음과 같다. (나는 코드로 짜고, 서버만 필요하니 mosquitto만 설치함)

sudo apt-get install -y mosquitto mosquitto-clients

 

설치가 되었으면 설정을 해줄건데, 내가 필요한 것들을 설정해줘야한다.

 

내가 필요한것

1. 보안을 위한 아이디 비번 설정

2. 웹이랑 통신하기 위한 포트 열기

3. mqtt 포트 열고, 접근 가능한 ip 설정하기

 

간단하게 위 3개 정도 있다. (디버깅쪽은 안하고 코드에서 최대한 처리예정)

 

일단 서비스부터 활성화 시키자

sudo systemctl enable mosquitto
sudo systemctl start mosquitto

 

서비스가 잘 시작되었는지 확인하려면 다음 명령어로 확인하자

sudo systemctl status mosquitto

 

이렇게 active가 뜨면 잘 구동되었다는 뜻이다.

 

이제 설정해주자

sudo nano /etc/mosquitto/mosquitto.conf

 

아래를 추가해주는데 log부분은 나중에 필요하면 쓰면 되고,, ( 모든 log 전부 저장함 ) 

나는 용량도 부족하고, 굳이 싶어서 안할거임

 

웹소켓에 포트 열어준건 내가 필요해서 연거라 굳이 열 필요 없음 

뒤에 0.0.0.0은 모든 ip 전부 받는다는 뜻이다.

 

이제 id와 비밀번호 설정해줄건데 id 부분은 원하는 id 넣으면 된다.

sudo mosquitto_passwd -c /etc/mosquitto/passwd id

 

그럼 비번입력하라고 나온다.

*이런거 안떠도 입력되고 있는거니 입력하고 재확인 비번까지 입력하고 설정해주면 된다.

그럼 이런 파일이 생길거다. (위치는 /etc/mosquitto )

열어보면 이런 형식일 거다. id:~~~~~~
id는 본인이 설정한 아이디, ~~~~이거는 설정한 비번 암호화된거.

 

여튼 이렇게 설정해줬으면 재시작을 해주자

sudo systemctl restart mosquitto

 

이렇게 하면 라즈베리파이에서 mosquitto 설치 및 설정이 끝난다.

내가 설정한 포트 ( 1883, 9001 )이 열렸는지 확인하려면 아래 명령어를 입력하자 ( -E를 써야 여러 패턴을 동시에 찾을 수 있음)

sudo netstat -an | grep -E "1883|9001"

입력하면 아래처럼 뜰거야 (LISTEN 상태면 Okay)

tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN
tcp6 0 0 :::9001 :::* LISTEN

 

9001은 ipv6 포트 전부를 받는다는거야 0.0.0.0이랑 :::랑 같은거다.

물론 ipv4에서도 접근 가능하니 걱정안해도 될 것 같다.

 

* ss 쓰는 방법도 있음 : ss -ltn | grep -E '9001|1883'

 

눈으로 먼가 직접적으로 보고싶으면 clients를 설치해서 sub, pub test하는 방법도 있지만 나처럼 서버측만 설치할 경우 연결되는 무언가를 보고싶다.! 하면

본인의 컴퓨터에 mqtt expolor 설치하자

설치해서 컴퓨터와 라즈베리파이를 같은 네트워크 상에 두고, 라즈베리파이의 ip에 접근해보자

 

host에 라즈베리파이의 ip, username에는 id, password에는 비번하고 connect 누르면~

짠.

외부에서 접근하려면 복잡해지는데, 내가 현재 그것까진 필요하지 않아서 지금은 포스팅을 안할생각이다.

방법만 대충 적으면 아래와 같다.

고정 IP 또는 DDNS 라즈베리파이가 있는 집 인터넷 외부 IP를 알아야 됨
포트포워딩 공유기(라우터)에서 라즈베리파이 1883 포트로 포워딩 설정해야 됨
브로커 설정 수정 mosquitto가 외부 IP 연결을 허용하도록 설정해야 됨

 

이렇게 포스팅을 마무리 하겠다.

728x90

'통신 > MQTT' 카테고리의 다른 글

[controller] using MQTT - 1  (2) 2025.05.29
[controller] using MQTT (들어가기 앞서)  (0) 2025.05.26
mqtt - bin파일 전송 -2  (0) 2025.04.18
mqtt - bin파일 전송  (0) 2025.04.17
MQTT Explorer  (0) 2025.03.24