Установка Apache Superset
Как установить Apache Superset на Ubuntu и Windows: от подготовки окружения и запуска контейнеров до подключения базы данных.
Apache Superset — это платформа бизнес-аналитики (BI), созданная для визуализации и анализа данных. Она позволяет быстро подключаться к различным источникам данных, строить интерактивные графики, таблицы и дашборды, а также делиться результатами анализа с другими пользователями. Superset поддерживает подключение к десяткам источников — от PostgreSQL и ClickHouse до MySQL и Google BigQuery.
В отличие от тяжелых коммерческих BI-систем, Superset — это открытое и расширяемое решение, которое можно бесплатно установить и использовать как в небольших командах, так и в масштабных корпоративных инфраструктурах. Систему можно установить на Linux, macOS или Windows. Чаще всего используется развертывание в контейнерах через Docker — это упрощает установку, настройку и обновление компонентов.
Установка на Linux (Ubuntu)
Требования к серверу Apache Superset
Прежде чем приступать к установке Superset, убедимся, что сервер соответствует базовым требованиям. Но важно понимать, что характеристики системы для установки Superset зависят не от объема данных, а от количества пользователей и их активности.
Исходя из личного опыта, конфигурации с 8 ГБ оперативной памяти и двумя виртуальными CPU достаточно для работы инстанса среднего размера. Если вы занимаетесь разработкой Superset может потребоваться более мощное оборудование.
Отслеживайте распределение ресурсов, потому что нагрузка на Superset может подскочить — например, когда несколько пользователей одновременно открывают один и тот же дашборд во время совещания.
Также важно учитывать доступное пространство на диске: Docker-образы, логи и метаданные Superset со временем могут занимать существенный объем.
Docker Compose
Использование Docker и Docker Composе упрощает установку и управление Apache Superset. Docker создает согласованную среду выполнения через контейнеризацию, а Docker Compose может настроить и запустить сразу несколько контейнеров, включая базу данных и веб-сервер.
В этом разделе мы рассмотрим, как установить Apache Superset с помощью Docker и Docker Compose.
Шаг 1. Установка Docker и Docker Compose
Откройте терминал (командную строку) в системе и введите данный код:
sudo apt update
sudo apt install -y docker.io
Docker Compose позволяет управлять приложениями, состоящими из множества контейнеров. Установить его можно по инструкции в официальной документации.
Шаг 2. Клонирование репозитория Apache Superset
Apache Superset предоставляет официальное Docker Compose окружение. Установите Git и клонируйте репозиторий Superset:
apt install git
git clone https://github.com/apache/superset
cd superset
Шаг 3. Конфигурация Docker Compose
В репозитории Apache Superset уже есть файл docker-compose, который включает все необходимые сервисы для работы приложения. При этом существует четыре основных способа запуска Superset с помощью Docker Compose.
docker-compose.yml — используется для интерактивной разработки. В этом режиме локальная директория с файлами фронтенда и бэкенда монтируется в контейнер, что позволяет вносить изменения в код и сразу видеть результат в приложении.
docker-compose-light.yml — облегченная конфигурация с минимальным набором сервисов (база данных, приложение Superset и сервер фронтенд-разработки).
Здесь используется кэширование в памяти вместо Redis. Такой вариант подходит для случаев, когда требуется одновременно запускать несколько экземпляров Superset.
docker-compose-non-dev.yml — вариант, при котором создается устойчивая (immutable) сборка на основе текущей локальной ветки.
При запуске применяются все изменения, которые были в коде на момент сборки, но последующие изменения в исходниках не отразятся в уже работающем приложении.
docker-compose-image-tag.yml — используется для запуска готовых образов Superset из Docker Hub.
Шаг 4. Запуск контейнеров
В рамках статьи будем запускать контейнеры с помощью файла docker-compose-non-dev.yml:
docker compose -f docker-compose-non-dev.yml up -d
Эта команда скачает все необходимые образы Docker (если они еще не скачаны) и запустит контейнеры.
В процессе запуска будут созданы сервисы:
- superset — сам веб-приложение Apache Superset;
- postgres — база данных PostgreSQL для хранения метаданных;
- redis — кеширование с помощью Redis.
Запуск может занять несколько минут в зависимости от скорости интернета и конфигурации системы.

