Edited at
PORTDay 12

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)