Cómo instalar Metabase Business Analytics en Ubuntu 20.04 LTS

Metabase es una herramienta de inteligencia empresarial gratuita y de código abierto que puede utilizarse para buscar conjuntos de datos y mostrar información. Es una herramienta de análisis sencilla y potente que te ayuda a aprender de los datos de tu empresa sin necesidad de conocimientos técnicos. Te permite generar gráficos y cuadros de mando, hacer consultas sin usar SQL y ver información detallada sobre las filas de tu base de datos.

Metabase es la opción adecuada para ti si buscas una plataforma de consulta de bases de datos de alto rendimiento para tu empresa.

En este tutorial, explicaremos cómo instalar Metabase en Ubuntu 20.04 con Nginx y Let’s Encrypt SSL.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada el servidor.

Instalar Java

Metabase es una aplicación basada en Java. Por tanto, Java debe estar instalado en tu servidor. Puedes instalarlo con el siguiente comando:

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

Una vez instalada con éxito, puedes verificar la versión de Java con el siguiente comando:

java -version

Deberías ver la siguiente salida:

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)

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar MariaDB

A continuación, tendrás que instalar el servidor de bases de datos MariaDB en tu sistema. Puedes instalarlo ejecutando el siguiente comando:

apt-get install mariadb-server -y

Una vez instalado el servidor MariaDB, entra en el shell de MariaDB con el siguiente comando:

mysql

Una vez iniciada la sesión, crea una base de datos y un usuario para Metabase con el siguiente comando:

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

A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:

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

Una vez que hayas terminado, puedes pasar al siguiente paso.

Descargar Metabase

Primero, crea un directorio para Metabase dentro del directorio /opt con el siguiente comando:

mkdir /opt/metabase

A continuación, cambia el directorio a /opt/metabase y descarga la última versión de Metabase con el siguiente comando:

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

A continuación, tendrás que crear un usuario y un grupo distintos para ejecutar Metabase. Puedes crearlos con el siguiente comando:

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

A continuación, cambia la propiedad de /opt/metabase a metabase y dale el permiso adecuado con el siguiente comando:

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

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un archivo de servicio Systemd para Metabase

A continuación, tendrás que crear un archivo de servicio systemd para gestionar el servicio Metabase. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/metabase.service

Añade las siguientes líneas:

[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

Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Metabase y permite que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start metabase
systemctl enable metabase

Ahora puedes verificar el estado de Metabase con el siguiente comando:

systemctl status metabase

Deberías ver la siguiente salida:

? 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

En este punto, Metabase está iniciada y escuchando en el puerto 3000. Puedes comprobarlo con el siguiente comando:

netstat -tunelp | grep 3000

Deberías ver la siguiente salida:

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

Configurar Nginx como proxy inverso para Metabase

A continuación, tendrás que configurar Nginx como proxy inverso para Metabase. Primero, instala el servidor web Nginx con el siguiente comando:

apt-get install nginx -y

Después de instalar Nginx, crea un nuevo archivo de configuración del host virtual Nginx con el siguiente comando:

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

Añade las siguientes líneas:

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;
    }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, activa el host virtual Nginx con el siguiente comando:

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

A continuación, comprueba si Nginx tiene algún error de configuración con el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

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

Por último, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

En este punto, Nginx está configurado para servir a Metabase en el puerto 80. Ahora puedes pasar al siguiente paso.

Asegurar Metabase con Let’s Encrypt

En primer lugar, tendrás que instalar el cliente Certbot Lets Encrypt para instalar y gestionar el SSL de tu dominio. Puedes instalar el cliente Certbot con el siguiente comando:

apt-get install python3-certbot-nginx -y

Una vez instalado, asegura el sitio web de Metabase con Let’s Encrypt SSL con el siguiente comando:

certbot --nginx -d metabase.linuxbuz.com

Se te pedirá que proporciones tu correo electrónico y que aceptes las condiciones del servicio, como se muestra a continuación:

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

A continuación, elige si quieres redirigir el tráfico HTTP a HTTPS como se muestra a continuación:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 y pulsa Enter para instalar el SSL de Let’s Encrypt para tu dominio.

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.

Ahora, tu sitio web de Metabase está protegido con Let’s Encrypt SSL.

Accede a la interfaz web de Metabase

Ahora, abre tu navegador web y escribe la URL https://metabase.linuxbuz.com. Serás redirigido a la pantalla de bienvenida de Metabase como se muestra a continuación:

Empecemos con la Metabase

Ahora, haz clic en el botón Comencemos. Deberías ver la siguiente pantalla:

Selecciona el idioma

Selecciona el idioma que desees y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Usuario e inicio de sesión

Proporciona tu nombre, dirección de correo electrónico, contraseña y haz clic en el botón Siguiente. Deberías ver la pantalla de configuración de la base de datos Metabase:

Detalles de la base de datos

Conexión JDBC

Proporciona la información de tu base de datos y haz clic en el botón Siguiente. Deberías ver la pantalla de preferencias de uso de los datos de Metabase:

Preferencias de uso

Activa la opción que desees y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Configuración terminada

Proporciona tu dirección de correo electrónico y haz clic en el botón Llévame a Metabase. Deberías ver el tablero de Metabase en la siguiente pantalla:

Cuadro de mando de la Metabase

Conclusión

Enhorabuena! has instalado con éxito Metabase con Nginx y Let’s Encrypt SSL en el servidor Ubuntu 20.04. Ahora puedes explorar la Metabase en busca de nuevas funciones. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...