Шаг 5. Инициализация базы данных
После того как контейнеры запустятся, необходимо выполнить миграции базы данных и создать администратора для Apache Superset. Для этого выполните следующие команды.Обновите схему базы данных, выполнив миграции:
docker-compose exec superset superset db upgrade
Создайте пользователя-администратора:
docker exec superset superset fab create-admin

Вас попросят ввести имя пользователя, email, пароль и другие данные для администратора.
Запустите веб-сервер Apache Superset:
docker-compose exec superset superset load_examples
docker-compose exec superset superset init
Шаг 6. Доступ к интерфейсу Superset
После завершения этих шагов, вы сможете зайти в интерфейс Apache Superset через браузер по адресу: http://localhost:8088.
Используйте логин и пароль администратора, который вы создали на Шаге 5, для входа в систему.


Установка с помощью Docker
Запуск Superset напрямую через docker run подойдет, если:
- вы хотите быстро протестировать Superset без настройки дополнительных сервисов;
- база данных уже запущена отдельно (например, PostgreSQL или MySQL);
- вы хотите встроить Superset в существующую инфраструктуру контейнеров (Kubernetes, Docker Swarm и т. д.);
- вам не нужно управлять несколькими связанными контейнерами одновременно.
Для запуска контейнера Superset из официального образа выполните команду:
docker run -d -p 8088:8088 --name superset apache/superset
После загрузки образа Superset будет доступен по адресу http://localhost:8088.
Если вы запускаете Superset впервые, необходимо создать базу данных и администратора внутри контейнера. Для этого выполните:
docker exec -it superset superset db upgrade
docker exec -it superset superset fab create-admin \
--username admin \
--firstname Admin \
--lastname User \
--email admin@superset.com \
--password admin
docker exec -it superset superset init
По умолчанию контейнер Superset использует SQLite, но для продакшна рекомендуется внешний движок (PostgreSQL или MySQL). Вы можете передать параметры подключения через переменные окружения при запуске:
docker run -d -p 8088:8088 -e SUPERSET_DATABASE_URI=postgresql+psycopg2://superset:superset@db:5432/superset --name superset apache/superset
Если Superset и база находятся на разных хостах — укажите соответствующий IP или DNS-имя.
Проверка работы AS
Установка и запуск Apache Superset — это полдела. Теперь важно убедиться, что все компоненты работают корректно. Пошагово рассмотрим, как проверить работу приложения и основных функций.
Шаг 1. Проверка наличия данных и подключений
После того как вы войдете в интерфейс, первым делом убедитесь, что приложение успешно подключилось к базе данных и что в нем есть хотя бы несколько примеров данных.
1. Проверка подключений к базе данных. На главной странице выберите меню Data и перейдите в раздел Databases. Здесь должны отображаться доступные подключения к базе данных. Если вы использовали настройки по умолчанию, должно быть подключение к PostgreSQL, которое используется для хранения метаданных Superset.

2. Проверка примеров данных. Если вы загрузили примеры данных с помощью команды superset load_examples, вы можете проверить их наличие. Перейдите в раздел Dashboards и выберите один из доступных дашбордов. Если примеры данных были успешно загружены, вы увидите различные наборы данных.

Шаг 2. Проверка создания и визуализации графиков
Теперь, когда данные загружены, вы можете проверить работу инструментов визуализации. Superset позволяет создавать и настраивать визуализации на основе данных.
- Перейдите в меню Charts.
- Нажмите + и далее Chart и выберите одну из баз данных или таблиц.
- Выберите тип визуализации (например, Line Chart, Bar Chart или Pie Chart), настройте параметры и создайте график.
- После создания графика, убедитесь, что он отображает данные корректно и в соответствии с настройками.


