Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
АНАЛИТИКА И МЕТРИКИ

Metabase

BI поверх вашей базы: дашборды и отчеты кликами или на SQL. Данные остаются там, где лежали - своего хранилища у Metabase нет. Разбираем, что умеет бесплатная версия и где начинается платная.

Проверено на версии v0.63.18.2, 28 сентября 2026~12 минутFatmetal Team
АНАЛИТИКА AGPL-3.0 + коммерческая лицензия Clojure / JVM Статус: запущен у нас, v0.63.18.2

Вердикт

Подходит
  • Команде 5-50 человек с данными в Postgres, MySQL или ClickHouse
  • Тем, кто потерял доступ к Power BI или Tableau
  • Когда данные нельзя выпускать за периметр
  • Если отчеты сейчас собирают руками или просят у разработчика
Не подходит
  • Если SAML или OIDC - обязательное требование безопасности
  • Если нужны права на уровне строк и колонок
  • Если нужен аудит, кто что смотрел и выгружал
  • Под тяжелую аналитику и экзотические графики
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: easy Первый старт: ~197 c Главный риск: H2 по умолчанию Прод-готовность: да, с внешним Postgres
ЧТО ЭТО

Вопросы к базе вместо выгрузок в Excel

Metabase подключается к боевой базе и дает людям спрашивать ее напрямую.

Инструмент подключается к существующей базе - Postgres, MySQL, ClickHouse, MongoDB, BigQuery и еще полутора десяткам источников. Дальше человек собирает отчет мышкой или пишет SQL, если умеет.

Ключевая особенность: своего хранилища у Metabase нет. Он переводит клики в SQL и идет в чужую базу. Собственная БД хранит только его самого - вопросы, дашборды, пользователей и права.

Отсюда вывод, который важнее любой фичи: данные никуда не копируются. Для компании с требованием держать все внутри периметра это снимает половину вопросов.

Задача, которую он закрывает, звучит обыденно. Данные лежат в базе, а отчетность собирается вручную или выпрашивается у разработчика. Metabase снимает разработчика с этого потока.

ClojureJVM / JettyReactTypeScriptPostgreSQLDocker
Главный экран Metabase на русском языке с коллекциями и примерами отчетов
Главная сразу после установки. Интерфейс русский, в комплекте демо-база и 37 готовых вопросов.
ГРАНИЦА ПЛАТНОГО

Что бесплатно, а что нет

Главный вопрос к продукту с открытым ядром. Ответ тоньше, чем обычно пишут.

Лицензия составная, и это не формальность. Все вне каталога enterprise/ - под AGPL-3.0, все внутри - под проприетарной Metabase Commercial License.

Сборки разведены по образам: metabase/metabase - бесплатная, metabase/metabase-enterprise - платная. В логе бесплатной прямым текстом: Enterprise Edition extensions are NOT PRESENT.

Обычно пишут коротко: SSO платный. На деле граница проходит иначе, и разница существенная для того, кто выбирает.

ФункцияБесплатноPro / Enterprise
Вход через Googleдада
Базовый LDAPдада
SAML, OIDC, JWTнетда
LDAP: синк атрибутов, фильтр группнетда
SCIM: авто-заведение и отключение людейнетда
Двухфакторная аутентификациянетда
Права на уровне строк и колонокнетда
Аудит: кто что смотрел и выгружалнетда
Гранулярный кэш запросовнетда
Whitelabel и мультитенантное встраиваниенетда

Проверяли не по документации, а включением. Настройка 2FA в бесплатной сборке присутствует, но только для чтения, и переменная MB_MFA_ENFORCEMENT ее не поднимает.

Документация вендора тут вводит в заблуждение: страница про 2FA описывает ее для self-host и, в отличие от остальных платных страниц, не несет пометки о платности.

Настройки saml-enabled в бесплатной сборке не существует вовсе - API отвечает «Неизвестная настройка». Платного кода в образе физически нет, он не заблокирован флагом.

Раздел аутентификации в админке Metabase: доступны только Google, LDAP и API-ключи
Бесплатная версия предлагает три варианта входа. Справа врезка вендора про SAML и JWT в платных тарифах.
i

Сколько стоит перейти. Starter - 100 долларов в месяц за первых пять человек и по 6 за следующего. Pro - 575 за первых десять и по 12 за следующего. Enterprise - от 20 тысяч в год. Команда на 20 человек, которой понадобился SAML, платит около 695 долларов в месяц.

ПРОТИВ ПЛАТНЫХ

Чем отличается от Power BI и Tableau

Для российской компании список альтернатив короче, чем кажется.

Power BI и Tableau здесь официально не продаются с 2022 года. При запросе страницы цен Power BI Microsoft отдает в теле ответа «This product is not available in your market».

То есть выбор стоит не между Metabase и Power BI, а между Metabase, Superset и выгрузками в Excel.

ПродуктМодель ценыПорог входа
Metabase, своя установкабесплатно, людей неограниченнотолько стоимость сервера
Metabase Cloud Starterподписка + за человека100 долларов в месяц
Metabase Proподписка + за человека575 долларов в месяц
Power BI Proза человека14 долларов в месяц
Tableau Cloud Standardза человека, по ролям15, 42 или 75 долларов
Apache Supersetбесплатно, Apache-2.0только стоимость сервера

Цены сняты в сентябре 2026 с официальных страниц вендоров. Данные по Tableau - из сводки третьей стороны: официальная страница цен содержимое не отдала.

Разница в подходе важнее цифр. Metabase не про «построй витрину и наведи семантический слой», а про «дай человеку без SQL получить ответ за пять минут».

Обратная сторона ровно та же. На сложной аналитике он упирается раньше, чем Superset, и набор типов графиков у него беднее.

КОНФИГУРАЦИЯ

Сколько просит железа

Вендор публикует требования и собственный нагрузочный тест - редкий случай.

База - одно ядро и гигабайт памяти. Плюс ядро и два гигабайта на каждые 20 одновременных пользователей. Базе приложения нужен отдельный Postgres: на старте ядро и два гигабайта.

Собственный тест вендора показывает, что узкое место снимается на третьем ядре: на двух ядрах 95-й перцентиль 390 мс, на трех - 119, на четырех - 82. Дальше прирост в пределах шума.

Тариф стендаCPU2-RAM4-DISK50
Контейнеров2 (приложение + Postgres)
Порт3000, healthcheck /api/health
Образ приложения1.81 ГБ
Образ postgres:16.15642 МБ
Диск после установки5.3 ГБ из 48
i

Почему не два гигабайта. JVM в простое держит 1.23 ГиБ и под нагрузкой почти не растет. Рядом должен поместиться Postgres. На машине с 2 ГБ запаса не остается, поэтому CPU2-RAM4-DISK50 - это минимум, а не компромисс.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и файл с доступами.

Рекомендуемая конфигурация: CPU2-RAM4-DISK50

Развернуть в 1 клик →
РАЗВЕРТЫВАНИЕ

Как ставится

