Как настроить Metabase для бизнес-дашбордов
Практика3 минРедакция Innovialabs
Коротко
Запустите Metabase в Docker с отдельной PostgreSQL для служебных данных, подключите базу через пользователя только для чтения, соберите вопросы в дашборды, ограничьте доступ группами и настройте рассылку отчётов по расписанию.
Что вы получите
Metabase — open-source BI-инструмент: менеджеры задают вопросы к данным через визуальный конструктор, аналитики пишут SQL, а результаты превращаются в графики и дашборды. Базовая настройка — несколько шагов: запустить контейнер, безопасно подключить базу, собрать первый дашборд, настроить права и подписки.
Шаг 1. Установка в Docker
Для быстрой проверки хватит одной команды:
docker run -d -p 3000:3000 --name metabase metabase/metabase
По умолчанию Metabase хранит свои настройки, пользователей и дашборды во встроенном файле H2 — для продакшена это не рекомендуется. Для реальной работы дайте ему отдельную служебную базу PostgreSQL:
services:
metabase:
image: metabase/metabase
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_HOST: metabase-db
MB_DB_PORT: 5432
MB_DB_DBNAME: metabase
MB_DB_USER: metabase
MB_DB_PASS: ${METABASE_DB_PASSWORD}
JAVA_TIMEZONE: Asia/Tashkent
depends_on:
- metabase-db
metabase-db:
image: postgres:16
environment:
POSTGRES_DB: metabase
POSTGRES_USER: metabase
POSTGRES_PASSWORD: ${METABASE_DB_PASSWORD}
volumes:
- metabase-db-data:/var/lib/postgresql/data
volumes:
metabase-db-data:
Затем поставьте его за reverse proxy с HTTPS, откройте сайт и создайте первого администратора. Делайте бэкапы служебной базы: в ней все ваши вопросы и дашборды. Фиксируйте образ на конкретной версии и обновляйтесь осознанно.
Шаг 2. Пользователь только для чтения
Никогда не подключайте Metabase под владельцем базы. Создайте отдельную роль, которая умеет только читать:
CREATE ROLE metabase_ro WITH LOGIN PASSWORD 'use-a-strong-password';
GRANT CONNECT ON DATABASE shop TO metabase_ro;
GRANT USAGE ON SCHEMA public TO metabase_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO metabase_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO metabase_ro;
ALTER ROLE metabase_ro SET statement_timeout = '60s';
ALTER DEFAULT PRIVILEGESраспространяется на будущие таблицы, но только созданные той ролью, которая выполнила команду. Выполните её от роли, под которой идут миграции.statement_timeoutне даст тяжёлому запросу подвесить базу.- Ещё лучше — подключаться к реплике для чтения, чтобы отчёты не конкурировали с приложением.
- Скройте таблицы с персональными и секретными данными (хэши паролей, токены) или вовсе не выдавайте к ним доступ.
В Metabase откройте Admin settings → Databases → Add database и укажите хост и данные пользователя только для чтения. Проверьте часовой пояс отчётов в настройках локализации, чтобы «сегодня» для всех означало один и тот же день.
Шаг 3. Вопросы и дашборды
- Вопрос (question) — один запрос: через визуальный конструктор (фильтр, агрегация, группировка) или на SQL.
- Модель (model) — очищенный набор данных (например, «Оплаченные заказы»), на котором другие строят вопросы, с понятными названиями и описаниями колонок.
- Дашборд — набор вопросов с общими фильтрами (период, город, менеджер), привязанными к нужным колонкам.
Практичный первый дашборд: выручка по дням, количество заказов, средний чек, топ товаров, заказы по статусам. Называйте всё языком бизнеса и добавляйте короткие описания — так цифрам доверяют.
Шаг 4. Права доступа
Metabase управляет доступом через группы:
- Права на данные определяют, какие базы и таблицы видит группа и может ли она писать SQL.
- Права на коллекции определяют, кто может смотреть или редактировать сохранённые вопросы и дашборды.
Простая схема: аналитики пишут SQL; менеджеры только смотрят подготовленные коллекции; сырые таблицы с персональными данными не видит никто, кроме администраторов. Уберите лишние права у группы по умолчанию «All Users» — в неё входит каждый пользователь. Часть продвинутых возможностей, например ограничения на уровне строк, есть только в платных редакциях.
Шаг 5. Отчёты на почту по расписанию
- В Admin settings → Email настройте SMTP и отправьте тестовое письмо.
- Откройте дашборд, выберите Subscriptions, добавьте получателей и расписание (например, каждый понедельник утром).
- Для отдельного вопроса настройте alert: Metabase пришлёт сообщение, когда появятся результаты или будет пересечена целевая линия.
Укажите адрес сайта в общих настройках, чтобы ссылки в письмах вели куда нужно.