Шаг 3. Проверка производительности
Apache Superset рассчитан на работу с небольшим и средним объемом данных. Для более сложных операций важно проверить производительность:
- попробуйте загрузить большие наборы данных или создать сложные визуализации;
- используйте инструменты мониторинга Docker или системного администратора, чтобы проверить использование ресурсов (CPU, память, диск);
- если приложение работает медленно, рассмотрите оптимизацию Docker-контейнеров или увеличение выделенных ресурсов для контейнера с Superset.
Шаг 4. Проверка логов
Если вы столкнулись с ошибками или проблемами в процессе работы — проверяйте логи. В Docker для этого используйте следующую команду:
docker compose logs superset
Она выведет логи работы контейнера с Superset, которые помогут найти и устранить возможные проблемы.
Дополнительно можно проверить доступность Superset без браузера — через curl. Если сервис запущен корректно, endpoint /health вернет HTTP 200 и статус OK.
Установка Apache Superset на Windows
Вкратце рассмотрим требования для корректной работы Superset на Windows.
- Операционная система — Windows 10 или 11 версии.
- Docker Desktop с поддержкой WSL2 — Docker будет использовать подсистему Linux для запуска контейнеров.
- Включенный WSL2 (Windows Subsystem for Linux) — желательно с установленной Ubuntu.
Проверка наличия WSL2 и версии Ubuntu:
wsl --list --verbose
Установка WSL2 и Ubuntu
- Откройте PowerShell от имени администратора и выполните следующую команду:
wsl --install
2. После завершения установки перезагрузите компьютер.
3. Установите Ubuntu через Microsoft Store.
4. Запустите Ubuntu и настройте пользователя и пароль.
Теперь у вас есть полноценная Linux-среда внутри Windows, где можно запускать Superset и Docker-контейнеры.
Установка Docker и Docker Compose в WSL2
1. Установите Docker Desktop для Windows и убедитесь, что включена интеграция с WSL2. Подробнее о том, как это сделать, рассказали в отдельной инструкции.

2. В Ubuntu убедитесь, что Docker доступен:
docker --version
docker compose version

3. Настройте использование Docker внутри WSL2 через Docker Desktop.

Включение WSL 2-движка Docker и добавление *.docker.internal в /etc/hosts.

Настройка интеграции Docker Desktop с WSL-дистрибутивами.
Установка и запуск Apache Superset внутри WSL2
Внутри Ubuntu (WSL2) можно повторить стандартные шаги установки Superset, описанные в разделе «Установка с помощью Docker»:
1. Клонируйте репозиторий Superset или подготовьте docker-compose.yml.
git clone https://github.com/apache/superset
cd superset
2. Запустите контейнеры:
docker compose -f docker-compose-non-dev.yml up -d

3. Инициализируйте Superset:
docker compose exec superset superset init

4. После успешного запуска веб-интерфейс Superset будет доступен по адресу http://localhost:8088.
Подключение Apache Superset к СУБД
Теперь рассмотрим, как подключить Apache Superset к PostgreSQL на примере добавления источника данных. Почему именно PostgreSQL? Это одна из популярнейших СУБД, которая отлично «дружит» с большинством сервисов и платформ.
Установка и запуск PostgreSQL и pgAdmin в Docker
Для удобного управления базой данных можно использовать связку PostgreSQL и pgAdmin через Docker.
Создание docker-compose.yml
Пример файла docker-compose.yml для запуска PostgreSQL и pgAdmin:
version: "3.8"
services:
postgres:
image: postgres:15
container_name: superset_postgres
environment:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
POSTGRES_DB: superset_db
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
container_name: superset_pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin
ports:
- "8081:80"
depends_on:
- postgres
volumes:
pgdata:
Запуск контейнеров
docker compose up -d
Проверка работы:
- PostgreSQL — порт 5432;
- pgAdmin — веб-интерфейс доступен по адресу
http://localhost:8081.
В pgAdmin добавьте подключение к базе superset_db с логином superset и паролем superset.




