Skip to content
Open
Changes from 11 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
b02d79c
Ajout de ma feature en draft
Feb 2, 2026
253cb5f
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
9a59a0a
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
be5d2af
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
151cfa0
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
360e674
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
e8cb9dd
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
26524e7
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
5c6b636
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
6ae04ff
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 9, 2026
46ea783
docs(jupyter): move persistence into note
Feb 10, 2026
e6cca38
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
10343b2
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
145c730
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
5f2a9fc
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
180870b
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
8b8a0fc
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
37b1e84
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
395b0c7
Update src/_posts/platform/getting-started/2000-01-01-getting-started…
Amyti Feb 16, 2026
df76791
add terraform section
Feb 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
---
title: Getting Started with Jupyter Notebook on Scalingo
modified_at: 2026-02-10 12:00:00
tags: tutorial jupyter notebook
index: 14
---

Jupyter Notebook is an open-source web application that allows to create
and share documents called *notebooks* that combine live code, equations,
visualizations, and narrative text. Users can run code step by step, inspect
outputs instantly, and modify their work dynamically. This makes it ideal for
learning, data analysis, or scientific computing.

## Planning your Deployment

By default, Jupyter Notebook stores notebooks on the local filesystem. Since Scalingo's filesystem is ephemeral, you'll have to provision a
[Scalingo for PostgreSQL®][db-postgresql] addon to persist your notebooks. We usually advise to start with a Scalingo for PostgreSQL® Starter 512 addon, and
upgrade to a more powerful plan later if need be.

{% note %}
By default, notebooks are stored in a PostgreSQL® database to ensure persistence
across container restarts and redeployments. This is achieved using
[pgcontents][pgcontents], a Postgres-backed storage system for Jupyter.

This means:
- Notebooks survive application restarts.
- Notebooks benefit from Scalingo's automated database backups.
- No data loss due to Scalingo's ephemeral filesystem.
{% endnote %}

Depending on several factors such as the size of your datasets, the complexity
of your computations, and the number of notebooks you run at the same time,
Jupyter Notebook can consume a lot of RAM.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Depending on several factors such as the size of your datasets, the complexity
of your computations, and the number of notebooks you run at the same time,
Jupyter Notebook can consume a lot of RAM.
- Depending on several factors such as the size of your datasets, the complexity
of your computations, and the number of notebooks you run at the same time,
Jupyter Notebook can consume a lot of RAM.


## Deploying

### Using the Command Line

We maintain a repository called [jupyter-scalingo][jupyter-scalingo]
on GitHub to help you deploy Jupyter Notebook on Scalingo. Here are the few
additional steps you will need to follow:

1. Clone our repository:
```bash
git clone https://github.com/Scalingo/jupyter-scalingo
cd jupyter-notebook-persistence
```

2. Create the application on Scalingo:

```bash
scalingo create my-jupyter
```

Notice that our Command Line automatically detects the git repository, and
adds a git remote to Scalingo:

```bash
git remote -v

origin https://github.com/Scalingo/jupyter-scalingo (fetch)
origin https://github.com/Scalingo/jupyter-scalingo (push)
scalingo git@ssh.osc-fr1.scalingo.com:my-jupyter.git (fetch)
scalingo git@ssh.osc-fr1.scalingo.com:my-jupyter.git (push)
```

3. Provision a Scalingo for PostgreSQL® Starter 512 addon:

```bash
scalingo --app my-jupyter addons-add postgresql postgresql-starter-512
```

4. (optional) Instruct the platform to run the `web` process type in a single
L container:

```bash
scalingo --app my-jupyter scale web:1:L
```

5. Set a **mandatory** environment variables:

Set the password to access Jupyter Notebook:
Comment on lines +75 to +77
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
5. Set a **mandatory** environment variables:
Set the password to access Jupyter Notebook:
5. Set the password to access Jupyter Notebook:


```bash
scalingo --app my-jupyter env-set JUPYTER_NOTEBOOK_PASSWORD=<YOUR_SECURE_PASSWORD>
```

6. Everything's ready, deploy to Scalingo:

```bash
git push scalingo main
```

## Updating

Jupyter Notebook is a Python application, distributed via its own package
called `jupyter`. Updating to a newer version mainly consists in updating your
requirements in the `requirements.txt` file of your Jupyter repository.

1. In your Jupyter repository, update the `requirements.txt` file with the
desired version:

```
jupyter==<NEW_VERSION>
```

2. Commit the update:

```bash
git add requirements.txt
git commit -m "Upgrade to Jupyter <NEW_VERSION>"
```

### Using the Command Line

* Make sure you've successfully followed the first steps
* Push the changes to Scalingo:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

```bash
git push scalingo main
```

## Customizing

### Environment

Jupyter Notebook supports several environment variables to customize its
behavior.

Moreover, the deployment makes use of the following environment variable(s).
They can be leveraged to customize your deployment:

* **`SCALINGO_UID`**
This variable sets the UID for your Scalingo PostgreSQL® account.

* **`JUPYTER_NOTEBOOK_PASSWORD`**
Sets the password to access the Jupyter Notebook interface.
Jupyter Notebook will start if this variable is not set; you will then have to
enter your token.

* **`JUPYTER_TOKEN`** (mandatory)
Sets the token to access the Jupyter Notebook interface.
Jupyter Notebook will not start if this variable is not set.

### Installing Additional Python Packages

To install additional Python packages, add them to the `requirements.txt` file
at the root of your repository:

```
jupyter
numpy
pandas
matplotlib
scikit-learn
```

Then, commit and push your changes to trigger a new deployment.

### Using an Object Storage

If you want to store large files or share notebooks across multiple projects, it
is **possible** to use an external S3-compatible object storage, such as
Outscale Object Storage.

{% note %}
By default, JupyterLab uses **pgcontents** with PostgreSQL® to persist notebooks.
Using S3 storage is **entirely optional**. PostgreSQL® is sufficient for most use
cases on Scalingo.
{% endnote %}

For reference and further details about using S3 storage with JupyterLab, you
can check out the [S3ContentsManager documentation][jupyter-s3].

[jupyter-scalingo]: https://github.com/Scalingo/jupyter-scalingo
[pgcontents]: https://github.com/quantopian/pgcontents
[jupyter-s3]: https://github.com/cloudbutton/s3contents
[db-postgresql]: https://doc.scalingo.com/databases/postgresql/getting-started/provisioning