После создания сервера Metabase разворачивается сама: Docker Compose поднимает два контейнера - само приложение и отдельную базу PostgreSQL под его вопросы, дашборды и учетные записи (без нее данные хранились бы в файле внутри контейнера и терялись при пересборке), Caddy отдельным контейнером выпускает Let's Encrypt и открывает доступ по HTTPS на magic-DNS домене. Первый старт занимает около трех минут - идут миграции пустой базы приложения, порт молчит без единой строки в логе, это нормально, не зависание.

Что внутри

  • Metabase (Clojure, JVM) - единственное приложение: подключения к базам, конструктор вопросов без SQL, SQL-редактор, дашборды, рассылки по расписанию, встроенный ИИ-помощник Metabot.
  • PostgreSQL - база приложения (НЕ та, по которой строятся отчеты): вопросы, дашборды, учетные записи, сохраненные подключения к вашим базам.
  • Caddy - reverse-proxy и авто-TLS (Let's Encrypt), отдельный контейнер. Metabase слушает только localhost.

ИИ-помощник

Metabot отвечает на вопросы о данных текстом и пишет SQL за вас - нужен только ключ провайдера моделей на ваш выбор, впишите его в Админка -> Настройки -> ИИ после первого входа. Обращения к провайдеру уже идут через прокси Fatmetal к внешним API - он включен в сервер, отдельно настраивать не нужно.

Безопасность

  • Администратора заводит установка сама - мастер настройки пройден заранее, посторонний не станет администратором, даже открыв адрес первым.
  • Пароль администратора - свой, не пароль сервера: Metabase требует в пароле цифру, а формат пароля сервера мы не контролируем. Пароль - в файле кредов на сервере (само письмо о готовности его не содержит, только адрес файла).
  • Ядро под лицензией AGPL-3.0 (self-host). Функции из коммерческой сборки (SSO, SAML, права на строки, аудит) сюда не входят - подробности в разборе.
  • HTTPS с автопродлением (Let's Encrypt) через Caddy.

Как войти

  1. Адрес формируется из IP сервера: замените точки на дефисы и добавьте .fatmetal.net.
  2. Администратор уже заведен, пароль - свой, не пароль сервера: логин и пароль смотрите в файле кредов на сервере (/root/metabase-credentials.txt) - письмо о готовности на сам пароль не показывает, только путь к файлу.
  3. Смените пароль сразу: значок профиля -> Настройки аккаунта. Дальше подключите свою базу данных отдельным пользователем ТОЛЬКО НА ЧТЕНИЕ - Metabase ее не меняет и не хранит, только спрашивает и показывает ответ.

Свой домен

Наведите A-запись на IP этого сервера, впишите домен в DOMAIN= (/etc/metabase-mp/params.env) и запустите bash /opt/metabase-mp/install.sh еще раз - скрипт идемпотентен, перевыпустит TLS под новый домен.

Требования

Java-стек: в простое приложение с базой держат около 1,3 ГБ RAM, образы - около 2,5 ГБ на двоих. Под нагрузкой упирается процессор, не память: на четырех параллельных запросах занято 1,3 ядра из двух - расти нужно ядрами, а не гигабайтами. Данные растут медленно: 745 байт на выполненный вопрос, это около 260 МБ в год при тысяче вопросов в день, диска хватает надолго. Тариф CPU2-RAM4-DISK50.

Подробный разбор с замерами и границей бесплатной версии