Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Node Redの紹介

More than 1 year has passed since last update.

Node-REDの紹介

自宅オンプレミスでCIサーバーを作りたかったので、色々調べたときに、ふと見つけたOSSを紹介します。

注意

信頼境界の概念を
セキュリティは最低限行いましょう

Node-REDとは?

  • もともとはIoT用として作られた

なぜ、そのようなものを作ろうかと思ったのか?

  • Mac環境を使ったセキュアな自作CIサーバーが欲しかった
  • electronのビルドに必要
  • 原因は不明だが、何故かうまくいかない
    • travis ci 仮装mac環境
    • circle ci 仮装mac環境 <=お金かかるのでしていない

どんなことに使えるか

  • slackで通知されたら、ローカルであるプログラムを起動したい
  • 私設サーバーに機密情報をおきたくない
  • IoTを使って、温度などを定期的に取りたい
  • 情報のフローを頻繁に変えたい
  • めんどくさいプログラミングしたくない
  • 速さよりも機能

使ってみて感じたこと

  • マイナーバージョンリリースではあるが使えるユースケースは多そう
  • 初期設定では、セキュリティ機能は一切ないので、第3者からいじり放題
    • サーバーにおセキュリティを自分ですべてしなければならない
    • https化、dockerとか (結構敷居高い)
    • 専門の人にやってもらったほうがいいかも

遭遇したバグ

Node-REDのセキュリティ関連の機能は、nginxプロキシをさせると、一部がバグる(パレッド画面に移動しないなど)
名称未設定ファイル.png (44.4 kB)

Node-REDの起動方法

$ mkdir -p $HOME/Desktop/nodered/data
$ docker run -it --rm \
-p 1880:1880 \
-v $HOME/Desktop/nodered/data:/data \
--name app-nodered \
nodered/node-red-docker
  • -p 1880:1880
  • $HOME/Desktop/nodered/data
    • Node-Redの設定ファイル、プログラミング情報が保存されている

$HOME/Desktop/nodered/dataが自動的に作られる
ディレクトリ構成はこんな感じ
スクリーンショット 2017-11-08 08.29.19.png (27.2 kB)

http://localhost:1880/ 」にアクセスしてて

画面のパーツの説明

パーツは大きく分けて、3つに別れる

名称未設定ファイル (1).png (41.8 kB)

実際に触れてみよう

  1. プログラミングを行うには、「左の flow メニュー」からドラッグ&ドロップで要素を選ぶ
    名称未設定ファイル (2).png (37.2 kB)

  2. 要素をダブルクリック。各flowに詳細設定を行う(なんのURLをトリガとするか)
    スクリーンショット 2017-11-08 08.51.54.png (84.1 kB)

  • 各項目の説明
    • メソッド(どのメソッドをトリガとするか)
    • URL (どのパスから来たものをイベントとしてトリガーするか)
    • 名前 (Node Red内部で使う、ラベルのようなもの)

プログラミングしてみよう

最小構成

httpで/testにGETでアクセスすると、何かしらのデータが入ってくるものを作る

スクリーンショット 2017-11-08 09.00.56.png (25.7 kB)

flowの設定を書き換える

スクリーンショット 2017-11-08 08.54.26.png (20.7 kB)

デプロイボタンでデプロイ

スクリーンショット 2017-11-08 09.01.05.png (4.8 kB)

$ curl http://localhost:1880/test\?payload\=messages
{"payload":"messages"}%

slackとの連携

slack との連携をするには、plaginが必要になる

プラグインのインストール

名称未設定ファイル (4).png (45.8 kB)

コレ選択。右下の「ノードを追加」をクリックすると、インストールができる
名称未設定ファイル (5).png (35.0 kB)

slackのflowが使えるようになります。

スクリーンショット 2017-11-08 11.02.50.png (23.6 kB)

slackbotのapi tokenを使用することで、slack簡単に連携することができます。

名称未設定ファイル (6).png (16.4 kB)

slackを用いた、全体的なフロー図はこのようにしました

名称未設定ファイル (3).png (64.3 kB)

セキュリティについて

Node-REDには、セキュリティ機能として、ユーザ管理機能が一応実装されている(詳しくはここを見よう)

(といっても、ハードコーディングなのだが)
スクリーンショット 2017-11-08 08.34.29.png (80.3 kB)

akkijp
MW級大電力電力取り扱い技術者もどき| 純粋独学エンジニア| C/C++/Python/Ruby/Javascript/PHP/Golang/HTML/CSS/Sass/OpenCV/Git/Docker/jQuery/機械学習/
https://rorono.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away