Официальный способ для своей установки - Docker. Два контейнера, один порт.

  1. Поставить Docker

    Официальный apt-репозиторий docker.com. На чистой Ubuntu 24.04 заняло 143 секунды.

  2. Сгенерировать секреты

    Пароль базы и ключ шифрования. Ключ обязателен: без него подключения к базам и секреты лежат в открытом виде.

    POSTGRES_PASSWORD=$(openssl rand -hex 24)
    MB_ENCRYPTION_SECRET_KEY=$(openssl rand -hex 32)
  3. Описать два сервиса

    Приложение и Postgres. Порт наружу не публикуем - только на localhost, а снаружи ставим reverse-proxy с TLS.

    services:
      metabase:
        image: metabase/metabase:v0.63.18.2
        restart: unless-stopped
        ports:
          - "127.0.0.1:3000:3000"
        environment:
          MB_DB_TYPE: postgres
          MB_DB_HOST: postgres
          MB_DB_DBNAME: metabaseappdb
          MB_DB_USER: metabase
          MB_DB_PASS: ${POSTGRES_PASSWORD}
          MB_ENCRYPTION_SECRET_KEY: ${MB_ENCRYPTION_SECRET_KEY}
          JAVA_TIMEZONE: Europe/Moscow
          JAVA_TOOL_OPTIONS: "-Xmx2g"
        depends_on:
          postgres:
            condition: service_healthy
        healthcheck:
          test: ["CMD-SHELL", "curl --fail -I http://localhost:3000/api/health || exit 1"]
          interval: 15s
          start_period: 240s
      postgres:
        image: postgres:16.15
        restart: unless-stopped
        environment:
          POSTGRES_DB: metabaseappdb
          POSTGRES_USER: metabase
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
        volumes:
          - ./pg_data:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U metabase -d metabaseappdb"]
          interval: 10s
          retries: 10
  4. Поднять и подождать

    Скачивание образов заняло 109 секунд, запуск контейнеров - 23. Дальше терпение: первый старт идет больше трех минут.

    docker compose pull
    docker compose up -d
    docker compose logs -f metabase

Итого от чистой машины до рабочего интерфейса - около восьми минут. Мастер первичной настройки заводит администратора и спрашивает язык.

Готовый дашборд Metabase с фильтрами, KPI-карточками и графиком выручки
Демо-дашборд из комплекта: фильтры, KPI и комбинированный график. Содержимое примера английское, интерфейс русский.
SQL-редактор Metabase с запросом и построенным по нему столбчатым графиком
Вторая половина продукта: SQL-редактор, результат в виде графика, список таблиц справа. Запрос отработал за 144 мс.
ИИ-ПОМОЩНИК

Metabot и ключ к модели

Чат по данным в бесплатной версии работает - но до модели еще надо дойти.

С версии 0.60 ИИ-слой открыт: Metabot запускается на вашем ключе, и данные к вендору не уходят. В настройках поля под OpenAI, Anthropic, Bedrock, Azure, Mistral и OpenRouter.

Ключ выбирает клиент - продукт одинаково работает с любым провайдером. Платной в этой части остается только обвязка управления: лимиты токенов, доступы по группам и аналитика использования.

Проверили диалог на живом ключе: Metabot ответил потоком, finishReason: stop. Но до этого пришлось разобраться с двумя вещами.

Адрес провайдера может не отвечать

Запрос к модели с нашего сервера уходил в 403 Access denied by security policy - и без ключа, и с полностью валидным. Через прокси тот же запрос отдает 200 и ответ модели.

i

Прокси к внешним API уже есть на сервере. Адрес api-proxy.fatmetal.net:8080, входит в VPS, отдельно заказывать нечего. Какого провайдера моделей использовать - решаете вы, прокси пропускает любого.

Metabase не читает HTTPS_PROXY

Привычные переменные окружения тут не работают: подмена прокси на заведомо мертвый адрес ничего не меняла, запрос все равно шел напрямую. Это обычное поведение JVM - HTTPS_PROXY понимает curl, а не Java.

Настраивается системными свойствами JVM:

JAVA_TOOL_OPTIONS: "-Xmx2g
  -Dhttps.proxyHost=api-proxy.fatmetal.net -Dhttps.proxyPort=8080
  -Dhttp.proxyHost=api-proxy.fatmetal.net  -Dhttp.proxyPort=8080
  -Dhttp.nonProxyHosts=localhost|127.0.0.1|postgres|metabase"

Разделитель в nonProxyHosts - вертикальная черта, не запятая. Имена контейнеров в списке обязательны: иначе обращение к базе уйдет в прокси и Metabase потеряет ее.

У API-ключа OpenRouter недостаточно прав

Причина. Ключ может быть полностью рабочим. Metabase переводит чужой HTTP 403 в сообщение про права ключа, хотя ответ пришел от сети, а не от биллинга провайдера.

Решение. Проверить путь до провайдера отдельно - обычным curl с тем же ключом. Отвечает 403 и там - дело не в ключе, а в доступе к адресу.

