Emerson's Site

Web/Software Dev, college kid, musician, etc.

MongoDB + Raspberry Pi (without building anything!)

Update: @svvitale has made an install script that does all of this tutorial for you. So if you just need to quick get Mongo installed (which is fine, I probably would have done the same thing), that script is what you’re looking for. If you really want to do it manually, read on.

I wanted to put this out there, because every other tutorial/blog I’ve seen for getting Mongo on a Pi requires you to build from a source, usually RickP’s. However, doing that requires at least several hours, which I didn’t feel like giving up. So, I did some digging around and found Mark Little’s repo, which is a pre-compiled package of Mongo 2.1.1 (same as RickP’s), which should be modern enough for most uses.

Install

Installation is super simple, just uncompress the mongo.tar.gz from the repo and copy everything from /bin into /usr/bin, /lib to /usr/lib, and /include to /usr/include.

Next, make a new user for mongodb: sudo adduser --firstuid 100 --ingroup nogroup --shell /etc/false --disabled-password --gecos "" --no-create-home mongodb

Then, create a folder for logs and state data: sudo mkdir /var/log/mongodb/ sudo mkdir /var/lib/mongodb/

And set permissions on those folders: sudo chown mongodb:nogroup /var/log/mongodb/ sudo chown mongodb:nogroup /var/lib/mongodb/

Then go to RickP’s repo, and grab the /debian/init.d and /debian/mongodb.conf files. Rename init.d to mongod and copy to /etc/init.d/ on the Pi. Also copy the mongodb.conf file to /etc/

Note: Some people have had trouble with carriage returns in the mongod file, so it might be a good idea to run dos2unix on that file.

Finally, we need to sudo chmod u+x /etc/init.d/mongod and sudo update-rc.d mongod defaults to make our script executable on startup.

Starting it up

You can now start MongoDB by executing sudo /etc/init.d/mongod start or sudo service mongod start. It should run like any other MongoDB installation now, running mongo from the terminal will open the interactive shell. If you’re looking for how to use mongo (because it is a little different than traditional SQL syntax), their documentation is a great starting point.

Shutting it down

Note: Never pull the power cord from a Pi without first stopping Mongo. If you do, the databases may become corrupted and you will have a hard time fixing the mess you made. Before powering down the pi, quick run sudo service mongod stop or sudo /etc/init.d/mongod stop, and make sure it is stopped before you shut down.

That’s all you need to run Mongo on the Pi. Hopefully an enterprising person will come along and build a more recent version of Mongo for ARM devices. If that happens, I’ll update this post accordingly, but for now, enjoy your MongoPi!

If you have any questions or if I made a mistake somewhere, please email me and let me know. You can also find this site on Github (see footer link) and submit a PR with your changes.

–Emerson

Changelog:

2014/09/19 - Added link to svvitale’s script

2014/10/28 - Added how to start the mongo shell and link to documentation, thanks to Timo Denk.