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 + JupyterLabquay.io/jupyter/tensorflow-notebook:cuda-latest— TensorFlow + JupyterLabquay.io/jupyter/datascience-notebook:latest— Data science (pandas, scikit-learn, R)- Your own image — must:
- Have
jupyterin 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)
- Have
Getting the URL
- Launch an instance with a Jupyter image.
- Wait for status
running. - 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=valuein 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 fooinstalls into the container. Lost on terminate. Keep arequirements.txtin 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.