I was tasked with installing Rocket.Chat on a raspberry
pi. Currently I have a PiB and a Pi3 that are not tasked with anything. Since I
expect myself having other plans for the Pi3, I chose to try installing Rocket.Chat
on the PiB.
First we start with installing raspbian
on our pi. The light edition should do it. Do not forget to resize the
root partition (using fdisk or parted) if you're using the light edition since
it is not so easy to do from inside the raspbian system.
But let's say we have a fresh raspbian installation and start from there.
First we have to install all dependencies. Those are Node.js, MongoDB and
graphicsmagick. Graphigsmagick we will install through the repository
while we will build node, to get the latest and greatest version, ourselves.
Starting with node, we download the latest node source code and unpack it
wget https://nodejs.org/dist/v5.9.1/node-v5.9.1.tar.gz && tar -xzf node-v5.9.1.tar.gz.
We now can just cd in there (cd node-v5.9.1) and build and install it
(./configure && make && sudo make install). This will take quite some time. This might
even take a few hours. After the configure step, you can
make > makelog & and then disown in order to leave that session
alone and even close it. But don't forget to sudo make install once it's done.
In the meantime, if we have multiple terminal sessions or another ssh session,
we can start installing the other stuff. graphicsmagick we can install
with sudo apt-get install graphicsmagick. No problem there.
MongoDB is a little bit more complex. They do not supply packages for our system, so we
need to compile it ourselves as well. But this needs much more memory than
our Pi has, so we need to add some swap memory as well.
I had a spare 1GB usb stick lying around so I formatted this drive to swap
(with gparted), plugged it into my Pi and enabled it for swapping with
sudo swapon /dev/sda1. With more than 1Gb of swap, we are good to go
(from what I've seen, the build process peaks at about 800MB of memory).
Now we need to install scons
with sudo apt-get install scons. We download and extract the latest source release from the mongodb download page
(in my case, this was 3.2.4) with wget https://fastdl.mongodb.org/src/mongodb-src-r3.2.4.tar.gz && tar -xzf mongodb-src-r3.2.4.tar.gz
The build process is not so hard, it just takes time. Once we cd ed into
the source folder, we can start building the database server with
scons. For me, this took slightly less than 30 hours
so putting this one in the background as well and then going for a long walk,
then a sleep, and then for a long walk again, might be good idea.
After this is done, we install MongoDB with sudo scons install. This will,
again, take a some time.
If you've put all the stuff in the background, you can, once in a while, log in
and check with top, whether your Pi is still doing something.
I tried building MongoDB myself, before opting for the packages provided.
During this exercise, I learned something, that makes me a bit wary.
MongoDB's build process does not work with the source from github. The configure
process fails with a source archive from github while the one from the download
page, which should be identical, fails. This is quite an issue. Also, I couldn't
find a MongoDB bugtracker linked anywhere from github or the MongoDB homepage.
This leads me to believe that MongoDB is not really interested in the open source
community and fostering an open infrastructure. Rocket.Chat is built upon
MongoDB but I won't be using MongoDB for any of my projects.