Skip to main content

Jupyter

If the container image you launch contains jupyter in its name, EcoLink automatically provisions a public HTTPS URL for Jupyter access. Works out of the box with any image that runs JupyterLab on port 8888.

Supported images

  • quay.io/jupyter/pytorch-notebook:cuda12-latest — PyTorch + JupyterLab
  • quay.io/jupyter/tensorflow-notebook:cuda-latest — TensorFlow + JupyterLab
  • quay.io/jupyter/datascience-notebook:latest — Data science (pandas, scikit-learn, R)
  • Your own image — must:
    • Have jupyter in the image name (the trigger for URL provisioning)
    • Run JupyterLab on port 8888 at startup
    • Accept connections from outside (use --ip=0.0.0.0)

Getting the URL

  1. Launch an instance with a Jupyter image.
  2. Wait for status running.
  3. On the instance detail page, look for Jupyter URL and click to open.

The URL format is https://<region-gateway>/jupyter-<instance-id>/ — routed through the regional gateway with HTTPS.

Authentication

Jupyter auth is handled by the platform via your console login. No token needed — if you're logged into the console, Jupyter opens for you; otherwise it redirects to login.

Persisting notebooks and data

Files inside the instance's container filesystem are lost when the instance terminates. For anything you want to keep:

  • Attach a cloud drive at launch, mount at /workspace. Notebooks saved there survive termination. Next time you launch, attach the same drive to pick up where you left off.
  • Attach a shared filesystem at launch, mount at /shared. Visible to multiple instances at once — ideal for team datasets.

See Storage.

Tips

  • %env VAR=value in a cell sets an environment variable for the kernel process (e.g., HUGGINGFACE_TOKEN).
  • Split GPU-hungry cells. A single cell taking all available VRAM can kill the kernel — chunk it, run torch.cuda.empty_cache() between steps.
  • !pip install foo installs into the container. Lost on terminate. Keep a requirements.txt in your cloud drive and pip-install from it at session start.
  • Kernel dead? Check the terminal tab inside JupyterLab for Python errors. OOM, CUDA-out-of-memory, and segfaults all show up there.

Uploading files into Jupyter

JupyterLab's file browser (left sidebar) has a drag-and-drop upload. Fine for small files. For anything over a few MB, download into the instance with wget / curl / huggingface-cli via the browser terminal — much faster than uploading from your laptop.

When Jupyter isn't what you want

If you'd rather run a different tool (VS Code server, streamlit, your own web UI) on a different port, use a non-Jupyter image. The URL provisioning is gated on the image name containing jupyter — if it doesn't, nothing auto-provisions and you can use whatever port you like inside.

For exposing a custom port (a streamlit app, ComfyUI, your own web UI), tick Expose a public service URL at launch and enter the port your service listens on — or open the URL later from the instance detail page. See Launching a GPU instance.