ЗАМЕРЫ

Что намерили на стенде

Цифры с машины CPU2-RAM4-DISK50, Ubuntu 24.04, Docker 29.8.1.

RAM в простое, приложение1.23 ГиБ
RAM в простое, Postgres83 МиБ
Занято на машине1815 МБ из 3915
Пик RAM под нагрузкой1.30 ГиБ (+16 МиБ)
Пик CPU под нагрузкой131% из 200% (2 ядра)
Первый старт до HTTP 200197 с
Из них миграции базы111 с
Повторный старт91 с
Пропускная способность24.7 запроса в секунду
Ответ /api/health8 мс

Главный вывод замера не в абсолютных числах. Упирается процессор, а не память: за всю нагрузку JVM прибавила 16 МиБ, тогда как CPU ушел в 131 процент из двухсот доступных.

Практический смысл простой. Растет команда - добавляйте ядра, а не гигабайты. Это сходится с нагрузочным тестом самого вендора.

Данные растут медленно

Мы прогнали 2000 запросов и замерили прирост базы приложения: 745 байт на выполненный запрос. Растет история выполнения, больше в этой базе расти нечему.

В пересчете это 21 МБ в месяц при тысяче запросов в день и около 1.3 ГБ в год даже при пяти тысячах. Диска в 50 ГБ хватает на годы.

Объектное хранилище продукт не поддерживает, да оно ему и не нужно: анализируемые данные он не хранит вовсе, у контейнера приложения нет ни одного тома.

Проверено на версии v0.63.18.2, 28 сентября 2026. На новых версиях результаты могут отличаться.

ГРАБЛИ

Где может сломаться

Три вещи, на которых обжигаются при своей установке.

База по умолчанию живет внутри контейнера

Если не указать внешний Postgres, Metabase заведет встроенную H2 в файле внутри контейнера. Пересоздали контейнер - потеряли все вопросы, дашборды и коллекции.

Вендор предупреждает об этом прямым текстом. Переезд с H2 на Postgres потом делается отдельной процедурой миграции, поэтому внешнюю базу подключают с первого запуска.

Healthcheck успевает объявить контейнер больным

Up 3 minutes (unhealthy) - при этом приложение через 10 секунд отвечает 200

Причина. Холодный старт занимает 197 секунд, из них 111 - миграции пустой базы. Типовое окно start_period: 60s под это не рассчитано.

Решение. Поднять start_period до 240 секунд. Иначе оркестратор, реагирующий на unhealthy, уводит машину в цикл перезапусков по три минуты каждый.

Письма уходят от чужого адреса

From: notifications@metabase.com - вместо вашего адреса отправителя

Причина. Ручка /api/email принимает только хост, порт, режим шифрования, логин и пароль. Адрес отправителя она молча игнорирует и отвечает 200.

Решение. Задать его отдельно через /api/setting/email-from-address или в интерфейсе. Иначе письма провалят SPF и DMARC у получателя и уедут в спам.

i

Что порадовало. Нерабочие настройки почты Metabase просто не сохраняет: проверяет соединение и отвечает 400 «Wrong host or port» за пять секунд. Молчаливого зависания на две минуты, типичного для других продуктов, тут не бывает.

ЭКСПЛУАТАЦИЯ

Безопасность и обновления

Что закрыть до того, как пустить людей.

  • Внешний Postgres с первого запуска, а не после первой потери данных.
  • Ключ шифрования MB_ENCRYPTION_SECRET_KEY - иначе пароли подключений лежат в базе открытыми.
  • TLS своим прокси. Вендор отдельно предупреждает, что терминация на том же сервере отъедает процессор у приложения.
  • Порт только на localhost. Наружу - через reverse-proxy, а не голым портом.
  • Бэкап - это дамп Postgres. Больше состояния нигде нет, томов у приложения ноль.
  • Права на данные настраиваются на уровне подключения: отдельный пользователь базы только на чтение.

Обновление сводится к смене тега образа и перезапуску - схему база приложения мигрирует сама. Закрепляйте конкретную версию: на latest инструкция устареет незаметно.

