Setting up a Raspberry Pi as a dashboard server with Dashing
Why the heck did I do this?
I wanted to set up one of my Raspberry Pi's as a data dashboard, pushing sensor data to a web interface that's easy to digest. I decided to use Shopify's Dashing framework. Dashing is based on Sinatra, and is pretty lightweight.
Dashing does require Ruby 1.9.3 to run. In addition, it makes use of the
One warning: The RPi is a very slow system compared with modern multi-core x86-style systems. It's pretty robust, but compiling all this complex software taxes the system quite a bit. Expect that it's going to take at least half a day to get everything going.
Setting everything up
Assuming that you're running Raspbian with a more-or-less out-of-the-box config, these steps will get working Ruby and Node setups, then install Dashing and build a sample project.
First, let's get the basic dependencies out of the way:
$ sudo apt-get update $ sudo apt-get install git-core git build-essential libssl-dev zlib1g-dev
After this is done, don't forget to config your GIT, or some of the patches below will fail.
Time to install node (based on this gist)
$ git clone https://github.com/joyent/node.git $ cd node
Use an older version of Node.js. It's possible that newer versions, including 0.10.x, will work, but this is what I did:
$ git checkout v0.8.8 -b v0.8.8 $ curl https://github.com/joyent/node/commit/25c2940a08453ec206268f5e86cc520b06194d88.patch | git am $ curl https://github.com/joyent/node/commit/1d52968d1dbd04053356d62dc0804bcc68deed8a.patch | git am $ curl https://github.com/joyent/node/commit/f8fd9aca8bd01fa7226e1abe75a5bcf903f287ab.patch | git am $ curl https://github.com/joyent/node/commit/7142b260c6c299fc9697e6554620be47a6f622a9.patch | git am $ ./configure $ make
Buidling Node.js is slow on the RPi. Now is a good time to do something else. Come back when it's done and do the next steps to actaully install node.
note: it's possible to get newer node.js versions as pre-built binaries now. See http://joshondesign.com/2013/10/23/noderpi for details. note redux: you can also get node.js for the RPi with this: https://github.com/nathanjohnson320/node_arm.
$ sudo make install
And now Ruby and the gems we want:
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile $ echo 'eval "$(rbenv init -)"' >> ~/.profile $ exec $SHELL -l # make rbenv available immediately $ rbenv install 1.9.3-p448
Building Ruby 1.9.3 takes a while; go play a game of Monoply or something…
$ rbenv global 1.9.3-p448 # set up the new Ruby to be available everywhere $ echo 'gem: --no-rdoc --no-ri' >> ~/.gemrc # Turn off installation of Ruby docs to speed up gem installs $ gem install bundler dashing $ rbenv rehash # make the new commands installed with the gems available
Lastly, let's get a Dashing project running:
$ cd ~ $ dashing new test_dashboard_project $ cd test_dashboard_project $ dashing start
OK, that should be it. You should now be able to see the sample Dashing dashboard at http://[your Raspberry Pi's IP address or hostname]:3030/sample.