You can support us by downloading this article as PDF from the Link below. Download the guide as PDF

In this guide, I’ll show you how to Install Metabase with Systemd on Ubuntu 20.04/18.04/16.04. Metabase is a simple and powerful analytics tool which lets you learn and make decisions from your company’s data without any technical knowledge required.

To run the Metabase jar file you need to have Java installed on your system. Currently, Metabase requires Java 8 or higher and will work on either the OpenJDK or Oracle JDK.

For Debian: Install Metabase with Systemd on Debian

Step 1: Install  Java on Ubuntu 20.04/18.04/16.04

As of this writing, Metabase will run on Java version 8 and 11. Install Java on Ubuntu by running the command below:

Installing Java 11:

sudo apt -y install openjdk-11-jdk openjdk-11-jre

Installing Java 8:

sudo apt -y install openjdk-8-jdk openjdk-8-jre

When prompted to accept the license agreement, answer “yes”

Verify that Java is installed and working.

--- Java 11 ---
$ java -version
$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

--- Java 8 ---
$ java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

Step 2: Install and Configure the Database server ( MariaDB)

You can skip this step if you have a datastore for Metabase already configured.

I had written a guide on how to install the MariaDB database server on Ubuntu

Install MariaDB 10.x on Ubuntu 18.04 and CentOS 7

Install MariaDB on Ubuntu 20.04

Follow the steps in the link to get a running database server in minutes. When done, create a database for your Metabase like below

Login to MySQL shell as root user

$ sudo mysql -u root -p

Create a database and user with access privileges

CREATE DATABASE metabase;
GRANT ALL PRIVILEGES ON metabase.* TO 'metabase'@'localhost' IDENTIFIED BY "StrongPassword";
FLUSH PRIVILEGES;
QUIT

If the database server is remote, assign privilege to a user at specific IP address, e.g

'metabase'@'192.168.0.20'

Or allow access from any IP – Not recommended for a server with public access.

'metabase'@'%'

Step 3: Install Metabase

Download Metabase and save it on the path where you want the application to run from.

export VER=0.35.3
wget http://downloads.metabase.com/v${VER}/metabase.jar
sudo mkdir -p /apps/java
sudo cp metabase.jar /apps/java

The most basic way of running Metabase to use the javacommand to launch the application.

$ java -jar metabase.jar
01-14 21:24:56 DEBUG plugins.classloader :: Using NEWLY CREATED classloader as shared context classloader: [email protected]
01-14 21:24:57 INFO metabase.util :: Loading Metabase...
01-14 21:24:57 INFO metabase.util :: Maximum memory available to JVM: 483.4 MB
01-14 21:25:01 INFO util.encryption :: Saved credentials encryption is DISABLED for this Metabase instance. 🔓 
 For more information, see https://metabase.com/docs/latest/operations-guide/encrypting-database-details-at-rest.html
.....

This will start the Metabase application using all of the default settings.

Step 4: Configure Metabase Systemd service

The best way to run Metabase is using Systemd init system available on both Ubuntu 18.04 and Ubuntu 16.04 LTS. A separate guide on running Java applications with systemd is available on our blog.

How to run Java Jar Application with Systemd on Linux

For the sake of simplicity, I’ll do a specific systemd service file for metabase

Start by creating a system group for the user.

sudo groupadd -r appmgr

Next, we create a system user appmgr with the default group

sudo useradd -r -s /bin/false -g appmgr appmgr

Give this user ownership permission to the applications directory:

sudo chown -R appmgr:appmgr /apps/java

Create a systemd service unit file:

sudo nano /etc/systemd/system/metabase.service

Add the contents below to the file.

[Unit]
Description=Metabase applicaion service
Documentation=https://www.metabase.com/docs/latest

[Service]
WorkingDirectory=/apps/java
ExecStart=/usr/bin/java -Xms128m -Xmx256m -jar metabase.jar
User=appmgr
Type=simple
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Set your values for maximum and minimum memory allowed for the Java application ( -Xms128m and -Xmx256m ) in my case

The next thing to do is start the application service, but first, reload systemd so that it loads the new application added.

sudo systemctl daemon-reload

Once reloaded, start the service and set it to start on boot:

sudo systemctl start metabase.service
sudo systemctl enable metabase.service

To check the status, use:

sudo systemctl status metabase

Step 4: Access Metabase Web User Interface

After the service is started, Metabase server will listen on port 3000 by default.

$ ss -tunelp | grep 3000
tcp LISTEN 0 50 *:3000 *:* users:(("java",pid=14386,fd=18)) uid:998 ino:85041 sk:a v6only:0 <->

Access the web page to finish setup using http://<serverip>:3000

Click “Let’s get started” button to start the setup. On the next page, create a user to manage Metabase

Provide info about your MySQL database – username and password. If you don’t have that right now, Metabase also comes with a sample dataset you can get started with.

You need to feed your data to the database configured above. Metabase will check for data there. Once you finish the setup, you’ll get access to Metabase Administration panel

See the Metabase getting Started page to start adding Dataset and playing with your data. Also, visit Official metabase documentation for detailed setup and administration.

Also check:

How to Install Latest phpMyAdmin on Ubuntu / Debian

How to Install ArangoDB on Ubuntu

Install Dgraph on CentOS 7 / Ubuntu 18.04

You can support us by downloading this article as PDF from the Link below. Download the guide as PDF