Патчи выходят раз в одну-две недели, минорные версии - примерно раз в квартал. Параллельно поддерживается LTS-ветка, сейчас это 0.58.

i

Про нумерацию. У одного релиза два номера: 0.63.18 - бесплатная сборка, 1.63.18 - платная. «Metabase 1.63» не новее, чем 0.63, это другая редакция. В тегах Docker есть и четвертая цифра - номер пересборки.

СОСЕДИ

Связь с другими стеками

  • PostgreSQL или ClickHouse - источник данных и одновременно база приложения. ClickHouse поддерживается штатным драйвером.
  • Reverse-proxy с TLS - обязательный сосед: наружу продукт смотреть не должен.
  • Apache Superset - альтернатива для тех, кому нужны SAML и LDAP без платного тарифа.
  • Grafana - соседняя задача, а не та же: метрики инфраструктуры вместо запросов к бизнес-базе.
ОГРАНИЧЕНИЯ

Когда это НЕ ваш выбор

Служба безопасности требует SSO и права на строки

SAML, OIDC, SCIM и разграничение по строкам и колонкам - платные функции, и своя установка от этого не спасает. Лицензия нужна и на своем сервере.

Нужен комплаенс-аудит

Журнала «кто какой отчет открывал и что выгрузил» в бесплатной версии нет. Если этот журнал требуется регулятору, бюджет на Pro придется закладывать сразу.

Тяжелая аналитика и экзотическая визуализация

За пределами полусотни дашбордов и десятка типов графиков продукт упирается. Superset мощнее, хотя и заметно тяжелее в эксплуатации.

Вы правите код и отдаете доступ наружу

Лицензия AGPL: сетевое использование модифицированной копии обязывает раскрыть исходники. Установка без правок кода этого не требует.

ВОПРОСЫ

Частые вопросы

Хватит ли двух гигабайт памяти?

Запустится, но впритык. JVM в простое занимает 1.23 ГиБ, и рядом должен работать Postgres. Практический минимум - 4 ГБ.

Можно без Docker?

Да, продукт поставляется JAR-файлом. Потребуется JRE 25 от Eclipse Temurin - более ранние версии Java не поддерживаются.

Правда ли, что двухфакторная аутентификация бесплатна?

Нет. Мы проверяли включением: настройка в бесплатной сборке доступна только для чтения, переменная окружения ее не поднимает. Документация вендора в этом месте неточна.

Он копирует данные к себе?

Нет. Metabase выполняет запросы в вашей базе и показывает результат. Своего хранилища у него нет, у контейнера приложения нет томов.

Нужно ли докупать диск или объектное хранилище?

При типовом использовании нет. Растет только история запросов - 745 байт на запрос, около 259 МБ в год при тысяче запросов в день.

Нужен ли платный тариф, чтобы включить ИИ?

Нет. Metabot работает в бесплатной версии на вашем ключе провайдера. Платными остаются лимиты токенов, доступы по группам и аналитика использования ИИ.

Есть ли русский интерфейс?

Да, полный - включая админку и тексты ошибок. Язык выбирается при первичной настройке, отдельных пакетов ставить не надо.

Что с обновлениями?

Меняется тег образа, контейнер перезапускается, схему база мигрирует сама. Перед этим стоит снять дамп Postgres - другого состояния нет.

Итог

Metabase решает конкретную задачу: дать людям без SQL спрашивать боевую базу и не копировать данные наружу. Ставится за восемь минут, живет на CPU2-RAM4-DISK50 за 500 руб/мес и укладывается в 1.23 ГиБ памяти в простое. Упирается процессор, а не память - расти надо ядрами. Бесплатной версии хватает команде, которой достаточно входа через Google или базовый LDAP. Как только служба безопасности просит SAML, права на строки или аудит, разговор переходит к 575 долларам в месяц, и своя установка от этого не спасает.

Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли неточность в разборе - напишите, поправим в течение дня.

Спросить инженера в TelegramМы на связи