Гид по технологиям

Установка Metabase на Ubuntu 20.04 с Nginx и Let's Encrypt

• 6 min read • DevOps • Обновлено 22 Nov 2025
Установка Metabase на Ubuntu 20.04 с Nginx и SSL
Установка Metabase на Ubuntu 20.04 с Nginx и SSL

Логотип Metabase и интерфейс аналитики

О чём эта инструкция

Этот пошаговый гид показывает, как развернуть Metabase — простую BI-платформу с открытым исходным кодом — на сервере Ubuntu 20.04, настроить MariaDB как мета‑базу, организовать запуск через systemd, защитить доступ HTTPS с помощью Certbot и Nginx, а также какие меры принять для безопасности и поддержки.

Важно: Metabase написан на Java и по умолчанию слушает порт 3000. В продакшене рекомендуют ставить обратный прокси (Nginx) перед приложением и хранить метаданные в отдельной базе данных (например, MariaDB или PostgreSQL).

Требования

  • Сервер с Ubuntu 20.04 (доступ по SSH).
  • Домен, указывающий на IP сервера (A-запись/AAAA).
  • Пароль root или учётная запись с sudo.
  • Открытые порты 22 (SSH), 80 и 443 (HTTP/HTTPS) в брандмауэре.

Короткая терминология

  • Metabase: веб-приложение BI для создания дашбордов.
  • Certbot: клиент для получения сертификатов Let’s Encrypt.
  • systemd: менеджер сервисов в Ubuntu.

1. Установка Java

Metabase — Java-приложение, поэтому требуется OpenJDK 11 (или совместимая версия). На сервере выполните:

apt-get update
apt-get install openjdk-11-jdk openjdk-11-jre -y

Проверка версии:

java -version

Ожидаемый результат — строка с openjdk 11. Если версия отличается, убедитесь, что она совместима с конкретной версией Metabase, которую вы скачиваете.

2. Установка и настройка MariaDB (как мета‑хранилища Metabase)

Metabase может хранить свою мета‑информацию (пользователи, дашборды) в встроенной H2 базе, но для продакшена рекомендуется использовать MariaDB, MySQL или PostgreSQL.

Установка MariaDB:

apt-get install mariadb-server -y

Быстрая настройка безопасности (рекомендуется):

mysql_secure_installation

Войдите в оболочку MariaDB и создайте БД и пользователя для Metabase (замените “your_secure_password” на надёжный пароль):

mysql -u root -p

CREATE DATABASE metabase;
GRANT ALL PRIVILEGES ON metabase.* TO 'metabase'@'localhost' IDENTIFIED BY 'your_secure_password';
FLUSH PRIVILEGES;
EXIT;

Важно: храните пароль в безопасном месте (секретном хранилище), не оставляйте в открытом виде в скриптах.

3. Скачивание Metabase и подготовка пользователя

Создайте каталог и скачайте JAR-файл Metabase. В примере используется релиз v0.36.2 — на момент чтения проверяйте актуальную версию на downloads.metabase.com:

mkdir -p /opt/metabase
cd /opt/metabase
wget https://downloads.metabase.com/v0.36.2/metabase.jar

Создайте системную группу и пользователя, под которыми будет работать приложение:

addgroup --quiet --system metabase
adduser --quiet --system --ingroup metabase --no-create-home --disabled-password metabase

Установите правильные владельца и права:

chown -R metabase:metabase /opt/metabase
chmod -R 755 /opt/metabase

4. Создание systemd-сервиса для Metabase

Создайте файл /etc/systemd/system/metabase.service:

[Unit]
Description=Metabase server
After=network.target

[Service]
WorkingDirectory=/opt/metabase/
ExecStart=/usr/bin/java -jar /opt/metabase/metabase.jar
User=metabase
Type=simple
Restart=on-failure
RestartSec=10
Environment=MB_DB_TYPE=mysql
Environment=MB_DB_DBNAME=metabase
Environment=MB_DB_PORT=3306
Environment=MB_DB_USER=metabase
Environment=MB_DB_PASS=your_secure_password
Environment=MB_DB_HOST=127.0.0.1

