2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

1つのhubotを複数のslackにつなぐ(hubotを複数起動する)

Posted at

hubotをすでにslackと連携していて、全く同じbotを別のslackに繋げたらいいな、
起動時のパスでトークン渡してるんだから、別のトークン渡せばいいんじゃない?と思ったんです。
ところがうまくいかなかったので調べました。

雰囲気から察するに、複数起動できない時やはslack adapter関係なさそうなので、
複数のhubotを起動したかったんだけどうまくいかない!っていう時はチェックしてみてください。

TL;DL

  • hubotを複数起動するにはPORT環境変数の指定が必要なことがある
  • bin/hubot はシェルスクリプトなのでお気に召すままカスタマイズ

やってみた

エラーがでて2個目が起動しません。

[Wed Apr 25 2018 13:35:47 GMT+0900 (JST)] ERROR Error: listen EADDRINUSE 0.0.0.0:8080
  at Object._errnoException (util.js:1022:11)
  at _exceptionWithHostPort (util.js:1044:20)
  at Server.setupListenHandle [as _listen2] (net.js:1367:14)
  at listenInCluster (net.js:1408:12)
  at doListen (net.js:1517:7)
  at _combinedTickCallback (internal/process/next_tick.js:141:11)
  at process._tickCallback (internal/process/next_tick.js:180:9)

ということでググってみると、
-デフォルトでport 8080として起動する
-変更するには環境変数PORTを設定する

ということがわかりました。

また、 hubot の bin/hubot は実はshell scriptなので、こいつの中で環境変数を設定してやればいいようです。
せっかくなので、起動用のスクリプト内でtoken指定やadapter 指定もしてしまいましょう。
ついでに npm installをこのスクリプトが毎回やっているのですが、起動が遅くなるので必要なタイミングで自分でnpm installできるなら消してしまっていいと思います。

そんな感じで出来上がった起動スクリプトがこんな感じ

hubot-a
#!/bin/sh

set -e

export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
#他と被らないPORTを指定する
export PORT=8091 
#slack token
export HUBOT_SLACK_TOKEN=xxx-99999999999-XXXXXXXXXXXXXXXXXXXX
#-a(--adaptor)でアダプターを決め打ちする
exec node_modules/.bin/hubot --name "hubots" "$@" -a slack 

2個目のhubotについては、これをコピーしてslack tokenとportだけ書き換えればOKです。

参考

SSH - 一つのVPSサーバーでhubotを複数起動することは可能でしょうか?(112248)|teratail

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?