Metabase Business Analytics installeren op Ubuntu 20.04 LTS

Metabase is een gratis en open bron programma voor bedrijfsinformatie dat gebruikt kan worden om gegevensreeksen te doorzoeken en informatie weer te geven. Het is een eenvoudig en krachtig analyse-instrument dat je helpt te leren van de gegevens van je bedrijf zonder enige technische kennis. Je kunt er grafieken en dashboards mee genereren, queries stellen zonder SQL te gebruiken, en gedetailleerde informatie zien over rijen in je Database.

Metabase is de juiste keuze als je een hoog-performant platform voor het opzoeken van gegevens in je bedrijf zoekt.

In deze handleiding leggen we uit hoe je Metabase installeert op Ubuntu 20.04 met Nginx en Let’s Encrypt SSL.

Vereisten

  • Een server met Ubuntu 20.04.
  • Een geldige domeinnaam gericht met je server IP.
  • Een root wachtwoord is op de server geconfigureerd.

Installeer Java

Metabase is een op Java gebaseerde toepassing. Dus moet Java op je server geïnstalleerd zijn. Je kunt het installeren met het volgende commando:

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

Na succesvolle installatie kun je de Java versie verifiëren met het volgende commando:

java -version

Je zou de volgende uitvoer moeten zien:

openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer en configureer MariaDB

Vervolgens moet je de MariaDB databaseserver in je systeem installeren. Je kunt hem installeren door het volgende commando uit te voeren:

apt-get install mariadb-server -y

Zodra de MariaDB server geïnstalleerd is, log je in op de MariaDB shell met het volgende commando:

mysql

Eenmaal ingelogd, maak je een database en gebruiker voor Metabase met het volgende commando:

MariaDB [(none)]> CREATE DATABASE metabase;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON metabase.* TO 'metabase'@'localhost' IDENTIFIED BY "password";

Spoel vervolgens de privileges door en verlaat de MariaDB shell met het volgende commando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Als je klaar bent, kun je verder gaan met de volgende stap.

Download Metabase

Maak eerst een directory voor Metabase binnen de directory /opt met het volgende commando:

mkdir /opt/metabase

Verander de directory vervolgens in /opt/metabase en download de nieuwste versie van Metabase met het volgende commando:

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

Vervolgens moet je een aparte gebruiker en groep aanmaken om Metabase te draaien. Je kunt ze aanmaken met het volgende commando:

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

Verander vervolgens het eigendom van de /opt/metabase in metabase en geef de juiste toestemming met het volgende commando:

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

Als je klaar bent, kun je verder gaan met de volgende stap.

Maak een Systemd Service bestand voor Metabase

Vervolgens moet je een systemd dienstbestand aanmaken om de dienst Metabase te beheren. Je kunt het aanmaken met het volgende commando:

nano /etc/systemd/system/metabase.service

Voeg de volgende regels toe:

[Unit]
Description=Metabase server

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

[Install]
WantedBy=multi-user.target

Bewaar en sluit het bestand en herlaad dan de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens de Metabase dienst en schakel hem in om te starten bij het herstarten van het systeem met het volgende commando:

systemctl start metabase
systemctl enable metabase

Je kunt nu de status van Metabase controleren met het volgende commando:

systemctl status metabase

Je zou de volgende uitvoer moeten zien:

? metabase.service - Metabase server
     Loaded: loaded (/etc/systemd/system/metabase.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-08-01 10:14:02 UTC; 12s ago
   Main PID: 9650 (java)
      Tasks: 18 (limit: 2353)
     Memory: 150.2M
     CGroup: /system.slice/metabase.service
             ??9650 /usr/bin/java -jar /opt/metabase/metabase.jar

Aug 01 10:14:02 ubuntu2004 systemd[1]: Started Metabase server.
Aug 01 10:14:05 ubuntu2004 java[9650]: 08-01 10:14:05 INFO metabase.util :: Loading Metabase...
Aug 01 10:14:06 ubuntu2004 java[9650]: 08-01 10:14:06 INFO metabase.util :: Maximum memory available to JVM: 498.0 MB

Op dit moment is Metabase gestart en luistert op poort 3000. Je kunt dit controleren met het volgende commando:

netstat -tunelp | grep 3000

Je zou de volgende uitvoer moeten zien:

tcp6       0      0 :::3000                 :::*                    LISTEN      109        35366      9650/java

Configureer Nginx als omgekeerde proxy voor Metabase

Vervolgens moet je Nginx instellen als een omgekeerde proxy voor Metabase. Installeer eerst de Nginx webserver met het volgende commando:

apt-get install nginx -y

Maak na de installatie van Nginx een nieuw Nginx virtual host configuratiebestand aan met het volgende commando:

nano /etc/nginx/sites-available/metabase.conf

Voeg de volgende regels toe:

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 $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Sla het bestand op en sluit het als je klaar bent. Activeer dan de Nginx virtuele host met het volgende commando:

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

Controleer vervolgens de Nginx op eventuele configuratiefouten met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Herstart tenslotte de Nginx dienst om de veranderingen toe te passen:

systemctl restart nginx

Op dit punt is Nginx geconfigureerd om Metabase op poort 80 te serveren. Je kunt nu verder gaan met de volgende stap.

Beveilig Metabase met Let’s Encrypt

Eerst moet je het Certbot Lets Encrypt programma installeren om SSL voor je domein te installeren en beheren. Je kunt de Certbot client installeren met het volgende commando:

apt-get install python3-certbot-nginx -y

Eenmaal geïnstalleerd, beveilig je de Metabase website met Let’s Encrypt SSL met het volgende commando:

certbot --nginx -d metabase.linuxbuz.com

Je wordt gevraagd je e-mail op te geven en de servicevoorwaarden te accepteren zoals hieronder:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for metabase.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/metabase.conf

Kies vervolgens of je HTTP verkeer al dan niet wilt omleiden naar HTTPS zoals hieronder:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Tyep 2 en druk op Enter om de Let’s Encrypt SSL voor je domein te installeren.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/metabase.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://metabase.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=metabase.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/metabase.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/metabase.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Nu is je Metabase website beveiligd met Let’s Encrypt SSL.

Toegang tot de Metabase Web Interface

Open nu je web browser en typ de URL https://metabase.linuxbuz.com. Je wordt doorverwezen naar het Metabase welkomstscherm zoals hieronder:

Laten we aan de slag gaan met Metabase

Klik nu op de Let ’s get started knop. Je zou het volgende scherm moeten zien:

Kies Taal

Kies de gewenste taal en klik op de Next knop. Je zou het volgende scherm moeten zien:

Gebruiker en inloggen

Geef je naam, emailadres en wachtwoord op en klik op de Next knop. Je zou nu het Metabase database configuratie scherm moeten zien:

Gegevensbestand

JDBC Verbinding

Geef je database gegevens op en klik op de knop Volgende. Je zou het Metabase gebruiksgegevens voorkeuren scherm moeten zien:

Voorkeuren voor gebruik

Schakel de gewenste optie in en klik op de knop Volgende. Je zou het volgende scherm moeten zien:

Setup voltooid

Geef je email adres op en klik op de knop Breng me naar Metabase. Je zou het Metabase dashboard moeten zien in het volgende scherm:

Metabase dashboard

Conclusie

Gefeliciteerd! Je hebt Metabase met succes geïnstalleerd met Nginx en Let’s Encrypt SSL op Ubuntu 20.04 server. Je kunt nu de Metabase verkennen op nieuwe mogelijkheden. Voel je vrij me te vragen als je vragen hebt.