Node-REDの紹介
自宅オンプレミスでCIサーバーを作りたかったので、色々調べたときに、ふと見つけたOSSを紹介します。
注意
信頼境界の概念を
セキュリティは最低限行いましょう
Node-REDとは?
- もともとはIoT用として作られた
なぜ、そのようなものを作ろうかと思ったのか?
- Mac環境を使ったセキュアな自作CIサーバーが欲しかった
- electronのビルドに必要
- 原因は不明だが、何故かうまくいかない
- travis ci 仮装mac環境
-
circle ci 仮装mac環境<=お金かかるのでしていない
どんなことに使えるか
- slackで通知されたら、ローカルであるプログラムを起動したい
- 私設サーバーに機密情報をおきたくない
- IoTを使って、温度などを定期的に取りたい
- 情報のフローを頻繁に変えたい
- めんどくさいプログラミングしたくない
- 速さよりも機能
使ってみて感じたこと
- マイナーバージョンリリースではあるが使えるユースケースは多そう
- 初期設定では、セキュリティ機能は一切ないので、第3者からいじり放題
- サーバーにおセキュリティを自分ですべてしなければならない
- https化、dockerとか (結構敷居高い)
- 専門の人にやってもらったほうがいいかも
遭遇したバグ
Node-REDのセキュリティ関連の機能は、nginxプロキシをさせると、一部がバグる(パレッド画面に移動しないなど)
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
- http://localhost:1880/ でアクセスできるようになる
-
$HOME/Desktop/nodered/data
- Node-Redの設定ファイル、プログラミング情報が保存されている
※ $HOME/Desktop/nodered/data
が自動的に作られる
ディレクトリ構成はこんな感じ
「 http://localhost:1880/ 」にアクセスしてて
画面のパーツの説明
パーツは大きく分けて、3つに別れる
実際に触れてみよう
プログラミングしてみよう
最小構成
httpで/test
にGETでアクセスすると、何かしらのデータが入ってくるものを作る

flowの設定を書き換える

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

$ curl http://localhost:1880/test\?payload\=messages
{"payload":"messages"}%
slackとの連携
slack との連携をするには、plaginが必要になる
↓
プラグインのインストール
コレ選択。右下の「ノードを追加」をクリックすると、インストールができる
slackのflowが使えるようになります。

slackbotのapi tokenを使用することで、slack簡単に連携することができます。
slackを用いた、全体的なフロー図はこのようにしました
セキュリティについて
Node-REDには、セキュリティ機能として、ユーザ管理機能が一応実装されている(詳しくはここを見よう)