Raspberry PiのRocket.Chatサーバでhubotを動かすには

先日、snapを使ってRocket.Chatサーバを構築しました。

Rocket.Chat上でbotの実行や開発ができるように、Hubotをインストールしてみたいと思います。


snap版Rocket.chatサーバのHubot環境構築手順

基本的にこちらの公式ドキュメントを参考に致しました。

node.jsでhubotを動かす方法と、dockerで動かす方法があるようです。Raspberry Piで動かすことを考慮して、使用するリソースが少なそうな、node.jsで動かそうと思います。


bot用ユーザの追加

  1. Rocket.Chatサーバへ管理ユーザでログインします。
  2. 管理→ユーザー→右上の「+」ボタン、ユーザの追加をクリックします。
  3. 名前、ユーザー名、メールアドレス、パスワードを入力します。
  4. 必ず、役割の選択で「bot」を選択しておきます。
  5. 「保存」ボタンをクリックして正しく作成されたかどうか確認します。

hubot-rocketchat-boilerplate本体のインストール

SSHでubuntuにログインします。hubotのインストールと実行は、rootではなく、通常のubuntuユーザで行いました。

  1. npmをインストールします。
    sudo apt install npm
  2. gitコマンドでファイルをクローン後、npm installで必要なモジュールをインストールします。
    git clone https://github.com/RocketChat/hubot-rocketchat-boilerplate
    cd hubot-rocketchat-boilerplate
    npm install
  3. 公式ドキュメントでは.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 "$@"
  4. この状態で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をインストールしてみようと思います。

  1. npmで対象のbotをインストールします。
    npm install hubot-help --save
    npm install hubot-shipit2 --save
  2. external-scripts.jsonを編集します。
    vi external-scripts.json

    npmでインストールしたbotを並べて書く感じのようです。

    [
        "hubot-help",
        "hubot-shipit2"
    ]

bot helpでインストールされているbotを確認できるようになりました。ship itは実行してからのお楽しみです(たまに表示されない場合もありますが)。


Hubotの自動起動

最後にHubotが自動起動するように、systemdを設定しておこうと思います。

  1. /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
  2. 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を作りましょうか?

スポンサーリンク

フォローする

スポンサーリンク