Но самостоятельное развертывание СУБД — это не только первоначальная настройка, но и ручные обновления, постоянный мониторинг, бэкапы и обеспечение отказоустойчивости. Чтобы облегчить этот процесс, можно воспользоваться решением от Selectel с запуском в несколько кликов. Эксперты позаботятся о настройках, надежности, резервном копировании и поддержке вашей инфраструктуры.
Настройка подключения в Superset
Superset поддерживает множество БД — например, PostgreSQL, MySQL, SQLite, а также NoSQL-БД (Druid). Рассмотрим пошагово, как подключить вашу СУБД.
Настройте соединения с базой данных:
- Откройте веб-интерфейс Apache Superset и войдите в систему как администратор;
- Перейдите в раздел Data → Databases;
- Нажмите + и далее Database, чтобы добавить новое подключение.


Введите данные для подключения к вашей базе данных, например, для PostgreSQL:
- <username> — имя пользователя для подключения;
- <password> — пароль для этого пользователя;
- <host> — хост базы данных;
- <port> — порт, на котором работает база данных (по умолчанию 5432 для PostgreSQL);
- <database> — имя базы данных.

Управление правами доступа и ролями
В Superset встроена система разграничения прав, основанная на ролях. По умолчанию доступны три базовые роли. Разберем ключевые.
Admin — полный доступ к настройкам, источникам данных, пользователям и правам.
Alpha — доступ к созданию и редактированию дашбордов и чарта, но без прав на администрирование.
Gamma — роль для конечных пользователей, которые могут просматривать дашборды и отчеты, но не изменять их.
Public — роль применяется ко всем неавторизованным пользователям — то есть тем, кто заходит в Superset без авторизации.

При необходимости можно создавать собственные роли через интерфейс Security → List Roles, определяя комбинации разрешений (permissions), связанных с объектами Superset: чартов, дашбордов, SQL Lab, источников данных и т. д.

