Apache Superset на Ubuntu 24.04: пошаговая установка
Если аналитика в компании упирается в лицензии Tableau или Power BI, а Excel уже не тянет объём данных — Apache Superset закрывает этот разрыв бесплатно и без ограничений на число пользователей. Это open-source BI-платформа от Airbnb, которая умеет строить сложные дашборды поверх практически любой SQL-базы. Ниже — рабочая установка с нуля на чистом Ubuntu 24.04: от системных зависимостей до продакшен-запуска через Gunicorn и Nginx с SSL.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Superset и когда он оправдан
Superset — это веб-приложение на Flask и React, которое подключается к вашим базам данных (PostgreSQL, MySQL, ClickHouse, Snowflake и десяткам других через SQLAlchemy) и строит визуализации без единой строчки кода со стороны аналитика. У него SQL Lab для произвольных запросов, конструктор графиков с полусотней типов чартов и дашборды с фильтрами, drill-down и алертами.
Смысл ставить его именно на свой сервер, а не пользоваться облачным SaaS-аналогом — в двух вещах: данные не покидают вашу инфраструктуру, и вы не платите за место в дашборде каждому сотруднику. Минус тоже есть: Superset не такой отполированный из коробки, как Tableau, и первую неделю уйдёт на настройку прав, ролей и подключений — это не «поставил и забыл» инструмент.
Для установки хватит одного VPS: 2 vCPU и 4 ГБ RAM держат Superset с несколькими подключёнными источниками и десятком одновременных пользователей без проблем, но под тяжёлые дашборды с большими агрегациями и SQL Lab на постоянной основе комфортнее с 8 ГБ — сама база метаданных и Redis-кэш едят немного, а вот воркеры Gunicorn под нагрузкой могут раздуваться.
Подготовка сервера
Обновляем систему и ставим системные зависимости, без которых не соберутся Python-пакеты Superset (в первую очередь cryptography и клиенты баз данных):
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential python3-dev python3-venv python3-pip \
libssl-dev libffi-dev libsasl2-dev libldap2-dev pkg-config \
default-libmysqlclient-dev postgresql-client redis-server nginx git
redis-server и postgresql-client можно не ставить локально, если планируете вынести кэш и базу метаданных на отдельные сервисы — так и стоит делать в проде, но для одиночного VPS проще держать всё на одной машине.
Создаём отдельного системного пользователя — Superset не должен работать от root:
sudo useradd -r -m -d /opt/superset -s /bin/bash superset
sudo -iu superset
Дальше все команды до раздела про systemd выполняем от имени superset.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка PostgreSQL и Redis под метаданные
Superset по умолчанию хранит свои метаданные (пользователей, дашборды, права, историю запросов) в SQLite — этого достаточно для тест-драйва, но в проде SQLite не переживёт параллельные запросы и первая же миграция схемы станет риском. Ставим PostgreSQL отдельно — этот шаг подробно разобран в статье про установку PostgreSQL на Ubuntu 24.04, здесь только минимум для Superset:
sudo -u postgres psql -c "CREATE USER superset WITH PASSWORD 'замените_на_свой_пароль';"
sudo -u postgres psql -c "CREATE DATABASE superset OWNER superset;"
Redis нужен под кэш чартов и очередь для асинхронных запросов (Celery). Если Redis уже стоит на сервере под другие задачи — Superset прекрасно уживётся рядом на соседней логической базе (db=1, например), только учтите нюансы, разобранные в статье про частые ошибки Redis — переполнение памяти без maxmemory-policy там встречается регулярно и с Superset тоже.
Установка Python-окружения и Superset
Виртуальное окружение — обязательно, системный Python Ubuntu 24.04 (3.12) трогать не стоит:
python3 -m venv /opt/superset/venv
source /opt/superset/venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install apache-superset psycopg2-binary redis
Версию Superset намеренно не фиксирую цифрой — берите актуальный релиз с PyPI (pip index versions apache-superset покажет список), к концу августа 2026 ветка наверняка ушла вперёд, а старые примеры конфигов быстро устаревают.
Генерируем секретный ключ — он шифрует cookies сессий и API-токены, без него Superset откажется стартовать в продакшен-режиме:
python -c "import secrets; print(secrets.token_hex(42))"
Создаём конфиг /opt/superset/superset_config.py:
import os
from cachelib.redis import RedisCache
SECRET_KEY = "вставьте_сгенерированный_ключ"
SQLALCHEMY_DATABASE_URI = (
"postgresql+psycopg2://superset:замените_на_свой_пароль@localhost:5432/superset"
)
CACHE_CONFIG = {
"CACHE_TYPE": "RedisCache",
"CACHE_DEFAULT_TIMEOUT": 300,
"CACHE_KEY_PREFIX": "superset_",
"CACHE_REDIS_HOST": "localhost",
"CACHE_REDIS_PORT": 6379,
"CACHE_REDIS_DB": 1,
}
DATA_CACHE_CONFIG = CACHE_CONFIG
ENABLE_PROXY_FIX = True
WTF_CSRF_ENABLED = True
ENABLE_PROXY_FIX = True критичен, если Superset будет за Nginx — без него редиректы после логина будут ломаться на http вместо https, а реальный IP клиента в логах не появится.
Указываем путь к конфигу и накатываем миграции:
export SUPERSET_CONFIG_PATH=/opt/superset/superset_config.py
superset db upgrade
Инициализация: администратор, роли, примеры
Создаём первого администратора — без него в интерфейс не зайти:
export FLASK_APP=superset
superset fab create-admin \
--username admin \
--firstname Admin \
--lastname Admin \
--email admin@example.com \
--password замените_на_свой_пароль
Инициализируем роли по умолчанию (Admin, Alpha, Gamma, Public) и права доступа:
superset init
По желанию можно подгрузить демонстрационные датасеты и дашборды — удобно, чтобы понять логику интерфейса до подключения реальных данных:
superset load_examples
Эта команда качает несколько мегабайт тестовых CSV и создаёт с десяток учебных дашбордов — на проде её обычно пропускают, но на первом запуске она экономит часы на «а как это вообще работает».
Продакшен-запуск: Gunicorn, systemd, Nginx и SSL
Запускать superset run годится только для разработки — однопоточный dev-сервер Flask не выдержит параллельных пользователей. В проде нужен Gunicorn с несколькими воркерами:
pip install gunicorn
Юнит systemd /etc/systemd/system/superset.service (создаётся от root):
[Unit]
Description=Apache Superset
After=network.target postgresql.service redis-server.service
[Service]
Type=simple
User=superset
Group=superset
WorkingDirectory=/opt/superset
Environment="SUPERSET_CONFIG_PATH=/opt/superset/superset_config.py"
ExecStart=/opt/superset/venv/bin/gunicorn \
--workers 4 \
--worker-class gthread \
--threads 4 \
--timeout 120 \
--bind 127.0.0.1:8088 \
"superset.app:create_app()"
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Число воркеров считайте от (2 × ядра) + 1, но не увлекайтесь на маленьком VPS — каждый воркер Superset может держать 150-300 МБ памяти под нагрузкой, и на 4 ГБ RAM четыре воркера плюс Postgres и Redis займут почти всё свободное место.
sudo systemctl daemon-reload
sudo systemctl enable --now superset
sudo systemctl status superset
Дальше — Nginx как reverse proxy перед Gunicorn, с деталями конфига разобрано в статье про Nginx как reverse proxy. Минимальный конфиг /etc/nginx/sites-available/superset:
server {
listen 80;
server_name superset.example.com;
client_max_body_size 20M;
location / {
proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120s;
}
}
sudo ln -s /etc/nginx/sites-available/superset /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
SSL проще всего закрыть через Certbot:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d superset.example.com
Не забудьте открыть только 80/443 наружу и закрыть 8088 файрволом — Superset за Nginx не должен быть доступен напрямую по внутреннему порту.
Подключение источника данных и первый дашборд
Заходим на https://superset.example.com, логинимся под администратором и в разделе Settings → Database Connections добавляем базу. Для PostgreSQL строка подключения выглядит так:
postgresql+psycopg2://readonly_user:пароль@db-host:5432/analytics_db
Практический совет: подключайте Superset к базе через отдельного read-only пользователя, а не под тем же логином, что у приложения — так случайный тяжёлый запрос из SQL Lab не заблокирует продакшен-таблицы на запись. Дальше — Datasets → добавить таблицу или view, и Charts → новый чарт на этом датасете. Дашборд собирается перетаскиванием готовых чартов на холст — с фильтрами, которые применяются сразу ко всем графикам на странице.
Если у вас уже стоит ClickHouse под аналитику — там своя специфика подключения через clickhouse-connect, и есть смысл заранее прикинуть, что выгоднее для аналитических нагрузок — ClickHouse или PostgreSQL, прежде чем тащить в Superset второй тип базы.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Superset действительно бесплатный?
Да, это проект Apache Software Foundation под лицензией Apache 2.0 — без ограничений на число пользователей, дашбордов или коннекторов к базам. Платите только за сервер, на котором он крутится.
Обязательно выносить базу метаданных на отдельный сервер?
Нет, для команды до 15-20 человек PostgreSQL и Redis прекрасно живут на том же VPS, что и сам Superset. Разносить стоит, когда нагрузка на SQL Lab и число дашбордов заметно вырастут.
Чем Superset отличается от Metabase?
Metabase проще в освоении и быстрее ставится (см. установку Metabase на Ubuntu 24.04), но Superset гибче в кастомизации визуализаций и лучше масштабируется на больших дашбордах с десятками чартов — за счёт более сложной настройки.
Как обновить Superset до новой версии?
Активируете venv, pip install --upgrade apache-superset, затем обязательно superset db upgrade для миграции схемы метаданных, и рестарт systemd-юнита. Перед обновлением бэкапьте базу метаданных PostgreSQL — миграции иногда необратимы.
Хватит ли 2 ГБ RAM на старте?
Формально Superset запустится, но с одним воркером Gunicorn и без запаса под Postgres — рискованно даже для одного пользователя. 4 ГБ — комфортный минимум для реальной работы.
Нужен ли Celery-воркер отдельно от веб-процесса?
Для синхронных запросов и небольших дашбордов — нет. Celery нужен под асинхронные тяжёлые запросы в SQL Lab и периодические алерты/отчёты по расписанию — это отдельный процесс, который тоже стоит завести под systemd по аналогии с Gunicorn.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →