Can I use Cloud9 to do X?

By Fabian Jakobs24 May 2013

When talking to our users we often hear: “I like the concept of Cloud9 but can I use it to do X?”. In this context X could stand for things like programming languages, database servers, frameworks, build tools and much more. The diversity of things people do with Cloud9 still amazes us. Fortunately, we can almost always answer: “Yes you can certainly use Cloud9 to do X”.
You can do pretty much anything you want on a Cloud9 workspace, since each comes with a small Linux virtual machine and has a full terminal emulator in the IDE. While we have official support for running Apache, PHP, node.js, ruby and python, our goal is really to enable as many use cases as possible.

When trying to do something in Cloud9 off the beaten paths, it is important to understand how workspaces work and where you might need some tweaking. The most important facts are:

  • Installing additional software: The workspace itself comes with the standard unix tools out of the box. However there are always cases where the tool you want to use is not already installed or has the wrong version. To solve this we have created a custom package installer which already has about 90 packages of popular programming languages, frameworks, tools and servers. Use sudo apt-get install to install these packages into your workspace. If this still doesn’t fit your needs you can always install and compile almost anything from sources directly on the workspace.
  • Private IP: Each workspace runs in a fully secure environment and has its own private IP. In order to connect to it from the outside we provide an HTTP proxy for the applications you are developing and shell access using the terminal. One consequence is that non HTTP servers like a database can’t be accessed from outside the workspace. However it is possible to make use of non HTTP servers if the client also runs inside of the workspace.
  • $PORT is exposed to the outside: When you run an application which listens on the port specified in the environment variable $PORT, you can access this application using the http://projectname-username.c9.io URL scheme. The proxy expects the server on that port to be an HTTP server. Other protocols are not supported.
  • Long running processes: Cloud9 is a development environment. It allows you to run, test and debug your applications while working on them. We are not an application hosting platform and don’t guarantee that your applications will keep running after you close the IDE. We might add a way to upgrade a workspace to an ‘always on’ workspace at some point if there is demand (mail us if you are interested).
  • Workspace quotas: Since multiple workspaces can run on a shared node we have to put quotas on the resources a workspace can consume. Right now the quotas are:

    | Resource | Quota | | --- | --- | | RAM | 512GB | | Disk | 1.5GB |

    (These are the current limits for the free plan. Premium users have bigger quotas; see our Signup page.)

    As with the long running processes we do consider providing upgrades to more powerful workspaces.

With this information at hand it is possible to get almost everything running on Cloud9. In the coming weeks we will publish a series of blog posts about how to solve specific tasks with Cloud9. The first two will be about how to create a WordPress blog with Cloud9 and how to develop FirefoxOS applications. What comes next depends heavily on your feedback. What would you like to do with Cloud9? What are the limitations you are running into?

Happy Coding!

Fabian Jakobs

Read more posts by Fabian Jakobs.