Today I decided to give Let’s Chat a go (after an installation debacle with Zulip) and it was a breeze. Then I decided that I want a Hubot to take my commands, if nobody else is listening to me. That was a bit more complicated, but right now I’m runing my own instance of Let’s Chat with a Hubot taking commands from my via chat. The bot is not doing something, but I have plans to give it a bit more autonomy. Anyway, here’s what I did:
Install Let’s Chat via Docker
This one is simple with the official Dockerfile. Just run the following commands:
# first start a mongodb
docker run --name some-mongo -d mongo
docker run --name some-letschat --link some-mongo:mongo -p 8080:8080 -p 5222:5222 -d sdelements/lets-chat
Wait a couple of seconds and open http://localhost:8080, you should see the Login for Let’s Chat.
Generate a Hubot instance
I didn’t want to pollute my system with all those NodeJS stuff, so I decided to use a pre-built container with Yeoman to generate my Hubot.
docker run --rm -it -v $(pwd)/src:/backup pulse00/yeoman bash
Now I was in the yeoman container and could install and run the
npm install -g generator-hubot
I switched to directory /backup to generate my hubot sources to my real harddrive. Yeoman asked for some settings and happily generated the bot:
$ ls -la
drwxr-xr-x 5 1000 1000 4096 Oct 4 06:09 .
drwxr-xr-x 26 root root 4096 Oct 4 06:09 ..
-rw-r--r-- 1 root root 197 Oct 22 2014 .editorconfig
-rw-r--r-- 1 root root 39 Dec 19 2014 .gitignore
-rw-r--r-- 1 root root 28 Oct 4 06:09 Procfile
-rw-r--r-- 1 root root 7811 Oct 4 06:09 README.md
drwxr-xr-x 2 root root 4096 Oct 4 06:09 bin
-rw-r--r-- 1 root root 213 Oct 4 06:09 external-scripts.json
-rw-r--r-- 1 root root 2 Oct 4 06:09 hubot-scripts.json
drwxr-xr-x 16 root root 4096 Oct 4 06:09 node_modules
-rw-r--r-- 1 root root 642 Oct 4 06:10 package.json
drwxr-xr-x 2 root root 4096 Oct 4 06:09 scripts
I exited from the container and added the generated hubot to my git repository. Then I created a simple Dockerfile to run the hubot inside a container:
ENV HUBOT_LCB_TOKEN=my-token-goes-here HUBOT_LCB_ROOMS=room-id-copied-from-URL-goes-here HUBOT_LCB_PROTOCOL=http HUBOT_LCB_HOSTNAME=localhost HUBOT_LCB_PORT=1234
ADD src /opt/bot
CMD ["bin/hubot", "-a", "lets-chat"]
HUBOT_LCB_TOKEN was taken from the hubot account in my Let’s Chat instance and the
HUBOT_LCB_ROOMS ID was taken from the URL after joining the room on my instance. After that I can run the container and my hubot instance connects to the chat room.