JupyterLab and JupyterHub on your own server
Give yourself a JupyterLab that is always on, or give a whole team or class their own notebook servers with JupyterHub. Install the Python, R or Julia packages you need, keep large datasets next to the compute, and move to a GPU server for training, preinstalled as an app option or set up with our guide.
- JupyterLab for one person, JupyterHub for a team
- Your own Python, R or Julia packages and kernels
- Datasets stay on a server you control
- GPU servers for training: ask about availability
- Stack
- Python; JupyterLab 4.6, JupyterHub 6
- Default portsJupyterLab listens on localhost by default and protects access with a token; JupyterHub must sit behind HTTPS on a public network.
- 8888 (JupyterLab), 8000 (JupyterHub)
- MinimumThe Littlest JupyterHub needs at least 1 GB of RAM to install; plan memory per active user on top.
- Depends on users and data
- Your data
- Notebooks and datasets on disk
- Official docs
- jupyter.org · jupyterhub.readthedocs.io
Works with
- JupyterLab
- JupyterHub
- The Littlest JupyterHub
- Jupyter AI
- Python
- R
- Julia
- Conda
Facts from the project’s official website, documentation and repository, checked in October 2026.
Plans are being prepared
We are preparing ready-to-use plans for Jupyter. Tell us how you will use it and how many users you expect, and we will reply with a server that fits. You can also start today on a Linux VPS and install it with our guide.
Which server size fits?
Starting points for vCPU, memory and disk. Grow the server when your data and users grow.
| Feature |
Personal lab
JupyterLab for one person
|
Recommended Small team
JupyterHub for up to a few active users
|
Class or ML work
Many users, or model training
|
|---|---|---|---|
| vCPUVirtual processor cores of the server. | 2 | 4 | 8+ |
| MemoryPlan the memory each active user needs, plus the hub itself. | 4 GB | 8–16 GB | 32 GB+ |
| DiskHome folders, environments and datasets. | 40 GB | 100 GB | 200 GB+ |
| Accelerator | CPU | CPU | CPU or GPU server |
| Server type | Linux VPS | VPS or VDS | VDS, dedicated or GPU |
-
Personal lab
JupyterLab for one person
- vCPUVirtual processor cores of the server.
- 2
- MemoryPlan the memory each active user needs, plus the hub itself.
- 4 GB
- DiskHome folders, environments and datasets.
- 40 GB
- Accelerator
- CPU
- Server type
- Linux VPS
-
Recommended
Small team
JupyterHub for up to a few active users
- vCPUVirtual processor cores of the server.
- 4
- MemoryPlan the memory each active user needs, plus the hub itself.
- 8–16 GB
- DiskHome folders, environments and datasets.
- 100 GB
- Accelerator
- CPU
- Server type
- VPS or VDS
-
Class or ML work
Many users, or model training
- vCPUVirtual processor cores of the server.
- 8+
- MemoryPlan the memory each active user needs, plus the hub itself.
- 32 GB+
- DiskHome folders, environments and datasets.
- 200 GB+
- Accelerator
- CPU or GPU server
- Server type
- VDS, dedicated or GPU
Jupyter publishes no fixed minimum. The Littlest JupyterHub guide sizes memory as concurrent users times memory per user plus 128 MB, and disk as users times disk per user plus 2 GB; the values above follow that rule with typical notebook workloads.
Notebooks that keep running
Long jobs keep going when you close the laptop.
A server per user with JupyterHub
Each user gets their own notebook server, signed in with system accounts, OAuth or LDAP, with roles and an admin panel.
Your environment
Install exactly the libraries, versions and kernels your work needs, with pip, conda or the official Jupyter Docker images.
AI in the notebook
The Jupyter AI extension brings chat and coding agents into JupyterLab, with your own model provider or a local model.
Your data stays yours
Prompts, files and databases stay on a server you control, in the location you choose, instead of a shared SaaS account.
Full root access
Install what the app needs, change any setting and run more services next to it. Nothing is locked behind a panel.
App option or step-by-step guide
Order the server with the app installed as an option, or set it up yourself on a clean Linux server with our guide.
Near your users
Choose a data center in the United States, Europe or Asia. The order form estimates the latency from where you are to each location.
Grow without starting over
Start on a VPS, then move to a bigger plan, a VDS with NVMe storage or a dedicated server when the workload grows.
From order to first login
Order the app preinstalled on your server, or install it yourself with our guide.
-
Pick the server
Choose a size from the table above and the data center closest to the people who will use the app.
-
Add JupyterLab or JupyterHub
Select JupyterLab or JupyterHub as an app option when you order, or install it on a clean Ubuntu or Debian server with our guide.
-
Point a domain and enable HTTPS
Create a DNS record such as app.example.com for the server and put a reverse proxy with a free Let’s Encrypt certificate in front of the app.
-
Sign in and add users
Sign in with your token or password, or as the JupyterHub admin, and add your users and their resource limits.
Step-by-step setup guides
Install, secure and update the app with our guides, written for current Ubuntu and Debian releases.
-
How to install JupyterLab on a Linux server with systemd and HTTPS
Set up single-user JupyterLab for a dedicated Linux user: virtual environment, hashed password, a systemd service bound to 127.0.0.1, SSH tunnel or Caddy access, GPU support, backups and updates.
30 min Intermediate
Related solutions
Frequently asked questions
JupyterLab or JupyterHub: which do I need?
JupyterLab is the notebook interface for one person. JupyterHub runs a separate JupyterLab server for each user and handles sign-in, so choose it for a team, a lab or a class. The Littlest JupyterHub is the simplest way to run it for a small group on one server.
How much memory do I need for a team?
The Littlest JupyterHub guide estimates memory as the number of users working at the same time times the memory each one needs, plus 128 MB, and disk as all users times their disk plus 2 GB. Data science notebooks often need 1–4 GB per active user; large datasets need more.
Is my notebook server protected?
JupyterLab protects access with a token or a password and listens on localhost by default; access to it means running any code on the server, so never remove the token. Put JupyterHub behind HTTPS: its documentation says not to run it without SSL on a public network.
Can I use a GPU in my notebooks?
Yes, on a GPU server: install the NVIDIA driver and the CUDA versions your libraries need, or use GPU-enabled container images. GPU servers are being added to our range step by step; ask us about availability and tell us the frameworks and data sizes you work with.
Can I use R or Julia?
Yes. Install the language and its Jupyter kernel, for example IRkernel for R or IJulia for Julia, and it appears in the launcher next to Python.
How do users sign in to JupyterHub?
By default with their system accounts on the server. Authenticators add sign-in with GitHub, Google and other OAuth providers or LDAP, and roles control who can administer the hub.
Will my jobs keep running when I close the browser?
Yes. The kernels run on the server, not in your browser, so long computations keep going and you can reconnect later. Save results to files, because output that arrives while no browser is open is not shown in the notebook.
Give your notebooks a home
Tell us the app, how many people will use it and where they are, and we will suggest a server for it.