Настройка кэширования с Redis
Кэширование в Superset ускоряет рендеринг дашбордов и снижает нагрузку на БД. Для этого чаще всего используют Redis — легкое и быстрое in-memory хранилище.
При разворачивании Apache Superset с помощью стандартного docker-compose в настройках файла superset_config.py будут указаны параметры СУБД Redis, который развернут в контейнере на той же виртуальной машине.
При необходимости вы можете указать свои параметры для подключения к базе:
from cachelib.redis import RedisCache
REDIS_HOST = os.getenv("REDIS_HOST", "redis")
REDIS_PORT = os.getenv("REDIS_PORT", "6379")
REDIS_CELERY_DB = os.getenv("REDIS_CELERY_DB", "0")
REDIS_RESULTS_DB = os.getenv("REDIS_RESULTS_DB", "1")
CACHE_CONFIG = {
"CACHE_TYPE": "RedisCache",
"CACHE_DEFAULT_TIMEOUT": 300,
"CACHE_KEY_PREFIX": "superset_",
"CACHE_REDIS_HOST": REDIS_HOST,
"CACHE_REDIS_PORT": REDIS_PORT,
"CACHE_REDIS_DB": REDIS_RESULTS_DB,
}
Также можно настроить отдельный кэш для SQL-запросов:
DATA_CACHE_CONFIG = CACHE_CONFIG
После этого Superset начнет использовать Redis для хранения промежуточных результатов запросов и визуализаций.
Внешнее хранилище паролей для подключений к СУБД
Чтобы не хранить пароли к базам данных прямо в метаданных Superset, можно подключить внешний механизм их подстановки через параметр SQLALCHEMY_CUSTOM_PASSWORD_STORE.
Например, храним пароли в переменных окружения:
import os
def get_password(url):
env_var = f"DB_PASS_{url.username.upper()}"
return os.getenv(env_var)
SQLALCHEMY_CUSTOM_PASSWORD_STORE = get_password
Теперь при подключении к источнику данных Superset автоматически подставит пароль из переменной окружения, например DB_PASS_ANALYTICS.
Если вы используете Docker, можно передавать переменные окружения через docker-compose.yml:
services:
superset:
image: apache/superset:latest
environment:
- DB_PASS_ADMIN=my_secure_password
volumes:
- ./superset_config.py:/app/pythonpath_dev/superset_config.py
Настройка SSL-доступа к базам данных
Для безопасного подключения к БД необходимо указать параметры SSL в поле Extra при добавлении подключения в интерфейсе Data → Databases.
Пример:
{
"metadata_params": {},
"engine_params": {
"connect_args":{
"sslmode":"require",
"sslrootcert": "/path/to/my/pem"
}
}
}
Эта настройка позволяет обеспечить шифрование трафика между Superset и базой данных.
Пользовательская конфигурация OAuth2
Superset построен на Flask-AppBuilder и из коробки поддерживает множество провайдеров OAuth2, таких как GitHub, Google, LinkedIn.
Основные шаги для любого OAuth2 провайдера
1. Установите пакет Authlib в Superset:
pip install Authlib
2. В файле superset_config.py укажите тип аутентификации:
from flask_appbuilder.security.manager import AUTH_OAUTH
AUTH_TYPE = AUTH_OAUTH
3. Определите провайдеров OAuth2:
OAUTH_PROVIDERS = [
{
'name': 'mySSO', # Название провайдера
'token_key': 'access_token', # Ключ токена
'icon': 'fa-user', # Иконка
'remote_app': {
'client_id': 'YOUR_CLIENT_ID', # ID приложения
'client_secret': 'YOUR_CLIENT_SECRET', # Секрет приложения
'client_kwargs': {'scope': 'openid email profile'},
'access_token_method': 'POST',
'authorize_url': 'https://<provider>/authorize',
'access_token_url': 'https://<provider>/token',
'api_base_url': 'https://<provider>/userinfo'
}
}
]
4. Разрешите саморегистрацию пользователей:
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = "Public"
5. Создайте кастомный менеджер безопасности custom_sso_security_manager.py рядом с superset_config.py:
from superset.security import SupersetSecurityManager
class CustomSsoSecurityManager(SupersetSecurityManager):
def oauth_user_info(self, provider, response=None):
if provider == 'mySSO':
me = self.appbuilder.sm.oauth_remotes[provider].get('userinfo').data
return {
'id': me['sub'],
'name': me.get('name'),
'email': me.get('email'),
'username': me.get('email'),
'first_name': me.get('given_name', ''),
'last_name': me.get('family_name', '')
}
6. Подключите менеджер в superset_config.py:
from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager
7. Redirect URL для OAuth2 обычно выглядит так:
https://<your-superset>/oauth-authorized/<provider-name>
Настройка за балансировщиком нагрузки
Если Superset работает за балансировщиком нагрузки или обратным прокси (например, NGINX), нужно настроить проверку состояния, чтобы балансировщик понимал, запущен ли Superset.
Superset уже предоставляет специальную точку проверки — /health. Если веб-сервер работает, этот адрес возвращает код 200 и текст «OK».
Балансировщик может использовать этот endpoint, чтобы определить, доступен ли экземпляр Superset.
Если ваш балансировщик или прокси добавляет заголовки X-Forwarded-For и X-Forwarded-Proto, то в конфигурации Superset (superset_config.py) нужно включить параметр ENABLE_PROXY_FIX = True.
Это позволит Superset правильно использовать реальные IP-адреса клиентов и протокол (HTTP/HTTPS), переданные прокси.
Если же обратный прокси отвечает за шифрование SSL, может потребоваться явное указание протокола X-Forwarded-Proto.
Для веб-сервера Apache это можно сделать так:
RequestHeader set X-Forwarded-Proto "https"
Обновление Apache Superset
Чтобы безопасно обновить Superset в Docker-окружении, необходимо выполнить следующие шаги.
1. Остановите текущие контейнеры:
docker compose down
2. Смените тег образа в docker-compose.yml, например:
image: apache/superset:latest
3. Пересоздайте контейнеры:
docker compose up -d
4. Выполните миграции базы данных:
docker exec -it superset_app superset db upgrade
5. Перезапустите сервер:
docker restart superset_app
Рекомендуется предварительно сделать бэкап метаданных Superset (PostgreSQL или SQLite) и проверить совместимость плагинов/дополнительных пакетов.
Решение проблемы с закрытым портом 5432
Если ваш сервер не может подключиться к PostgreSQL через порт 5432 (по умолчанию), то вот как можно устранить проблему.
1. Проверьте состояние порта. На сервере PostgreSQL выполните команду:
sudo netstat -plnt | grep 5432
Если порт не слушает, проверьте настройки PostgreSQL, особенно параметр listen_addresses в файле postgresql.conf.
2. Разрешите доступ из внешних сетей. А именно — убедитесь, что в файле pg_hba.conf разрешен доступ для вашей сети:
host all all 0.0.0.0/0 md5
3. Если сервер использует файрвол (например, ufw), откройте порт 5432:
sudo ufw allow 5432/tcp
После этих шагов ваше соединение с базой данных должно восстановиться.
Запуск Superset в Kubernetes
Среди популярных способов развертывания Apache Superset, помимо Docker и Docker Compose, отдельное место занимает Kubernetes, поэтому далее рассмотрим установку с помощью Helm-чарта и базовую настройку Superset в K8s-кластере.
Шаг 1. Создание кластера и подключение
Для начала создаем кластер Kubernetes и подключаемся к нему. Если не знаете, как создать кластер и работать с ним, для вас собрали полезную инструкцию. После создания кластера скачиваем kubeconfig и настраиваем локальный kubectl:
export KUBECONFIG=~/.kube/kube-config.yaml
kubectl get nodes
Вы должны увидеть список нод вашего кластера.
Шаг 2. Установка Helm
Helm — это менеджер пакетов для Kubernetes. Установить его можно с официального источника. После установки проверяем корректность работы:
helm version
Шаг 3. Развертывание Superset с помощью Helm
Официальный Helm-чарт Superset размещен в репозитории Apache Superset:
git clone https://github.com/apache/superset
cd superset
helm upgrade --install superset ./helm/superset
При необходимости можно установить зависимости:
helm dependency update ./helm/superset
Эта команда создаст необходимые сервисы внутри кластера.
Проверяем статус подов и сервисов:
kubectl get pods
kubectl get svc
Сервис superset создается как ClusterIP, то есть доступен только внутри кластера.
Шаг 4. Настройка доступа извне через Ingress
Чтобы Superset был доступен из внешней сети, настраиваем Ingress.
1. Убедимся, что в кластере установлен Ingress-контроллер (например, NGINX):
kubectl get pods -n default
kubectl get svc -n default
2. Создаем файл superset-ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: superset-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: superset.example.com # замените на ваш домен
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: superset
port:
number: 8088
3. Применяем Ingress:
kubectl apply -f superset-ingress.yaml
4. Проверяем:
kubectl get ingress superset-ingress -n default
В колонке ADDRESS будет внешний IP вашего LoadBalancer.
А в браузере по IP-адресу балансировщика будет доступен Apache Superset:

