NotebookCloud Documentation


Introduction

NotebookCloud is service that allows you to launch and control IPython Notebook servers on Amazon EC2 from your browser. This enables you to host your own Python programming environment, on your own Amazon virtual machine, and access it from any modern web browser. You can set everything up in a minute or two, and it's very easy to use.

NotebookCloud is a simple web app that allows you to launch and control as many machines as you like. The interface also provides links to any of your machines that are currently serving IPython, so you can easily find them without having to worry about EC2 URLs.

NotebookCloud is essentially a web based wrapper around the EC2 API, so you need an Amazon Web Services account to use it, but they are easy to sign up for and you get plenty of freebies for the first year.

NotebookCloud is a free service, you are not charged for using it at all. AWS is not a free service and you should ensure that you understand their terms and conditions before using NotebookCloud.

Each virtual machine created on EC2 uses an Amazon Machine Image, an AMI, as its stack. AMIs are just cloud distros. The NotebookCloud AMI uses Ubuntu as its base and then bundles a number of useful extras. The AMI is summarised below.
NotebookCloud AMI, Version 0.1
  • IPython 0.13 on Ubuntu Server 12.04 LTS
  • Support for all the core IPython features, including inline plotting
  • Support for R, Cython and Octave magic
  • Support for python3, sh, bash, perl and ruby magic
  • Includes pip, setuptools, Pexpect, nose, Sphinx, Pygments and boto
  • Includes pandas, NetworkX, mpi4py, pyTables and h5py
  • Includes SciKit learn and statsmodels
If you have any input regarding stuff you'd like to see bundled in the next AMI release, please get in touch. The current AMI is focussed on scientific use, in keeping with IPython's primary focus. Over time, support for other types of use will be included.

NotebookCloud is open source, so anyone interested in using any code or ideas for their own project is encouraged to get in touch.

Any credit is due to the open source community at large, and the IPython developers in particular. If you'd like to offer your thanks in some way, you should pay those guys a visit.



Prerequisites

NotebookCloud uses Google Accounts and Amazon Web Services. Before you use NotebookCloud, you should sign up for Gmail and AWS, making sure you understand the terms of both account systems, especially billing on AWS, which is fine grained.

IPython Notebook will work on any modern browser, including Chrome, Firefox and Safari. It does not work with Internet Explorer 9 or less and has not been tested on IE10 at this time. Obviously, NotebookCloud can not support a browser that IPython Notebook can not support.



Your Personal Information

Introduction

To function, NotebookCloud must have access to some of your details. These details are stored using Google App Engine's Datastore, using 2-step verification to prevent unauthorised access.

We do not store any details beyond what is covered in this document.

All communication between your browser and NotebookCloud, as well as all communication between NotebookCloud and AWS, is encrypted.

All communication between you and your notebook servers is also encrypted, but uses a self-signed certificate that your server will create for you the first time it is launched, using random data provided by NotebookCloud. Because the certificate is not issued by a recognised certificate authority, your browser will raise a warning of some kind. It is perfectly safe to proceed and the encryption is just as dependable as ever.

AWS Keys

NotebookCloud needs your AWS account keys to validate requests to your EC2 account. These are used to launch new instances, as well as to access information about those instances.

NotebookCloud can not access your server's internals. NotebookCloud servers can not read from, write to, nor execute anything on your servers. NotebookCloud can retrieve information about the state of your servers, as well as launch, start, stop, reboot and terminate them.

Please note: Whilst our servers ignore any instances on your AWS account that were not launched from your NotebookCloud account, we do have the technical ability to access them. This may be a security concern for some users.

Password

You need to provide a password that you'll use to log into your notebooks. We do not store this password. It is hashed as soon as it is submitted to us and stored in that form. If you forget your password, we can not retrieve it for you. You will not be able to access your existing notebooks.

Summary

We use Google App Engine's Datastore, with access protected by 2-step verification, to store your AWS keys, your hashed password and a list, referencing any instances we have created on your account that still exist.

Deletion

You can delete your NotebookCloud account at any point. Deletion is immediate, total and irreversible. You can create a new account in about a minute, anytime you like.

Please note: If you have any security concerns regarding your AWS account, you should change your AWS access keys by creating a new set, then deleting the old ones. It is also good practice to change your keys periodically.



The AMI

The NotebookCloud AMI is public and freely available for use, modification and redistribution. It can be launched normally, from the AWS EC2 Management Console, but this option is only useful when developing the AMI. When launched in this way, it will not attempt to self-configure, nor will it launch the IPython Notebook server.



Instance Types

You can launch any of the instance types available on EC2 from NotebookCloud. Some of these instance types can be expensive to run. You should always ensure you've read Amazon's official documentation to ensure you know what you are running and what it will cost. NotebookCloud uses different names than Amazon for instance types, as shown in the following table.


NBC NameEC2 API NameEC2 Docs Name
Micro t1.micro Micro Instance
Small m1.small Small Instance
Medium m1.medium Medium Instance
Large m1.large Large Instance
XLarge m1.xlarge Extra Large Instance
High Memory m2.xlarge High-Memory Extra Large Instance
High Memory x 2 m2.2xlarge High-Memory Double Extra Large Instance
High Memory x 4 m2.4xlarge High-Memory Quadruple Extra Large Instance
High CPU Medium c1.medium High-CPU Medium Instance
High CPU XLarge c1.xlarge High-CPU Extra Large Instance
GPU Cluster cg1.4xlarge Cluster GPU Quadruple Extra Large Instance
Super Cluster cc1.4xlarge Cluster Compute Quadruple Extra Large Instance
Death Star cc2.8xlarge Cluster Compute Eight Extra Large Instance