datalens is a free, open source business intelligence & reporting project written in PLpgSQL and released under Apache-2.0. It has 1,702 GitHub stars, 117 forks and 53 open issues, and was last pushed 24 days ago. On this registry it ranks #22 of 34 tracked projects in Business Intelligence & Reporting, with 5 head-to-head comparisons available.

What is datalens?

What it is

DataLens is an Apache-2.0 open-source business intelligence and data visualization system. It lives in the data and analytics ecosystem, specifically within business intelligence and reporting, and it covers dashboards, SQL, reporting, and visualization. The project was developed and extensively used as a primary business intelligence tool in Yandex, and it is also available as part of the Yandex Cloud platform.

The problem it addresses is the need for an analytics system that presents data through dashboards and reports while remaining deployable under an open license. It gives teams a Docker-based startup path, a browser UI, and separate versioned components such as datalens-ui, datalens-backend, datalens-auth, datalens-us, and datalens-meta-manager, so the system can be run locally and moved toward production.

Key capabilities

  • Its topic list identifies analytics, business intelligence, dashboards, reporting, SQL, and visualization as core areas.
  • The quick start launches containers and serves the UI at http://localhost:8080 with default user and password admin and admin.
  • The UI_PORT environment variable lets operators run the interface on another port, such as 8081.
  • The ./init.sh --hc command generates random secrets, stores them in .env, and prepares a production compose template.
  • The repository tracks separate versions for datalens-ui, datalens-us, datalens-backend, datalens-auth, and datalens-meta-manager.
  • Highcharts can be enabled with HC=1, but the README notes it is proprietary and requires license compliance.

Who uses it and how

  • Yandex teams use it as a primary business intelligence tool, and Yandex Cloud users can access it as part of that platform.
  • Evaluators clone the repository, install Docker, and run HC=1 docker compose up to start a local instance.
  • Operators change the local UI port by setting UI_PORT before running docker compose up.
  • Production users run ./init.sh --hc and then start ./docker-compose.production.yaml with docker compose.
  • Teams must decide whether to enable Highcharts, because that option adds licensing obligations.

Getting started

Install Docker, clone https://github.com/datalens-tech/datalens, and run HC=1 docker compose up to open the UI at http://localhost:8080 with default admin and password admin. For production, run ./init.sh --hc to generate random secrets and then start ./docker-compose.production.yaml with docker compose.

When to use it — and when not to

Use DataLens when you want an Apache-2.0 business intelligence system that can be evaluated locally through Docker Compose and moved toward production with generated secrets. Avoid it when you do not want to operate containers, secrets, ports, and optional Highcharts licensing yourself, because the README describes those as part of the self-hosted path. The quick start uses default admin and password admin, the production script generates a random admin password, and the repository lists 53 open issues.

project readme (upstream, from github) — read inline

DataLens · Release last commit

datalens-ui datalens-us datalens-backend datalens-auth datalens-meta-manager

DataLens is a modern business intelligence and data visualization system. It was developed and extensively used as a primary BI tool in Yandex and is also available as a part of Yandex Cloud platform. See also our roadmap, releases notes and community in telegram.

Getting started

Installing Docker

DataLens requires Docker to be installed. Follow these instructions depending on the platform you use:

Note about Docker Compose:

  • The new Docker Compose plugin is available as the docker-compose-v2 package on Ubuntu 20.04/22.04/24.04 from the base APT repository.

  • The minimal supported version of the legacy docker-compose utility (as a separate package) is 1.29.0. It is included in the base APT repository as the docker-compose package only on Ubuntu 22.04.

Running containers

Clone repository:

git clone https://github.com/datalens-tech/datalens && cd datalens

For the quick start use the following command to start DataLens containers:

HC=1 docker compose up

This command will launch all containers required to run DataLens, and the UI will be available on http://localhost:8080 (default user and password is admin, admin).

Using different port for UI If you want to use a different port (e.g. `8081`), you can set it using the `UI_PORT` env variable:
UI_PORT=8081 docker compose up

However, for production usage we recommend generating a compose file with random secrets:

# generate random secrets with openssl, store it to .env file and prepare production compose template
./init.sh --hc

# and then run production compose
docker compose -f ./docker-compose.production.yaml up -d

# you can also generate and run production compose file with one command
./init.sh --hc --up

Randomly generated admin password will be stored in the .env file and printed to terminal.

Note: You can find all script arguments by running the ./init.sh --help command

