# Install Datalore On-Premises in Docker containers using Docker Compose

This page guides you through installing and configuring Datalore On-Premises in a Docker container with Docker Compose.

This is the recommended way to install Datalore unless you specifically need to use Kubernetes.

The installation process consists of two parts:

* [Basic installation](#basic-installation) to get Datalore On-Premises up and running.

* [Configuration steps](#next-steps) to customize the installation.

> **Warning:**
> Datalore On-Premises only supports 64-bit Linux as a host system.
>
>
>
> ARM-based platforms, macOS, and Windows are not supported.

Prerequisites
: Before you start, make sure that you have the following:
:
:
:
: * Docker
:
: * Docker Compose v2.32 or greater
:
:
:
: > **Tip:**
: > To check the Docker Compose version, run the following command:
: >
: >
: >
: >
: > ```BASH
: > docker compose version
: > ```
:
:
:
: > **Note:**
: > If you are using a reverse proxy, we recommend that you [enable gzip compression](https://nginx.org/en/docs/http/ngx_http_gzip_module.html).

Hardware requirements
: Datalore On-Premises requires resources for running both the server, database, and computations. When selecting the amount of resources, consider your expected computational workload and the number of agents working concurrently.
:
:
:
: * Datalore server machine: 4GB of RAM (the number of CPU is irrelevant if the load is not high)
:
: * For every concurrently run notebook: from 4GB of RAM

Fargate restrictions
: AWS Fargate is a serverless compute engine for containers.
:
:
:
: Datalore On-Premises can run in Fargate, but attached files and [Reactive mode](https://www.jetbrains.com.cn/en-us/help/datalore/use-reactive-mode.html) will not work due to Fargate’s security policies.

## Basic Datalore installation

> **Warning:**
> When customizing the deployment, do not change the user for the `datalore-server` container, or your deployment may not work correctly.

Procedure: Step 1. Get the docker-compose file

1. Download and open the `docker-compose.yaml` file from the [datalore-configs repository](https://github.com/JetBrains/datalore-configs/tree/2026.3/docker-compose) on GitHub.

2. Replace the values of `DB_PASSWORD` and `POSTGRES_PASSWORD` properties with the same string value. This string will serve as your database password, so keep it secret.

Procedure: Step 2. (Optional) Configure a custom domain

1. By default, Datalore is only accessible at `127.0.0.1`. To use a custom domain, add the desired URL without a trailing slash as the `DATALORE_PUBLIC_URL` parameter in the `docker-compose.yaml` file.

For example, if you want to use `https://datalore.yourcompany.com`, add the following block:

```YAML
services:
  datalore:
    ...
    environment:
      ...
      # Make sure the URL doesn't have a trailing slash
      DATALORE_PUBLIC_URL: "https://datalore.yourcompany.com"
```

> **Note:**
> To use SSL encryption (HTTPS), a third-party load balancer or a reverse-proxy is required. For more details, see [Configure TLS certificates for Datalore](datalore-on-premises-security-considerations.html#configure-tls-certificates-for-datalore).

2. If you have not already, configure DNS for this domain.

Procedure: Step 3. (Optional) Use an external postgres database

Datalore requires a PostgreSQL database (version 15 or higher). By default, a single-instance PostgreSQL database is included in Datalore’s Docker Compose configuration file.

To use an external database:

1. In the `docker-compose.yaml` file, add the following variables under `environment`:

```YAML
environment:
  ...
  DB_USER: "<database_user>"
  DB_URL: "jdbc:postgresql://[database_host]:[database_port]/[database_name]"
```

> **Tip:**
> Make sure the `DB_PASSWORD` parameter contains the password for the specified database.

2. Remove the `postgresql` block:

```YAML
postgresql:
  image: jetbrains/datalore-postgres:2024.4
  expose: [ "5432" ]
  networks:
    - datalore-backend-network
  volumes:
    - "postgresql-data:/var/lib/postgresql/data"
  environment:
    POSTGRES_PASSWORD: "changeme"
```

3. Remove the following line from the `volumes` section:

```YAML
postgresql-data: { }
```

Procedure: Step 4. (Optional) Enable an email allowlist

You can enable an allowlist for new user registration so that only users with email addresses included in the allowlist can register. To do that:

1. In the `docker-compose.yaml` file, add the following parameter:

```YAML
environment:
  EMAIL_ALLOWLIST_ENABLED: "true"
```

The `Email allowlist` tab will be available in the [Admin panel](manage-email-allowlist.html).

Procedure: Step 5. (Optional, Hub-only) Enable user filtration based on Hub group membership

By default, all Hub users can register in Datalore unless you disable registration in the [Admin panel](manage-users.html).

To grant Datalore access only to members of a specific Hub group:

1. In the `docker-compose.yaml` file, add the following parameter:

```YAML
environment:
  HUB_ALLOWLIST_GROUP: 'group_name'
```

Procedure: Step 6. (Optional) Configure notebook code import limit

You can configure the limit of notebook code import by setting your own value in bytes. To do that:

1. In the `docker-compose.yaml` file, add the following parameter:

```YAML
environment:
  VFS_MAX_IMPORT_SOURCE_LENGTH: '<length_in_bytes>'
```

> **Tip:**
> Suffixes, such as `K` or `M`, are not supported.

Procedure: Step 7. Start Datalore

1. Run the following command and wait for Datalore to start up:

```BASH
docker compose up
```

2. Go to `http://127.0.0.1:8080/` or the custom URL you configured in Step 2 and register the first user. This user will automatically receive the Super Admin role.

> **Tip:**
> Datalore On-Premises will not send a registration confirmation because the email service is not configured at this point. You can log in right after you register.

3. Add your license. To do that, click your avatar at the top right, select Admin panel | License and enter your license key.

![Opening Admin panel](https://resources.jetbrains.com.cn/help/img/datalore/2026.3/admin-panel.png)

## Next steps

Procedure: Required configuration steps

1. [Configure agents](configure-docker-agents.html): Customize how your agents work to manage your computational resources.

2. [Enable GPU machines](enable-gpu-machines.html): Enable GPU machines in your installation.

3. [Manage users](manage-users.html): Create and manage users and viewers.

4. [Configure plans](configure-plans.html): Customize resource usage among your Datalore users.

Procedure: Optional configuration steps

* [Set up JetBrains Hub](use-hub-for-docker-installation.html): Integrate an authentication service.

* [Customize or update environment](customize-or-update-environment.html): Build custom images tailored for your needs.

* [Enable gift codes](enable-gift-codes.html): Activate the service for generating and processing gift codes.

* [Enable the email service](enable-email-service.html): Activate email notifications.

* [Enable audit logging](enable-user-activity-logging-docker-installation.html): Turn on extended activity logging for Datalore users.

> **Tip:**
> For the full list of Datalore server configuration options, see [Configure Datalore server](server-configuration.html).

## Keywords

Datalore installation, Datalore deployment, install Datalore, installation procedures, installation requirements, Docker deployment

