
Self-hosting Jupyter Notebook the easy way
Yulei ChenJupyter Notebook is the go-to tool for interactive computing. Data scientists, researchers, and developers use it to write and share documents with live code, visualizations, and narrative text. Cloud-hosted notebook services like Google Colab or JupyterHub can get expensive or restrictive once you need persistent storage, custom libraries, or full control over your environment.
Sliplane is a managed container platform that makes self-hosting painless. With one-click deployment, you can get Jupyter Notebook up and running in minutes - no server setup, no reverse proxy config, no infrastructure to maintain.
Prerequisites
Before deploying, ensure you have a Sliplane account (free trial available).
Quick start
Sliplane provides one-click deployment with presets.
- Click the deploy button above
- Select a project
- Select a server (If you just signed up you get a 48-hour free trial server)
- Click Deploy!
About the preset
The one-click deploy above uses Sliplane's Jupyter Notebook preset. Here's what it includes:
- Official Jupyter base-notebook image from
quay.io/jupyter/base-notebook - Specific version tag (
2026-05-04) for stability - Persistent storage mounted to
/home/jovyan/workso your notebooks survive restarts - A randomly generated
JUPYTER_TOKENfor authentication - Runs the
start-notebook.shstartup script
Next steps
Once Jupyter Notebook is running on Sliplane, access it using the domain Sliplane provided (e.g. jupyter-xxxx.sliplane.app).
Authentication
The preset generates a random JUPYTER_TOKEN that protects your notebook. You'll find this token in the environment variables section of your service settings on Sliplane. Copy it and paste it into the login page when you first access the notebook.
If you want to disable token authentication (not recommended for public instances), you can set JUPYTER_TOKEN to an empty string.
Working directory
Your notebooks are stored in /home/jovyan/work, which is backed by a persistent volume. This means your files are safe even if the container restarts or gets redeployed.
Installing Python packages
You can install additional Python packages directly from a notebook cell:
!pip install pandas numpy matplotlib
Keep in mind that packages installed this way won't persist across container restarts unless you install them into the persistent volume. For a more permanent setup, consider building a custom Docker image with your packages pre-installed.
Logging
Jupyter logs go to STDOUT by default, which works well with Sliplane's built-in log viewer. For general Docker log tips, check out our post on how to use Docker logs.
Troubleshooting
If you can't access the notebook, check the logs in Sliplane's log viewer. Common issues include:
- Token mismatch: Make sure you're using the correct
JUPYTER_TOKENfrom your environment variables - Port issues: The preset is configured for port 8888, which is Jupyter's default
- Storage permissions: The container runs as user
jovyan(UID 1000), which has write access to/home/jovyan/work
Cost comparison
You can also self-host Jupyter Notebook with other cloud providers. Here is a pricing comparison for the most common ones:
| Provider | vCPU | RAM | Disk | Monthly Cost | Note |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 (~$10.65) | Flat rate, 1 TB bandwidth, SSL included |
| Fly.io | 2 | 2 GB | 40 GB | ~$18 | Disk and bandwidth billed separately |
| Render | 1 | 2 GB | 40 GB | ~$35 | 100 GB bandwidth, Disk billed separately |
| Railway | 2 | 2 GB | 40 GB | ~$67 + $20 plan | Pro plan floor, usage-based, bandwidth billed separately |
Click here to see how these numbers were calculated.
(Assuming an always-on instance running 730 hrs/month)
- Sliplane: flat €9/month for the Base server. Unlimited services on the same server, 1 TB egress and SSL included.
- Fly.io:
shared-cpu-2x2 GB = $11.83/mo + 40 GB volume × $0.15/GB = $6 -> ~$17.83/mo. Egress billed separately ($0.02/GB in EU). - Render: closest match is Standard ($25, 1 vCPU / 2 GB) plus 40 GB disk × $0.25/GB = $10 -> ~$35/mo. Stepping up to Pro (2 vCPU / 4 GB) costs $85/mo + disk.
- Railway (Pro plan): CPU 2 × $0.00000772/s × 2,628,000 s = $40.57; RAM 2 × $0.00000386/s × 2,628,000 s = $20.29; volume 40 × $0.00000006/s × 2,628,000 s = $6.31 -> ~$67/mo compute, plus the $20/mo Pro plan floor and $0.05/GB egress.
Bandwidth costs can add up fast on usage-based providers. Use our bandwidth cost comparison tool to see what your egress would cost on each platform.
FAQ
What can I do with Jupyter Notebook?
Jupyter Notebook is used for data analysis, machine learning, scientific computing, teaching, and prototyping. You can write Python code in cells, see results inline, create visualizations, and mix code with Markdown documentation - all in one document.
Can I use other languages besides Python?
The base-notebook image ships with Python, but Jupyter supports many languages through kernels. You can install additional kernels for R, Julia, Scala, and more. The Jupyter project also offers pre-built images like scipy-notebook and datascience-notebook that include popular scientific libraries. You can swap the image in your Sliplane service settings.
How do I update Jupyter Notebook?
Change the image tag in your service settings to a newer date-based tag and redeploy. Check the Jupyter Docker Stacks tags on Quay.io for the latest stable version. New images are built every Monday.
Are there alternatives to Jupyter Notebook?
Yes, popular alternatives include Google Colab (free but limited), VS Code with Jupyter extension (local-first), JupyterHub (multi-user), and Deepnote (collaborative notebooks). Self-hosting gives you full control over your environment and data.
How do I share notebooks with my team?
Since your Jupyter instance is accessible via a public URL with SSL, you can share the URL along with the access token. For more granular access control, consider running JupyterHub instead, which supports multiple users with individual logins.