Notice on Highcharts usage
  Highcharts is a proprietary commercial product. If you enable Highcharts in your DataLens instance (with `HC=1` variable), you should comply with Highcharts license (https://github.com/highcharts/highcharts/blob/master/license.txt).

  When Highcharts is disabled in DataLens, we use D3.js instead. However, currently only a few visualization types are compatible with D3.js. We are actively working on adding D3 support to additional visualizations and are going to completely replace Highcharts with D3 in DataLens.
How to enable Yandex Maps

Available since release v1.11.0

Use the following container parameters for launch:

Parameter Description Values
YANDEX_MAP_ENABLED Enable usage of Yandex Maps visualization 1 or true
YANDEX_MAP_TOKEN Yandex Maps API key ``
YANDEX_MAP_ENABLED=1 YANDEX_MAP_TOKEN=XXXXXXXXX docker compose up

# or if you use init.sh script
./init.sh --yandex-map --yandex-map-token XXXXXXXXX --up

How to update

To update DataLens to the latest version, simply pull git repository and restart the containers:

git pull

# if you use base compose file
docker compose up

# if you use init.sh script
./init.sh --up

All your user settings, connections, and created objects will be preserved as they are stored in the db-postgres docker volume. The update process does not affect your data.

Deploy with Helm chart in k8s cluster

For deployment in a Kubernetes cluster, you can use Helm chart from an OCI-compatible package registry

First install Helm release:

# generating rsa keys for auth service and temporal
AUTH_TOKEN_PRIVATE_KEY=$(openssl genpkey -algorithm RSA -pkeyopt "rsa_keygen_bits:4096" 2>/dev/null)
AUTH_TOKEN_PUBLIC_KEY=$(echo "${AUTH_TOKEN_PRIVATE_KEY}" | openssl rsa -pubout 2>/dev/null)
TEMPORAL_AUTH_PRIVATE_KEY=$(openssl genpkey -algorithm RSA -pkeyopt "rsa_keygen_bits:4096" 2>/dev/null)
TEMPORAL_AUTH_PUBLIC_KEY=$(echo "${TEMPORAL_AUTH_PRIVATE_KEY}" | openssl rsa -pubout 2>/dev/null)
BI_DYNAMIC_US_AUTH_PRIVATE_KEY=$(openssl genpkey -algorithm RSA -pkeyopt "rsa_keygen_bits:4096" 2>/dev/null)
BI_DYNAMIC_US_AUTH_PUBLIC_KEY=$(echo "${BI_DYNAMIC_US_AUTH_PRIVATE_KEY}" | openssl rsa -pubout 2>/dev/null)
UI_DYNAMIC_US_AUTH_PRIVATE_KEY=$(openssl genpkey -algorithm RSA -pkeyopt "rsa_keygen_bits:4096" 2>/dev/null)
UI_DYNAMIC_US_AUTH_PUBLIC_KEY=$(echo "${UI_DYNAMIC_US_AUTH_PRIVATE_KEY}" | openssl rsa -pubout 2>/dev/null)

helm upgrade --install datalens oci://ghcr.io/datalens-tech/helm/datalens \
--namespace datalens --create-namespace \
--set "secrets.AUTH_TOKEN_PRIVATE_KEY=${AUTH_TOKEN_PRIVATE_KEY}" \
--set "secrets.AUTH_TOKEN_PUBLIC_KEY=${AUTH_TOKEN_PUBLIC_KEY}" \
--set "secrets.TEMPORAL_AUTH_PRIVATE_KEY=${TEMPORAL_AUTH_PRIVATE_KEY}" \
--set "secrets.TEMPORAL_AUTH_PUBLIC_KEY=${TEMPORAL_AUTH_PUBLIC_KEY}" \
--set "secrets.BI_DYNAMIC_US_AUTH_PRIVATE_KEY=${BI_DYNAMIC_US_AUTH_PRIVATE_KEY}" \
--set "secrets.BI_DYNAMIC_US_AUTH_PUBLIC_KEY=${BI_DYNAMIC_US_AUTH_PUBLIC_KEY}" \
--set "secrets.UI_DYNAMIC_US_AUTH_PRIVATE_KEY=${UI_DYNAMIC_US_AUTH_PRIVATE_KEY}" \
--set "secrets.UI_DYNAMIC_US_AUTH_PUBLIC_KEY=${UI_DYNAMIC_US_AUTH_PUBLIC_KEY}"

Note: Helm template engine does not provide built-in functions for creating private and public RSA keys.

Update Helm release:

helm upgrade datalens oci://ghcr.io/datalens-tech/helm/datalens --namespace datalens

Admin login and password will be stored in datalens-secrets Kubernetes secret resource

Parts of the project

DataLens consists of three main parts:

  • UI is a SPA application with corresponding Node.js part. It provides user interface, proxies requests from users to backend services, and also applies some light data postprocessing for charts.
  • Backend is a set of Python applications and libraries. It is responsible for connecting to data sources, generating queries for them, and post-processing the data (including formula calculations). The result of this work is an abstract dataset that can be used in UI for charts data request.
  • UnitedStorage (US) is a Node.js service that uses PostgreSQL to store metadata and configuration of all DataLens objects.
  • Auth is a Node.js service that provides authentication/authorization layer for DataLens.
  • MetaManager is a Node.js servic

readme truncated — read the full docs on github

Frequently asked questions

Is datalens free to use?

datalens is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does datalens do?

A modern, scalable analytics system

What is datalens written in?

datalens is primarily written in PLpgSQL. Its source is publicly available at https://github.com/datalens-tech/datalens, and it has 1,702 GitHub stars.