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