hubot logo

Hubot Documentation

Because there are so many variations of Linux, and more generally UNIX, it's
difficult for the hubot team to have canonical documentation for installing and
deploying it to every version out there. So, this is an attempt to give an
overview of what's needed to get deploying.

There are 3 primary things to deploying and running hubot:

  • node and npm
  • a way to get source code updated on the server
  • a way to start hubot, start it up if it crashes, and restart it when code updates

node and npm

To start, your UNIX server will need node and npm. Check out the node.js wiki
for installing Node.js via package manager, Building on GNU/Linux and other UNIX.

Updating code on the server

The simplest way to update your hubot's code is going to be to have a git
checkout of your hubot's source code (that you've created during Getting Started, not the github/hubot repository, and just git pull to get change. This may
feel a dirty hack, but it works when you are starting out.

If you have a Ruby background, you might be more comfortable using
capistrano.

If you have a Chef background, there's a
deploy resource for managing
deployments.

Starting, stopping, and restarting hubot

Every hubot install has a bin/hubot script to handle starting up the hubot.
You can run this command from your git checkout on the server, but there are some problems you can encounter:

  • you disconnect, and hubot dies
  • hubot dies, for any reason, and doesn't start again
  • it doesn't start up at boot automatically

For handling you disconnecting, you can start with running bin/hubot in
screen session or with
nohup.

For handling hubot dying, and restarting it automatically, you can imagine
running bin/hubot in a
bash while loop. But
really, you probably want some process monitoring using tools like
monit,
god,
bluepill,
upstart,
systemd.

For starting at boot, you can create an init script appropriate for your UNIX
distribution. If you are using one of the process monitoring tools above, make
sure it boots at startup. See the examples
for configuration examples.

Recommendations

This document has been deliberately light on strong recommendations. At a high
level though, it's strongly recommended to avoid anything that is overly manual
and non-repeatable. That would mean using your OS's packages and tools whenever
possible, and having a proper deploy tool to update hubot, and process
management to keep hubot running.