---
title: "Deploy Jupyter Notebook"
description: "Deploy Jupyter Lab | Jupyter Notebook on Railway"
category: "AI/ML"
url: https://railway.com/deploy/jupyter-notebook
---

# Deploy Jupyter Notebook

Deploy Jupyter Lab | Jupyter Notebook on Railway

**[Deploy Jupyter Notebook on Railway](https://railway.com/template/jupyter-notebook)**

- **Category:** AI/ML
- **Total deploys:** 5

## Template content

### Jupyter Notebook

- **Image:** fuglelucas/juplabtest:latest
- **Start command:** `jupyter-lab --ip=0.0.0.0 --port=8889 --allow-root --notebook-dir=/data --no-browser`
- **Public domain:** Yes

## Documentation

# Deploy and Host Jupyter Notebook on Railway

Jupyter Notebook is an interactive web-based environment for writing and running code, analyzing data, creating visualizations, and documenting workflows. It is widely used by data scientists, researchers, students, and developers for machine learning, data analysis, experimentation, and educational projects through an intuitive browser interface.

## About Hosting Jupyter Notebook

Railway makes it easy to deploy a persistent Jupyter Notebook server without managing infrastructure. This template runs JupyterLab inside a Docker container and exposes it through a secure HTTPS endpoint. Notebook files are stored on a Railway Volume mounted at `/data`, ensuring your work persists across deployments and restarts. The service listens on port **8889** and is accessible through a generated Railway domain. Railway automatically manages networking, SSL certificates, and infrastructure, allowing you to focus on your notebooks while providing the ability to scale your deployment as your workloads grow.

## Common Use Cases

* Data science and machine learning development
* Research, experimentation, and educational notebooks
* Interactive Python development and data visualization

## Dependencies for Jupyter Notebook Hosting

| Dependency     | Required | Purpose                                   |
| -------------- | -------- | ----------------------------------------- |
| Railway Volume | Yes      | Stores notebooks and persistent user data |

### Deployment Dependencies

| Resource              | Link                                                                                             |
| --------------------- | ------------------------------------------------------------------------------------------------ |
| Jupyter Documentation | [https://jupyter.org/documentation](https://jupyter.org/documentation)                           |
| Jupyter Docker Stack  | [https://hub.docker.com/r/fuglelucas/juplabtest](https://hub.docker.com/r/fuglelucas/juplabtest) |

### Implementation Details

#### Docker

This template deploys the following Docker image:

```text
fuglelucas/juplabtest:latest
```

#### Public Networking

| Setting     | Value      |
| ----------- | ---------- |
| Proxy Type  | HTTP Proxy |
| Target Port | 8889       |

#### Start Command

Use the following Railway start command:

```bash
jupyter-lab \
  --ip=0.0.0.0 \
  --port=8889 \
  --allow-root \
  --notebook-dir=/data \
  --no-browser
```

#### Environment Variables

No additional environment variables are required.

#### Persistent Storage

A Railway Volume is **required**.

1. Open your Railway service.
2. Go to **Settings → Volumes**.
3. Add a new Volume.
4. Mount it at:

```text
/data
```

This directory stores all notebooks and user files so they remain available after redeployments.

#### Build &amp; Start

No custom build command is required because the template uses a prebuilt Docker image.

#### Accessing the Application

After deployment:

1. Open **Settings → Networking**.
2. Generate a Railway Domain.
3. Visit your generated URL in a browser.

When Jupyter starts, it requires a **login token**.
![Dashboard](https://raw.githubusercontent.com/arloodots/images-icons/refs/heads/main/Jupter%20dashboard.png)

**How to get the token**

After the deployment finishes:

1. Open your Railway service.
2. Select **Deploy Logs**.
3. Look for a line similar to:

![tokken](https://raw.githubusercontent.com/arloodots/images-icons/refs/heads/main/Jupter%20tokken.png)

```text
http://:8889/lab?token=f44c353e3a25a61fdf9a8c2411097efea85468137320d265
```

Copy only the value after `token=`:

```text
f44c353e3a25a61fdf9a8c2411097efea85468137320d265
```

Then:

1. Open your Railway Jupyter URL.
2. Paste the copied token into the **Password or token** field.
3. Click **Log in**.

You can also set a permanent password on the same page by entering the token and a new password, so future logins won't require the token.

**Token location example**

The deployment logs show the full login URL containing the token, while the browser login page asks you to paste that token into the login field. The highlighted `token=...` value in your deployment logs is exactly what you should copy and use.

## Why Deploy Jupyter Notebook on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Jupyter Notebook on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/jupyter-notebook
