Ben Chuanlong Du's Blog

It is never too late to learn.

Public Jupyter/JupyterLab Hosts

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

Google Cloud Shell

Technically speaking, Google Cloud Shell is Jupyter/JupyterLab service. It is a always free small VM with 5GB persistent storage that Google Cloud Platform offers to its customers to experiment with Google Cloud and manage projects and resources from web browsers. However, the Google Cloud Shell can be used to run Jupyter/JupyterLab notebooks in 2 ways.

  1. Google Cloud Shell comes with Cloud Shell Editor which is a cloud IDE based on Theia (which a cloud & desktop IDE framework implemented in TypeScript and is partly VSCode compatible) . With Cloud Shell Editor, Jupyter/JupyterLab notebooks can be run (if the required notebook kernel is installed).

  2. You can manually install JupyterLab and launch a service.

A Cloud Shell VM is ephemeral and no system-wide change will persist beyond session end. There are 3 ways to circumvent this problem.

  1. Use a custom Docker image (recommended). Please refer to container image customization for detailed instructions.

  2. Use a environment customization script .

  3. Install tools to your local directories which are persistent (not recommended).

GitPod

GitPod allows users to use their customized Docker images and allow users to expose HTTP services from your workspace. This means that if you have JupyterLab/Hub installed in your GitPod image, you can run a JupyterLab/Hub server within your GitPod worksapce and access it from public. Once you start a new services listing on a port, a prompt will show up at the right-bottom corner and you can click it to visit the service. The prompt will disappear after a few seconds or after being clicked. You can always use command gp url port to find the public URL of an exposed port/service.

Note that GitPod has a timeout of 30 minutes (unless you have the Unlimited Plan) if there's no activity on the GitPod IDE page. This seriously limit the usability of the JupyterLab server launched from a GitPod workspace. You will have to go back to the IDE page once for a while to make sure that your workspace won't timeout and get killed. I typically use JupyterLab launched from GitPod for ad hoc short-time tasks, e.g., writing a notebook-based article for my blog.

Noteable

Pros

  1. support filesystem navigation
  2. support different kernels in different cells in the same notebook

Cons

  1. no terminal support

Google Colaboratory

  1. No terminal unless you hack it to run JupyterLab

  2. Support root user.

  3. Google Drive can be mounted.

  4. Free GPU available!

Kaggle

  1. Jupyter notebooks only, no JupyterLab support.
  2. Only Python an R kernels are supported.
  3. GPU available for request.

DeepNote

Pros

  1. Allow customized Docker images.

Cons

  1. DeepNote uses a customized interface instead of Jupyter/Lab interface causing
    • no easy way to navigate through the file system
    • no easy way to switch among different kernels

Code Ocean

Pros

  1. Very flexible. Seems to be a good choice.

Cons

  1. The pricing seems to be expensive ...

Cocalc

  1. The free plan is not usable as no internet access is provided for the free plan.

Binder

Pros

  1. Great for temporary usages.

  2. Customization of Docker iamge is supported!

Cons

  1. No persistent storage at this time.

Quantopian

Pros

There seems to be lots of good tutorials on Quant Fiance.

Cons

  1. Jupyter only and too limited features. Not usable.

Gryd

Cons

  1. Supports only Jupyter but not JupyterLab/Hub.

  2. Outdate Docker images and software (Python 3.6 only).

  3. sudo is not supported currently.

  4. Installed software does not persist.

DataQuest

Course learning only.

Authorea

Cons

  1. Jupyter only.

  2. sudo not supported

YHat ScienceBox

Datalore

Not usable.

PythonAnywhere

Cons

  1. sudo is not supported.

Microsoft Azure Notebooks

Cons

  1. Supports only Jupyter but not JupyterLab/Hub.

  2. Outdate Docker images and software (Python 3.5 only).

  3. sudo is not supported currently.

Amazon SageMath

IBM Watson Studio

Deploy Your Own Public JupyterHub Server

It is very easy to deploy a Jupyter/Hub/Lab server. The difficult part is how to make your Jupyter/Hub/Lab secure. Please refer to Running a notebook server and Installing and Running Jupyter Notebooks on a Server on how to set up SSL encryption to enable HTTPS for your Jupyter/Hub/Lab server.

Comments