Apache Superset на инфраструктуре Selectel
Выбор платформы для размещения аналитических систем напрямую влияет на надежность, производительность и соответствие требованиям безопасности. Инфраструктура Selectel предоставляет все необходимые возможности для комфортного и безопасного развертывания Apache Superset как в облаке, так и на выделенных серверах.
Основные преимущества
- Есть виртуальные машины DAVM.
- Возможность запуска в облаке Kubernetes.
- Возможность интеграции с Managed Databases.
- Соответствие 152-ФЗ и требованиям ФСТЭК России.
- Масштабирование ресурсов и резервное копирование.
Больше полезных статей
Заключение
Apache Superset — гибкая платформа для визуализации и анализа данных. Она разворачивается на разных инфраструктурах: в облаке или на локальных серверах.
В этой статье мы показали, как установить и настроить Superset (в Docker, Kubernetes или на платформе Selectel). А также — как привязать БД, кэширование и балансировку нагрузки.
В новый год или пиковые часы, когда запускается много тяжелых запросов к дашбордам. нехватка ресурсов сервера может сыграть роль «Гринча» и все зависнет или сломается. А чтобы ваша BI-система работала штатно, разверните Superset на облачных серверах Selectel (виртуальные машины, контейнеры, Kubernetes).
Обратите внимание на DAVM (Data Analysis Virtual Machine) — готовый виртуальный сервер с предустановленным Apache Superset 3.0, PostgreSQL и другими инструментами для анализа. Полноценная BI-среда в один клик.