Metabase на Ubuntu 24.04: пошаговая установка
Аналитику часто хочется отдать не только разработчикам, но и менеджерам, маркетологам, финансистам — без очереди «напиши мне SQL-запрос». Metabase закрывает именно эту задачу: подключается к базе данных и даёт строить графики и дашборды кликами, а не кодом. В этом руководстве — пошаговая установка Metabase на Ubuntu 24.04: Java 21, systemd-служба, переход с встроенной базы на PostgreSQL для продакшена и Nginx с SSL для внешнего доступа.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Metabase и зачем он вам
Metabase — open-source BI-инструмент на Java. Он подключается к вашей рабочей базе (PostgreSQL, MySQL, ClickHouse, MongoDB и десяткам других источников) и предлагает два уровня работы: простой построитель вопросов для тех, кто не пишет SQL, и полноценный SQL-редактор для аналитиков. Из вопросов собираются дашборды, по расписанию их можно рассылать в Slack или на почту.
От Grafana и Prometheus, о которых мы уже писали в статье про установку Grafana и Prometheus, Metabase отличается фокусом: те заточены под метрики и мониторинг инфраструктуры в реальном времени, Metabase — под бизнес-аналитику поверх реляционных данных: продажи, заказы, пользователей, финансы. Если вам нужно посчитать LTV когорты или собрать дашборд по выручке за квартал — это к Metabase, а не к Prometheus.
Ubuntu 24.04 LTS для установки подходит без оговорок: свежий systemd для управления службой, длинный цикл поддержки, стабильные пакеты Java. Минимум для теста — 1 ядро и 2 ГБ RAM, но Metabase на Java прожорлив по памяти уже на старте: под реальную нагрузку с несколькими аналитиками и активными дашбордами закладывайте 2 ядра и 4 ГБ RAM, а с внешней PostgreSQL под саму систему — ещё немного диска сверху. MAATRIX даёт VPS на Ubuntu 24.04 в нужной локации с оплатой картой российского банка, СБП, криптовалютой или токеном MAAT — без иностранной карты и заморочек с валютой.
Требования и подготовка сервера
Перед установкой обновите систему и заведите отдельного пользователя — Metabase не должен работать от root:
apt update && apt upgrade -y
adduser --system --group --home /opt/metabase metabase
Флаг --system создаёт служебную учётную запись без интерактивного логина, а --home /opt/metabase сразу задаёт каталог, куда мы положим jar-файл и данные приложения. Такой пользователь не может зайти по SSH и не имеет пароля — это снижает риск, если сам процесс Metabase окажется скомпрометирован через уязвимость в зависимостях.
Проверьте, сколько свободной памяти реально доступно процессу:
free -h
Java-машина Metabase по умолчанию резервирует долю доступной RAM под кучу. На VPS с 2 ГБ она стартует, но с парой активных дашбордов и десятком одновременных пользователей начнёт заметно тормозить на сборке мусора — это стоит учитывать при выборе тарифа сразу, а не после того, как аналитики пожалуются на зависания интерфейса.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверШаг 1: установка Java 21
Актуальные ветки Metabase требуют Java 21 — более старые версии OpenJDK (17 и ниже) просто не запустят jar-файл. В репозиториях Ubuntu 24.04 пакет уже есть:
apt install -y openjdk-21-jre-headless
java -version
Флаг -headless ставит JRE без графической подсистемы — на сервере без монитора она не нужна и только тратит место. Убедитесь, что вывод java -version показывает именно 21-ю ветку: если в системе стоит несколько версий Java, переключите дефолтную через update-alternatives --config java и выберите нужную из списка.
Шаг 2: установка Metabase как systemd-службы
Скачайте актуальный jar прямо со страницы официальных релизов — ссылка latest всегда указывает на свежую стабильную сборку, и вам не придётся вручную отслеживать номер версии:
cd /opt/metabase
wget https://downloads.metabase.com/latest/metabase.jar
chown -R metabase:metabase /opt/metabase
Создайте юнит /etc/systemd/system/metabase.service:
[Unit]
Description=Metabase BI
After=network.target
[Service]
Type=simple
User=metabase
WorkingDirectory=/opt/metabase
ExecStart=/usr/bin/java -Xmx2g -jar /opt/metabase/metabase.jar
Restart=on-failure
RestartSec=10
Environment=MB_JETTY_PORT=3000
[Install]
WantedBy=multi-user.target
Флаг -Xmx2g жёстко ограничивает кучу Java двумя гигабайтами — без этого JVM может попытаться забрать больше памяти, чем реально есть на VPS, и уронить систему через OOM killer вместе с другими процессами. Подберите значение под фактический объём RAM сервера, оставив запас под ОС и, если она тут же на сервере, под PostgreSQL. Restart=on-failure перезапускает службу, если Java упадёт по исключению, а RestartSec=10 даёт паузу, чтобы не уйти в цикл падений при системной проблеме.
Запустите и включите автозапуск:
systemctl daemon-reload
systemctl enable --now metabase
journalctl -u metabase -f
Первый старт занимает одну-две минуты — Metabase инициализирует внутреннюю базу метаданных и поднимает Jetty. В логе появится строка о запуске на порту 3000; дождитесь её, прежде чем открывать интерфейс в браузере.
Шаг 3: PostgreSQL вместо встроенной H2 для продакшена
По умолчанию Metabase хранит свои внутренние данные — настройки, вопросы, права доступа, историю — в файловой базе H2 рядом с jar-файлом. Для знакомства с системой это нормально, но для продакшена не годится: H2 не любит параллельный доступ, файл легко повредить при жёстком перезапуске, а бэкап сводится к копированию одного файла без гарантий целостности. Сама Metabase в документации прямо не рекомендует H2 для боевой эксплуатации.
Разверните отдельную PostgreSQL под нужды Metabase — если её ещё нет на сервере, мы подробно разбирали установку в статье про PostgreSQL на Ubuntu 24.04:
sudo -u postgres psql -c "CREATE DATABASE metabaseapp;"
sudo -u postgres psql -c "CREATE USER metabase WITH ENCRYPTED PASSWORD 'сложный-пароль';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE metabaseapp TO metabase;"
Важно не перепутать роли: эта PostgreSQL хранит служебные данные самой Metabase, а не аналитические данные, которые вы будете исследовать через дашборды, — источники для аналитики подключаются отдельно, уже из интерфейса. Добавьте параметры подключения к юниту службы, чтобы Metabase переехала на PostgreSQL при следующем запуске:
Environment=MB_DB_TYPE=postgres
Environment=MB_DB_DBNAME=metabaseapp
Environment=MB_DB_PORT=5432
Environment=MB_DB_USER=metabase
Environment=MB_DB_PASS=сложный-пароль
Environment=MB_DB_HOST=localhost
Перечитайте конфигурацию и перезапустите службу:
systemctl daemon-reload
systemctl restart metabase
При первом старте с новыми переменными Metabase создаст в PostgreSQL нужную схему автоматически — миграцию делать вручную не нужно. Если у вас уже накопились дашборды в H2 и вы переходите на PostgreSQL задним числом, перед сменой параметров сделайте официальный экспорт настроек через java -jar metabase.jar load-from-h2 в новую базу — иначе история и вопросы просто не перенесутся.
Шаг 4: Nginx как reverse proxy и SSL
Открывать порт 3000 наружу напрямую не стоит: без SSL логин и пароль администратора уйдут в открытом виде, а сам порт станет лишней точкой сканирования. Поставьте Nginx перед Metabase — подробный разбор конфигурации reverse proxy есть в статье Nginx как reverse proxy на Ubuntu 24.04, здесь — минимальный рабочий конфиг:
server {
listen 80;
server_name bi.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
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 300s;
}
}
Таймаут proxy_read_timeout 300s увеличен намеренно: тяжёлые аналитические запросы к большим таблицам могут выполняться дольше стандартных 60 секунд Nginx, и без этой правки браузер получит обрыв соединения раньше, чем Metabase успеет вернуть результат.
Выпустите сертификат Let's Encrypt через certbot (сравнение certbot и acme.sh — в отдельной статье, если выбираете инструмент) и настройте firewall — базовая настройка UFW на Ubuntu 24.04 разобрана в статье про фаервол UFW:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d bi.example.com
ufw allow 'Nginx Full'
ufw allow OpenSSH
ufw deny 3000/tcp
ufw enable
Правило ufw deny 3000/tcp явно закрывает порт Metabase снаружи — доступ к ней теперь только через Nginx на 443, а сама служба слушает исключительно localhost на уровне приложения. Certbot настроит и автопродление сертификата через systemd-таймер, отдельно ничего заводить не нужно.
Шаг 5: первое подключение к данным и дашборд без SQL
Откройте https://bi.example.com, пройдите мастер первого запуска: создайте учётную запись администратора и подключите первый источник данных. Metabase запросит хост, порт, имя базы, пользователя и пароль — для PostgreSQL это стандартные параметры подключения, для облачных источников (BigQuery, Snowflake) — ключи доступа через отдельные формы.
После подключения Metabase сама просканирует схему и покажет таблицы в разделе Browse Data. Дальше — без единой строки SQL: выберите таблицу, нажмите Summarize, задайте метрику (сумма, среднее, количество) и группировку по времени или категории — получите график за пару кликов. Сохранённый график — это «вопрос» (question); несколько вопросов, собранных на одном холсте, — дашборд.
Для сравнения аналитической СУБД под тяжёлые данные у нас есть отдельный разбор ClickHouse и PostgreSQL для аналитики — если объём данных растёт в миллионы и десятки миллионов строк, а обычные SELECT в PostgreSQL начинают тормозить, это тот случай, когда стоит развести хранилище и BI-инструмент по разным движкам. Metabase одинаково хорошо работает поверх обеих баз, разница только в скорости самих запросов на стороне СУБД.
Настройте расписание обновления дашбордов и подписку по e-mail или в Slack в настройках дашборда — это избавляет команду от привычки заходить и обновлять страницу вручную каждое утро.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Почему Metabase не запускается после установки Java?
Чаще всего в системе несколько версий Java и активна не 21-я. Проверьте java -version и при необходимости переключите через update-alternatives --config java.
Обязательно ли переносить данные с H2 на PostgreSQL?
Для теста на одном пользователе H2 хватит. Но если планируется несколько администраторов, регулярные бэкапы и устойчивость к сбоям — переход на PostgreSQL стоит делать сразу, перенос задним числом требует отдельной команды экспорта.
Сколько памяти реально нужно Metabase?
Для стабильной работы с несколькими активными пользователями и дашбордами закладывайте от 4 ГБ RAM с явным ограничением кучи через -Xmx. На 2 ГБ система запустится, но будет заметно подтормаживать под нагрузкой.
Можно ли обновить Metabase без простоя?
Штатно — нет, jar-файл заменяется и служба перезапускается, это секунды-минуты недоступности. Скачайте новый metabase.jar поверх старого, сохранив прежнее имя, и выполните systemctl restart metabase — миграция внутренней базы пройдёт автоматически при старте.
Как оплатить сервер под Metabase из России?
Картой российского банка, по СБП, криптовалютой или токеном MAAT — иностранная карта не требуется, VPS на Ubuntu 24.04 разворачивается за несколько минут.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →