Jeff Leek has tried to move to the cloud with his Chromebook Experiment.

My motivation is different but my goal is similar. Would it be possible to create a virtual machine (VM) in the cloud that after an initial setting…

  • It can be started/stopped from the web browser (you do not need SSH into it). Ideally, I also want a command line client to start/stop VM.

  • It has RStudio / Jupyter Notebook that starts/stops with the machine. Ideally, R/python updates should be super-easy.

I do not claim that the following solution is necessarily the best one but it works for me. If you are familiar with Amazon EC2:

  • Launch a new instance - choose “Ubuntu Server 14.04 LTS (HVM), SSD Volume Type” (because of systemd process manager)
  • Be careful, your VM will need public IP, more than default (8 GB) disk space and port 80 open for incoming/outgoing connection
  • SSH into it and run the following script
# run updates
sudo apt-get update
# install docker
sudo apt-get install -y docker.io
# pull docker image jupyter/datascience-notebook (scikit-learn, pandas, … preinstalled)
sudo docker pull jupyter/datascience-notebook
# get YOUR PASSWORD sha1 hash from IPython.lib.passwd(YOUR PASSWORD) 
# start the docker container 
sudo docker run -d -p 80:8888 --restart=always --name dsnb jupyter/datascience-notebook start-notebook.sh --NotebookApp.password='sha1:YOUR PASSWORD SHA1 HASH'
# navigate your browser to http://YOUR_MACHINE_PUBLIC_IP, passwd = YOUR PASSWORD
# make sure everything is running as expected
sudo docker ps
# if not stop and remove the docker container: sudo docker stop dsnb; sudo docker rm dsnb

This way I pay for the VM only when I actually use it (plus some pennies for permanent disk space). In February 2017, the cost was $0.05/hour for t2.medium (4GB memory, 2vCPUs) and $0.10/hour for t2.large (8GB memory, 2vCPUs).