先日、snapを使ってRocket.Chatサーバを構築しました。
Rocket.Chat上でbotの実行や開発ができるように、Hubotをインストールしてみたいと思います。
目次
snap版Rocket.chatサーバのHubot環境構築手順
基本的にこちらの公式ドキュメントを参考に致しました。
node.jsでhubotを動かす方法と、dockerで動かす方法があるようです。Raspberry Piで動かすことを考慮して、使用するリソースが少なそうな、node.jsで動かそうと思います。
bot用ユーザの追加
- Rocket.Chatサーバへ管理ユーザでログインします。
- 管理→ユーザー→右上の「+」ボタン、ユーザの追加をクリックします。
- 名前、ユーザー名、メールアドレス、パスワードを入力します。
- 必ず、役割の選択で「bot」を選択しておきます。
- 「保存」ボタンをクリックして正しく作成されたかどうか確認します。
hubot-rocketchat-boilerplate本体のインストール
SSHでubuntuにログインします。hubotのインストールと実行は、rootではなく、通常のubuntuユーザで行いました。
- npmをインストールします。
sudo apt install npm
- gitコマンドでファイルをクローン後、npm installで必要なモジュールをインストールします。
git clone https://github.com/RocketChat/hubot-rocketchat-boilerplate cd hubot-rocketchat-boilerplate npm install
- 公式ドキュメントでは.envファイルを作成するとありますが。後でsystemdで自動起動したいため、bin/hubotファイルを編集しました。
vi bin/hubot
次のような内容です。
#!/bin/sh set -e export ROCKETCHAT_URL=<Rocket.ChatサーバのIPアドレス>:3000 export ROCKETCHAT_USER=<作成したbotのユーザ名> export ROCKETCHAT_PASSWORD=<作成したbotのパスワード> export ROCKETCHAT_ROOM=general export ROCKETCHAT_USE_SSL=false until nc -z localhost 3000; do sleep 1 done cd /home/ubuntu/hubot-rocketchat-boilerplate /usr/bin/npm install export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" exec node_modules/.bin/hubot -a rocketchat "$@"
- この状態でbin/hubotを実行すると、hubotがRocket.Chatサーバにログインし、何か命令を受け付ける状態になります。既定でscriptsに入っているexample.jsとversion.jsの実行が可能です。「bot rc version」でversion.jsが実行されるようです。
Hubot Scriptsのインストール
GitHubのHubot Scriptsで公開されているbotをインストールするには?
実験的に、hubot-helpとhubot-shipit2、2つのbotをインストールしてみようと思います。
- npmで対象のbotをインストールします。
npm install hubot-help --save npm install hubot-shipit2 --save
- external-scripts.jsonを編集します。
vi external-scripts.json
npmでインストールしたbotを並べて書く感じのようです。
[ "hubot-help", "hubot-shipit2" ]
bot helpでインストールされているbotを確認できるようになりました。ship itは実行してからのお楽しみです(たまに表示されない場合もありますが)。
Hubotの自動起動
最後にHubotが自動起動するように、systemdを設定しておこうと思います。
- /etc/systemd/system/rocketchat_hubot.serviceファイルを作成します。
sudo vi /etc/systemd/system/rocketchat_hubot.service
次のような内容です。
[Unit] Description=RocketChat Hubot Server After=snapd.service [Service] ExecStart=/home/ubuntu/hubot-rocketchat-boilerplate/bin/hubot Restart=always Type=simple RestartSec=10 User=ubuntu Group=ubuntu [Install] WantedBy=multi-user.target
- systemdに設定変更を反映し、自動起動するようにしました。
sudo systemctl daemon-reload sudo systemctl enable rocketchaat_hubot.service --now
これでRaspberry Piを起動すると、snapdの後にhubotが自動起動するようになりました。
8番で作成したbin/hubotスクリプトに、Rocket.Chatサービスが起動するまでsleepする処理が入っていますので、うまく順番に起動するかと思います。
Systemdの設定はオリジナルですが、Rocket.ChatをHubotが待つ処理は、公式ドキュメントを参考にさせて頂きました。
以上で、Raspberry Piでbot処理を行えるようになりました。
スクリプトを作成することで、何かRaspberry Piに命令すると、何か動作したり、メッセージを返したりする処理をさせることができます。
基本的に、外部のサーバに依存せず、Raspberry Piのみでサーバが完結していますので、ご家庭や職場などのローカルなLAN環境でも動かせるかと思います。
さて。どんなbotを作りましょうか?