프로그램 (PHP,Python)
Node-RED로 시작하는 IoT 앱 개발: 설치부터 보안까지 종합 가이드
날으는물고기
2024. 11. 13. 00:17
Node-RED란 무엇인가?
Node-RED는 오픈소스 시각적 프로그래밍 도구로, 특히 사물 인터넷(IoT) 애플리케이션 개발에 최적화되어 있습니다. 웹 기반의 플로우 편집기를 통해 다양한 노드(Node)를 드래그 앤 드롭하여 손쉽게 데이터 흐름을 설계할 수 있습니다. 이를 통해 데이터 수집, 처리, 분석 및 시각화를 효율적으로 수행할 수 있습니다.
Node-RED 설치 및 설정
1. Node.js 설치
Node-RED는 Node.js 환경에서 실행되므로, Node.js를 설치해야 합니다. LTS(Long Term Support) 버전을 권장합니다.
Windows
- Node.js 공식 사이트에서 Windows 설치 프로그램을 다운로드하여 설치합니다.
macOS
- Node.js 공식 사이트에서 macOS 설치 프로그램을 다운로드하여 설치합니다.
- 또는 Homebrew를 사용하는 경우:
brew install node
Linux (Ubuntu 예시)
# Node.js 14.x 버전 설치 스크립트 추가
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# Node.js 설치
sudo apt-get install -y nodejs
2. Node-RED 설치
Node.js 설치 후, npm(Node Package Manager)을 사용하여 Node-RED를 글로벌로 설치합니다.
sudo npm install -g --unsafe-perm node-red
-g
옵션은 전역 설치를 의미하며,--unsafe-perm
은 루트 권한으로 설치 시 필요한 옵션입니다.
3. Node-RED 실행
설치 완료 후, 다음 명령어로 Node-RED를 실행합니다.
node-red
- 기본적으로 로컬 호스트의 1880 포트에서 실행됩니다.
- 브라우저에서 http://localhost:1880에 접속하여 Node-RED 편집기에 접근할 수 있습니다.
Node-RED 기본 사용법
플로우 만들기
- 노드 추가: 좌측 패널에서 원하는 노드를 작업 영역으로 드래그 앤 드롭합니다.
- 노드 연결: 노드의 출력 포트와 입력 포트를 연결하여 데이터 흐름을 정의합니다.
- 노드 설정: 노드를 더블 클릭하여 상세 설정을 구성합니다.
노드 구성 예시
- Inject 노드: 일정한 간격으로 메시지를 생성하거나 수동으로 트리거할 수 있습니다.
- Debug 노드: 메시지의 내용을 디버그 패널에 출력하여 플로우를 확인합니다.
- MQTT 노드: MQTT 브로커와 연결하여 토픽을 구독하거나 메시지를 발행합니다.
플로우 배포
- 작업이 완료되면 상단의
Deploy
버튼을 클릭하여 플로우를 실행 상태로 배포합니다.
예제: HTTP 요청을 받아 JSON 데이터 반환하기
Node-RED를 사용하여 간단한 웹 API를 구축합니다. HTTP 요청을 받아 JSON 형태의 데이터를 반환하는 예제입니다.
1. HTTP 입력 노드 추가
input
카테고리에서http in
노드를 작업 영역으로 드래그합니다.- 노드를 더블 클릭하여 다음과 같이 설정합니다.
- Method:
GET
- URL:
/get-data
- Method:
2. 함수 노드 추가 및 설정
function
카테고리에서function
노드를 추가합니다.- 노드를 더블 클릭하고 아래 코드를 입력합니다.
msg.payload = { message: "Hello, Node-RED!", timestamp: Date.now() }; return msg;
msg.payload
에 반환할 JSON 데이터를 정의합니다.
3. HTTP 응답 노드 추가
output
카테고리에서http response
노드를 추가합니다.- 별도의 설정은 필요하지 않습니다.
4. 노드 연결
http in
노드 ➔function
노드 ➔http response
노드 순서로 연결합니다.
5. 플로우 배포
- 상단의
Deploy
버튼을 클릭하여 플로우를 배포합니다.
6. 테스트
- 브라우저에서 http://localhost:1880/get-data에 접속합니다.
- 아래와 같은 JSON 응답을 확인할 수 있습니다.
{ "message": "Hello, Node-RED!", "timestamp": 1633072800000 }
보안 가이드 및 점검 포인트
Node-RED는 강력한 기능을 제공하지만, 기본 설정으로는 보안이 취약할 수 있습니다. 안전한 운영을 위해 다음의 보안 가이드라인을 준수하시기 바랍니다.
1. 인증 및 인가 설정
- 사용자 인증 활성화:
settings.js
파일에서adminAuth
옵션을 설정하여 로그인 기능을 활성화합니다.adminAuth: { type: "credentials", users: [{ username: "admin", password: "$2b$08$VhE...hashedpassword...", permissions: "*" }] }
- 비밀번호는
node-red-admin hash-pw
명령어로 해시화합니다.
- 비밀번호는
2. HTTPS 사용
- SSL/TLS 인증서 설정:
settings.js
파일에서https
옵션을 설정하여 HTTPS를 활성화합니다.https: { key: fs.readFileSync('privatekey.pem'), cert: fs.readFileSync('certificate.pem') }
- Let’s Encrypt 등에서 인증서를 발급받아 사용합니다.
3. 노드 및 Node-RED 업데이트
- 정기 업데이트: 보안 패치를 위해 Node-RED와 사용 중인 노드를 정기적으로 업데이트합니다.
sudo npm update -g --unsafe-perm node-red
4. 사용하지 않는 노드 제거
- 불필요한 노드 삭제: 공격 표면을 줄이기 위해 사용하지 않는 노드를 제거합니다.
cd ~/.node-red npm uninstall node-red-node-example
5. 환경 설정
- 방화벽 구성: Node-RED가 동작하는 서버의 포트에 대한 방화벽을 설정하여 불필요한 접근을 차단합니다.
- VPN 사용: 외부에서 접근이 필요한 경우 VPN을 통해 안전하게 연결합니다.
Node-RED는 IoT 애플리케이션 개발과 데이터 처리에 강력한 기능을 제공하는 유용한 도구입니다. 이 가이드를 통해 설치부터 기본 사용법, 그리고 보안 설정까지 학습하셨을 것입니다. 올바른 보안 설정을 통해 안전하고 효율적인 Node-RED 환경을 구축해 보시기 바랍니다.
추가 자료
728x90