Metabase

Installation

Metabase x.44+ benötigt Java 11 oder höher. Wer Metabase wie hier beschrieben mit MariaDB/MySQL statt H2 als Backend einsetzt, benötigt MariaDB 10.2.2+/MySQL 5.7.7+.

dnf -y install java-11-openjdk

# for excel export:
dnf -y install freetype fontconfig dejavu-sans-fonts

alternatives --config java

Metabase installieren:

VER=0.49.25
mkdir -p /opt/metabase
useradd metabase --home-dir=/opt/metabase --shell=/sbin/nologin --no-create-home
wget http://downloads.metabase.com/v$VER/metabase.jar --output-document=/opt/metabase/metabase.$VER.jar
ln -s /opt/metabase/metabase.$VER.jar /opt/metabase/metabase.jar
chown -R metabase:metabase /opt/metabase
restorecon -Fvr /opt/metabase

Datenbank für Metabase anlegen. Bei MariaDB (siehe https://www.metabase.com/docs/latest/installation-and-operation/configuring-application-database#mysql-or-mariadb):

create database metabase character set utf8mb4 collate utf8mb4_unicode_ci;

Metabase-Benutzer in der Zieldatenbank anlegen. Bei MariaDB:

grant all privileges on metabase.* to 'metabase'@'localhost' identified by 'linuxfabrik';

Unit-File:

/etc/systemd/system/metabase.service
[Unit]
Description=Metabase
Requires=network.target
After=multi-user.target columnstore.service

[Service]
Type=simple
WorkingDirectory=/opt/metabase
ExecStart=/usr/bin/java -Xmx8g -jar metabase.jar
User=metabase
Environment="MB_DB_TYPE=mysql"
Environment="MB_DB_DBNAME=metabase"
Environment="MB_DB_PORT=3306"
Environment="MB_DB_USER=metabase"
Environment="MB_DB_PASS=linuxfabrik"
Environment="MB_DB_HOST=localhost"

[Install]
WantedBy=default.target
systemctl daemon-reload
systemctl enable --now metabase

Aufruf mit http://metabase:3000.

Metabase konfigurieren

In Metabase:

  • Usage data preferences: abschalten

Settings (Gear-Icon) > Admin > Settings

  • General: Site Name = My Metabase, Timezone = Europe/Berlin, Friendly table and field names = Only replace with spaces

  • Email: Zugangsdaten für einen noreply-Account verwenden

  • Maps: Add a Map > https://www.example.cm/schweizer-kantone.geojson, Schweizer Kantone

  • Formatting: 2018/1/7, YYYY-M-D, Time style = 24h, Number = 100 000,00; Unit of Currency = Swiss Franc

People

  • User anlegen

Databases

  • MyDatabase: Sync database schema now, Re-scan field values now

Data Model > MyDatabase

  • Felder nach dem Sync schöner benennen

  • richtigen Datentyp (das meiste ist tatsächlich „Category“) wählen

Nun im Admin-Bereich den Zugang auf die MyDatabase-DB einrichten.

Update

Metabase aktualisieren:

/usr/sbin/update-metabase.sh
#!/usr/bin/env bash

if [ -z "$1" ]; then
    echo "Usage: $0 <new.ver.sion>"
    exit 1
fi

VER=$1
wget http://downloads.metabase.com/v$VER/metabase.jar --output-document=/opt/metabase/metabase.$VER.jar
unlink /opt/metabase/metabase.jar
ln -s metabase.$VER.jar /opt/metabase/metabase.jar
systemctl restart metabase
echo "Done. Please check /var/log/messages"

Aufruf mit

./update-metabase 0.47.1

Troubleshooting

Nach Upgrade Reason: liquibase.exception.DatabaseException: (conn=164) Table 'data_permissions' already exists

Tabelle data_permissions löschen und Metabase erneut starten. Die Migrationsskripte sollten nun durchlaufen.

Migration einer Installation von A nach B

Bedeutet in der Realität, nur die Applikationsdatenbank (hier „metabase“) zu migrieren. Vor dem Start von Metabase auf dem neuen System die Environment-Variablen für den Zugang zur eigenen Datenbank setzen und Metabase manuell starten, um auftretende Fehler zu sehen. Bei MariaDB darauf achten, dass lower_case_table_names identisch zum vorherigen Server gesetzt ist.

export MB_DB_AUTOMIGRATE=false  # only if you want to do DB upgrades manually

export MB_DB_TYPE=mysql
export MB_DB_DBNAME=metabase
export MB_DB_PORT=3306
export MB_DB_USER=metabse
export MB_DB_PASS=linuxfabrik
export MB_DB_HOST=localhost

cd /opt/metabase/
/usr/bin/java -Xmx8g -jar metabase.jar

Built on 2024-11-18