Cloud9 on your Pi

Apr 1, 2017 00:56 · 941 words · 5 minutes read Cloud9 Raspberry Development

Introduction

A Raspberry Pi (in any of its variants) can be a useful linux server to have around the house or workplace. Adding a locally hosted Cloud9-IDE to your pi can help transform it into nice little development server. In this post we’ll go through the basics of getting a Cloud9-IDE up and running (we’ll assume you already have a Raspberry Pi with Raspbian installed, though you can certainly install Cloud9 on other boards/distros).

Installing and Running Cloud9-sdk

Installing cloud9sdk is simple, but can take a while (especially on a pi zero). Log in to your pi and install git and nodejs if you don’t already have them installed:

$ sudo apt-get update
$ sudo apt-get install git nodejs

Next, use git to fetch cloud9sdk, move into the installed directory and run the install script:

$ git clone https://github.com/c9/core.git c9sdk
$ cd c9sdk
$ ./scripts/install-sdk.sh

Now create a workspace directory — this will be your root working directory (but don’t worry, you can link other directories into this one, or even add your /home directory to the file tree). I’m calling it workspace in this tutorial:

$ mkdir workspace

Finally, start up the cloud9 server:

$ nodejs ./server.js -p 8181 -l 0.0.0.0 -a name:passwd -w workspace

This starts the server on port 8181, allows it to listen on all interfaces (not just localhost), sets a name:password for access (choose whatever you want here), and points the server to your workspace directory.

Using Cloud9

Now, from your desktop or laptop, point your browser to port 8181 of your raspberry pi: http://raspberrypi:8181/, (or use the IP address of your Pi) and you can log in with the name and passwd you supplied when starting the server. You should see something like:

Basic Cloud9 IDE

Basic Cloud9 IDE

This is the default full-ide layout (if your initial view doesn’t show the “Welcome” page in the editor pane, you can open it from the “Cloud9” menu at the top left). The left pane contains the filesytem (which is just the empty workspace directory at the moment), the top right pane is the typical editor pane (with tabs for multiple open files), and the lower right panel is where your terminal (or several terminal tabs) resides.

Note: I am calling them the editor pane, and the terminal pane, but they are just panes and you can open a terminal or file on either of them. I prefer the typical convention of top pane for files, and the lower for terminals / consoles, but you are free to mix as you wish.

There are a couple ways to populate the filesytem pane. Obviously, you can just create new files and directories on this blank slate as you wish. However, you probably already have projects you’d like to work on — perhaps in a Projects or a dev directory in your /home directory.

Well, you can easily just link an existing project directory into your workspace. So, if I have a /home/pi/dev directory (and I do, because I just made one with a dummy project in it), I can go to the terminal in the Cloud9-IDE pictured above and do:

$ ln -s /home/pi/dev dev

Now that directory is linked inside my workspace and shows up in the left filesytem pane. I can open it, and any subfolders and double click on any file to open it in the editor:

Opening a file in the IDE

Opening a file in the IDE

As you might have noticed, I chose to close the “Welcome” tab first, but it doesn’t matter.

If you want access to your entire home directory, there is a provision for that built in. Just select Show Home in Favorites from the filesystem pane’s config menu:

Adding /home from filesystem config menu

Adding /home from filesystem config menu

Now your /home directory is available to browse (and open files from) in the IDE.

Home directory in Favorites

Home directory in Favorites

Lastly, if you are like me, even though I appreciate a tabbed gui editor, I don’t much care for digging through directories in a gui filesystem and double-clicking to open files. You can open files from the terminal using the c9 script included in the Cloud9 install. It will be located in the /bin directory of the primary install: ~/c9sdk/bin/c9 in our case.

The c9 script has a few associated commands, one of which is open which does what we want, so we can do the following in the terminal:

$ ~/c9sdk/bin/c9 open filename
$ ~/c9sdk/bin/c9 open posts/*.md

Of course, no one wants to type all that, so link it to your personal /bin directory, and even give it a new name (I named it ace, which is, in fact, the name of the built in Cloud9 editor):

$ ace open filename
$ ace open posts/*.md

and for files that exist already, you can leave out the open command and just call:

$ ace filename

To keep your Cloud9 server up and running you can put it under control of the forever program:

$ sudo apt-get install npm
$ sudo npm install forever -g

$ cd ~/c9sdk
$ forever start server.js -p 8181 -l 0.0.0.0 -a name:passwd -w workspace

This will start up the server and supervise it in the background. You can find out more about forever at this site.

Conclusion

Now your raspberry pi (or other SBC) can act as a devlopment server with a nice Web-IDE. Or, perhaps a writing server (this blog is created on a NanoPi Neo Air, connected to from a chromebook via Cloud9). With the low cost of acquiring and running SBCs like the raspberry pi, nanopi, and many others, there’s no reason not to have a few such development servers (yes, I am an enabler).

__END__