[Install]
WantedBy=multi-user.target

Пояснение: переменные Environment задают подключение Metabase к MariaDB. В продакшене разумнее хранить секреты в защищённом хранилище или использовать системные механизмы (systemd секреты, vault и т.п.).

Перезагрузите демона systemd и запустите сервис:

systemctl daemon-reload
systemctl start metabase
systemctl enable metabase
systemctl status metabase

Метabase по умолчанию будет слушать порт 3000. Проверка порта:

ss -tunelp | grep 3000

Если все в порядке — сервис должен быть active (running).

5. Настройка Nginx как обратного прокси

Установка Nginx:

apt-get install nginx -y

Создайте файл конфигурации виртуального хоста /etc/nginx/sites-available/metabase.conf. В этом примере показана корректная и безопасная конфигурация с проксированием WebSocket и заголовками X-Forwarded:

upstream metabase {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name metabase.linuxbuz.com;

    access_log /var/log/nginx/metabase.linuxbuz.com-access.log;
    error_log /var/log/nginx/metabase.linuxbuz.com-error.log;

    location / {
        proxy_pass http://metabase/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Замечания:

  • Исправлены заголовки X-Forwarded-For и X-Forwarded-Proto (в оригинале были опечатки).
  • $host и $scheme используются вместо устаревших $http_host/$proxy_set_header X-Forward-Proto.

Активируем конфигурацию и проверим Nginx:

ln -s /etc/nginx/sites-available/metabase.conf /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Проверьте, что Nginx успешно проксирует запросы на порт 3000.

6. Получение и настройка SSL через Let’s Encrypt (Certbot)

Установите Certbot для интеграции с Nginx:

apt-get install python3-certbot-nginx -y

Запустите certbot для домена:

certbot --nginx -d metabase.linuxbuz.com

Во время процесса вас попросят указать email и согласиться с условиями. Certbot автоматически обновит конфигурацию Nginx, если вы выберете перенаправление с HTTP на HTTPS.

Рекомендации по безопасности и резервному копированию:

  • Скопируйте /etc/letsencrypt в безопасное место или создавайте резервные копии конфигурации сервера.
  • Регулярно тестируйте автоматическое обновление сертификатов командой:
certbot renew --dry-run

Если всё прошло успешно, сайт станет доступен по HTTPS.

7. Доступ к веб‑интерфейсу Metabase

Откройте в браузере https://metabase.linuxbuz.com — вы увидите экран приветствия. Примеры экранов (альтернативные изображения с примерами интерфейса):

Стартовый экран Metabase

Нажмите “Let’s get started” и следуйте шагам: выбор языка, создание администратора, подключение внешних баз данных (через JDBC), настройка предпочтений об отправке анонимной статистики.

Выбор языка интерфейса Metabase

Форма создания пользователя и входа в Metabase

Экран добавления базы данных в Metabase

Настройка JDBC-подключения в Metabase

Настройки отправки статистики использования

Завершение установки Metabase

Пример дашборда Metabase

Практические рекомендации и варианты (дополнительно)

Альтернативные подходы

  • Docker / Docker Compose: разворачивать Metabase в контейнере проще для изоляции и обновлений. Официальный образ: metabase/metabase.
  • Использовать PostgreSQL вместо MariaDB: PostgreSQL часто предпочтительнее для продакшена и хорошо поддерживается Metabase.
  • Хостинг-managed: можно использовать хостинг Metabase Cloud или управляемые контейнерные сервисы.

Когда этот метод может не подойти

  • Если у вас многопользовательская высоконагруженная среда, один JAR-процесс может быть ограничением — рассмотрите кластеризацию, балансировку и репликацию баз данных.
  • Для критичных сред рекомендуется использовать загрузку JVM через systemd с ограничениями памяти и мониторингом.

Ментальные модели (правило «Reverse Proxy + App + DB»)

  • Обратный прокси (Nginx): отвечает за SSL, маршрутизацию и заголовки.
  • Приложение (Metabase): выполняет BI-логику, слушает порт 3000.
  • База данных (MariaDB/Postgres): хранит метаданные и служит как источник данных.

Понимание этих трёх уровней помогает быстрее диагностировать проблемы.

Чеклист по безопасности (администратору)

  • Запустить mysql_secure_installation и убрать анонимных пользователей.
  • Хранить пароли в менеджере секретов (Vault, AWS Secrets Manager и т.д.).
  • Настроить UFW: разрешить 22,80,443; закрыть 3000 от внешнего доступа:
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
  • Регулярно выполнять certbot renew –dry-run и мониторить cron.
  • Бэкапить /etc/letsencrypt и базу metabase.
  • Ограничить доступ к метаданным БД по IP или сокетам.

Роли и обязанности (кратко)

  • Системный администратор: установка ОС, брандмауэр, Nginx, Certbot, бэкапы.
  • DBA: настройка и резервное копирование MariaDB/Postgres, мониторинг производительности.
  • BI‑аналитик: настройка источников данных, создание карточек/дашбордов.
  • Безопасность: ревью SSL, управление секретами и контроль доступа.

Обновления Metabase — SOP (минимальный процесс)

  1. Сделать полный бэкап базы metabase и файлов конфигурации.
  2. Протестировать обновление на staging (копия данных или тестовые данные).
  3. Остановить systemd-сервис: systemctl stop metabase.
  4. Заменить metabase.jar на новую версию в /opt/metabase.
  5. Запустить service и проверить логи: journalctl -u metabase -f.
  6. Тестировать функциональность в веб-интерфейсе.

Критерии приёмки

  • Metabase доступен по HTTPS и сертификат валиден.
  • Веб-интерфейс загружается и можно войти под админом.
  • Источники данных подключаются и запросы возвращают ожидаемые данные.
  • Автоматическое обновление сертификата проходит успешно (dry-run).

Типичные ошибки и как их исправить

  • Проблема: Metabase не стартует. Действия: посмотреть systemctl status metabase и journalctl -u metabase -b; проверить права на /opt/metabase; убедиться, что Java установлена.
  • Проблема: Nginx возвращает 502. Действия: проверить, слушает ли Metabase 127.0.0.1:3000, проверить лог /var/log/nginx/* и журнал Metabase.
  • Проблема: Certbot не может выполнить challenge. Действия: убедиться, что DNS указывает на сервер, порт 80 открыт и Nginx отвечает на запросы.

Резервное копирование и восстановление

  • Бэкап базы metabase:
mysqldump -u root -p metabase > metabase-backup.sql
  • Восстановление:
mysql -u root -p metabase < metabase-backup.sql
  • Бэкап сертификатов:
cp -a /etc/letsencrypt /root/letsencrypt-backup

Короткий словарь (1 строка)

  • systemd: менеджер сервисов Linux; Certbot: клиент Let’s Encrypt; UFW: упрощённый интерфейс брандмауэра.

Заключение

Вы успешно развернули Metabase на Ubuntu 20.04, настроили MariaDB, systemd-сервис, Nginx как обратный прокси и защитили доступ сертификатом Let’s Encrypt. В продакшене уделите внимание секретам, мониторингу, бэкапам и тестированию обновлений.

Важно: всегда тестируйте значимые изменения на staging перед применением в продакшене.

Короткое резюме действий:

  • Установили Java, MariaDB.
  • Скачали Metabase, настроили systemd.
  • Настроили Nginx и получили SSL через Certbot.
  • Дали рекомендации по безопасности и обновлениям.

Примечание: если нужно руководство по развёртыванию через Docker Compose или пример конфигурации для PostgreSQL, напишите, и я подготовлю отдельный сценарий.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро