라즈베리 파이 4로 MQTT 브로커 구축하기
MQTT(Message Queuing Telemetry Transport)는 IoT 기기 간의 통신에 널리 사용되는 경량 프로토콜입니다. 이 글에서는 라즈베리 파이 4를 사용하여 자신만의 MQTT 브로커를 설정하는 방법을 단계별로 안내합니다. 로컬 네트워크에서 안정적이고 안전한 MQTT 환경을 구축해보세요.
1. MQTT 브로커란 무엇인가?
MQTT 브로커는 MQTT 클라이언트 간의 메시지를 중개하는 서버입니다. 클라이언트는 브로커에 메시지를 게시(publish)하고, 특정 토픽을 구독(subscribe)하여 해당 토픽에 게시된 메시지를 수신합니다. 라즈베리 파이 4를 MQTT 브로커로 사용하면, IoT 프로젝트를 위한 중앙 집중식 메시징 시스템을 구축할 수 있습니다.
2. 준비물
- 라즈베리 파이 4 (Raspberry Pi 4)
- microSD 카드 (8GB 이상 권장)
- 전원 어댑터
- 인터넷 연결
- SSH 클라이언트 (선택 사항: PuTTY, Termius 등)
3. 라즈베리 파이 설정
먼저 라즈베리 파이에 운영체제를 설치하고, SSH를 활성화하여 원격으로 접속할 수 있도록 설정합니다.
- 라즈베리 파이 이미저(Raspberry Pi Imager)를 사용하여 Raspberry Pi OS (Lite 버전 권장)를 microSD 카드에 설치합니다.
- SSH를 활성화합니다. microSD 카드의 부트 파티션에
ssh라는 이름의 빈 파일을 생성하면 됩니다. (터미널:touch /Volumes/boot/ssh) - 라즈베리 파이를 네트워크에 연결하고, IP 주소를 확인합니다. (터미널:
ip addr또는 공유기 관리 페이지) - SSH 클라이언트를 사용하여 라즈베리 파이에 접속합니다. (기본 사용자 이름:
pi, 기본 비밀번호:raspberry)
보안을 위해 기본 비밀번호를 변경하는 것을 권장합니다. (터미널: passwd)
4. MQTT 브로커 설치: Mosquitto
가장 인기 있는 MQTT 브로커 중 하나인 Mosquitto를 설치합니다.
sudo apt update
sudo apt upgrade
sudo apt install mosquitto mosquitto-clients
위 명령어를 순서대로 실행하여 패키지 목록을 업데이트하고, Mosquitto 브로커와 클라이언트를 설치합니다.
5. Mosquitto 설정
Mosquitto의 기본 설정을 변경하여 보안을 강화하고, 필요한 기능을 활성화합니다.
- 익명 접속 비활성화: 익명 접속을 비활성화하여 인증된 사용자만 접속할 수 있도록 합니다.
sudo nano /etc/mosquitto/mosquitto.conf
파일에 다음 내용을 추가하거나 수정합니다:
allow_anonymous false
- 사용자 설정: 사용자 이름과 비밀번호를 설정합니다.
sudo mosquitto_passwd -c /etc/mosquitto/passwd username
username을 실제 사용자 이름으로 변경하고, 비밀번호를 입력합니다. 위 명령어를 실행하면 /etc/mosquitto/passwd 파일에 암호화된 사용자 정보가 저장됩니다.
- Mosquitto 설정 파일 수정: 사용자 인증을 활성화하고, 패스워드 파일을 지정합니다.
sudo nano /etc/mosquitto/mosquitto.conf
파일에 다음 내용을 추가하거나 수정합니다:
password_file /etc/mosquitto/passwd
- Mosquitto 재시작: 설정을 적용하기 위해 Mosquitto 서비스를 재시작합니다.
sudo systemctl restart mosquitto
6. 방화벽 설정
MQTT 브로커에 접속하기 위해 방화벽에서 MQTT 포트(기본적으로 1883)를 열어줍니다.
sudo ufw allow 1883
sudo ufw enable
위 명령어를 실행하여 포트 1883을 허용하고, 방화벽을 활성화합니다.
7. MQTT 클라이언트 테스트
Mosquitto 클라이언트를 사용하여 MQTT 브로커가 제대로 작동하는지 테스트합니다.
- 메시지 게시:
mosquitto_pub -u username -P password -t test/topic -m "Hello, MQTT!"
username과 password를 설정한 사용자 이름과 비밀번호로 변경합니다. test/topic은 게시할 토픽이고, "Hello, MQTT!"는 메시지 내용입니다.
- 메시지 구독:
mosquitto_sub -u username -P password -t test/topic
위 명령어를 실행하면 test/topic 토픽에 게시된 메시지를 수신합니다.
메시지를 게시하고 구독하여 정상적으로 통신이 이루어지는지 확인합니다.
8. 추가 설정 (선택 사항)
- TLS/SSL 암호화: TLS/SSL 암호화를 사용하여 MQTT 통신을 더욱 안전하게 보호할 수 있습니다.
- 웹 기반 인터페이스: MQTTLens, MQTT Explorer 등의 웹 기반 인터페이스를 사용하여 MQTT 브로커를 관리하고 모니터링할 수 있습니다.
- MQTT 브리지: MQTT 브리지를 사용하여 여러 MQTT 브로커를 연결하고 메시지를 공유할 수 있습니다.
'파이썬 python' 카테고리의 다른 글
| 라즈베리파이에서 mariaDB(mysql)설정후 파이썬으로 데이터베이스로 사용하기 (0) | 2025.03.09 |
|---|---|
| 라즈베리 파이에서 파이썬으로 영상플레이어 MPV 활용하기 (1) | 2025.03.08 |
| 라즈베리파이 Samba 설치 및 설정: 파일 공유 가이드 (0) | 2025.03.08 |
| Flask와 MariaDB 연동: 웹 애플리케이션에 데이터 저장 공간 만들기 (0) | 2025.03.07 |
| 파이썬으로 flask 웹서버 구축하기 (2) | 2025.03.06 |