Cómo instalar Metabase en Ubuntu 20.04 con Docker

Introducción
Metabase es una herramienta de inteligencia empresarial (BI) de código abierto basada en Java. Puede conectarse a varias bases de datos diferentes y tiene una herramienta de creación de preguntas que puede ocultar la complejidad de consultas SQL de gran tamaño.
En este tutorial, instalará Metabase con Docker Compose y, luego, instalará Nginx para que actúe como un proxy inverso para su sitio Metabase. A continuación, habilitará conexiones HTTPS seguras mediante Certbot para descargar y configurar un certificado TLS de la autoridad de certificación Let’s Encrypt . Por último, configurará Metabase y cargará algunos datos de muestra para que pueda experimentar con la creación de sus propias preguntas y paneles de BI.
Prerrequisitos
Para completar este tutorial, necesitarás:
- Un servidor Ubuntu 20.04 con 2 o más CPU, un usuario no root con acceso sudo y un firewall. Para configurarlo, siga nuestro tutorial Configuración inicial del servidor con Ubuntu 20.04 .
- Docker instalado. Siga los pasos 1 y 2 de Cómo instalar y usar Docker en Ubuntu 20.04 para instalarlo y configurar su usuario no root para que pueda ejecutar
docker
comandos.
Nota: Puede omitir estos requisitos previos si utiliza la imagen de Docker con un solo clic de DigitalOcean . Esta imagen está preconfigurada con Docker, Docker Compose y UFW.
Inicie una nueva imagen de Docker en la región que elija, luego inicie sesión como usuario root y continúe con el tutorial.
Por último, para habilitar TLS, necesitará un nombre de dominio que apunte a la dirección IP pública de su servidor. Debería ser algo como example.com
o metabase.example.com
. Si utiliza DigitalOcean, consulte nuestra Guía de inicio rápido de DNS para obtener información sobre cómo crear recursos de dominio en su panel de control.
Una vez que tenga todos los requisitos previos establecidos, continúe con el Paso 1 , donde instalará el docker-compose
paquete.
Paso 1: Instalación de Docker Compose
Para instalar la docker-compose
herramienta de línea de comandos, primero actualice su lista de paquetes:
- sudo apt update
Luego instale el paquete usando apt
:
- sudo apt install docker-compose
Nota : También puedes instalar un paquete de Docker Compose más reciente que el que viene incluido con Ubuntu 20.04. Para ello, sigue el Paso 1 de Cómo instalar y usar Docker Compose en Ubuntu 20.04 .
Si opta por utilizar esta versión de Docker Compose, deberá sustituir docker compose
el comando en lugar de docker-compose
en toda esta guía.
Puede confirmar que el paquete está instalado ejecutando el siguiente comando:
- docker-compose --version
Debería recibir un resultado como el siguiente:
Outputdocker-compose version 1.25.0, build unknowndocker-py version: 4.1.0CPython version: 3.8.10
Una vez que haya confirmado que Docker Compose está instalado en su servidor, lo usará para configurar e iniciar Metabase en el siguiente paso de este tutorial.
Paso 2: Ejecutar Metabase con Docker Compose
Para comenzar a crear el contenedor de Metabase, cree un directorio llamado metabase
en su directorio de inicio para almacenar los archivos que creará en este tutorial. Utilizará este directorio para almacenar todos los archivos que necesita para ejecutar Metabase.
Ejecute el siguiente comando para crear el directorio:
- mkdir ~/metabase
Luego navega hacia él:
- cd ~/metabase
Ahora abra un nuevo archivo YAML en blanco llamado docker-compose.yml
using nano
o su editor preferido:
- nano docker-compose.yml
Utilizará este archivo con el docker-compose
comando para iniciar el contenedor de Metabase. Agregue las siguientes líneas al archivo:
docker-compose.yml
version: '3'services: metabase: image: metabase/metabase:latest ports: - "127.0.0.1:3000:3000" volumes: - data:/metabasevolumes: data:
El archivo define un service
llamado metabase
, que ejecuta la aplicación Metabase. El servicio también hace referencia a un volumen con nombre, que utiliza para almacenar datos fuera de la instancia del contenedor en ejecución. Por último, el metabase
servicio expone el puerto 3000
en su servidor al contenedor Metabase que se ejecuta en el mismo puerto 3000
.
Guarde y salga del archivo cuando haya terminado de editarlo. Si está utilizando nano
, presione CTRL+O
y luego RETURN
para guardar y luego CTRL+X
para salir.
Ahora está listo para iniciar el metabase
contenedor con el docker-compose
comando:
- docker-compose up -d
El up
subcomando indica docker-compose
que se debe iniciar el contenedor y los volúmenes y redes asociados que están definidos en el docker-compose.yml
archivo. El -d
indicador (que significa “daemonize”) indica docker-compose
que se debe ejecutar el contenedor en segundo plano para que el comando no tome el control de la terminal. docker-compose
imprimirá una breve salida mientras descarga la imagen de Docker requerida y luego inicia el contenedor:
OutputCreating network "metabase_default" with the default driverCreating volume "metabase_data" with default driverPulling metabase (metabase/metabase:latest)...latest: Pulling from metabase/metabase. . .
Si desea detener su contenedor Metabase en cualquier momento, ejecute el siguiente comando en su ~/Metabase
directorio:
- docker-compose stop
El contenedor se detendrá. La configuración y los datos del volumen se conservarán para que puedas iniciar el contenedor nuevamente con el docker-compose up -d
comando.
Una vez hecho esto, Metabase debería estar ejecutándose. Puede comprobar si un servidor web está ejecutándose 127.0.0.1:3000
recuperando la página de inicio con el curl
comando:
- curl --head http://localhost:3000
Esto imprimirá solo los encabezados HTTP de la respuesta:
OutputHTTP/1.1 200 OKDate: Tue, 15 Mar 2022 19:26:22 GMTX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockLast-Modified: Tue, 15 Mar 2022 19:26:22 GMTStrict-Transport-Security: max-age=31536000Set-Cookie: metabase.DEVICE=3525ed6d-13e0-4ad0-8fdb-f1bc426706dc;HttpOnly;Path=/;Expires=Sat, 15 Mar 2042 19:26:22 GMT;SameSite=LaxX-Permitted-Cross-Domain-Policies: noneCache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidateX-Content-Type-Options: nosniffContent-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-eval' https://maps.google.com https://apis.google.com https://*.googleapis.com *.gstatic.com https://www.google-analytics.com 'sha256-lMAh4yjVuDkQ9NqkK4H+YHUga+anpFs5JAuj/uZh0Rs=' 'sha256-ib2/2v5zC6gGM6Ety7iYgBUvpy/caRX9xV/pzzV7hf0=' 'sha256-JJa56hyDfUbgNfq+0nq6Qs866JKgZ/+qCq2pkDJED8k='; child-src 'self' https://accounts.google.com; style-src 'self' 'unsafe-inline'; font-src 'self' ; img-src * 'self' data:; connect-src 'self' metabase.us10.list-manage.com www.google-analytics.com https://sp.metabase.com ; manifest-src 'self'; frame-ancestors 'none';Content-Type: text/html;charset=utf-8Expires: Tue, 03 Jul 2001 06:00:00 GMTContent-Length: 0Server: Jetty(9.4.43.v20210629)
La 200 OK
respuesta significa que una aplicación está respondiendo en el puerto 3000
. Los encabezados Set-Cookie
y Server
resaltados confirman que la aplicación Metabase se está ejecutando en el servidor web Jetty.
A continuación, configuraremos Nginx para redirigir el tráfico público al contenedor de Metabase.
Paso 3: Instalación y configuración de Nginx
Colocar un servidor web como Nginx delante de su servidor Metabase puede mejorar el rendimiento al descargar el almacenamiento en caché, la compresión y el servicio de archivos estáticos a un proceso más eficiente. Vamos a instalar Nginx y configurarlo para que envíe solicitudes a Metabase mediante proxy inverso , lo que significa que se encargará de gestionar las solicitudes de sus usuarios a Metabase y viceversa. El uso de un proceso Nginx no contenedorizado también facilitará la adición de certificados TLS Let’s Encrypt en el siguiente paso.
Primero, actualice su lista de paquetes, luego instale Nginx usando apt
:
- sudo apt install nginx
Permitir el tráfico público a los puertos (HTTP y HTTPS 80
) 443
utilizando el perfil de aplicación Nginx Full UFW:
- sudo ufw allow "Nginx Full"
OutputRule addedRule added (v6)
A continuación, abra un nuevo archivo de configuración de Nginx en el /etc/nginx/sites-available
directorio. Lo llamaremos así, metabase.conf
pero puede utilizar un nombre diferente:
- sudo nano /etc/nginx/sites-available/metabase.conf
Pegue lo siguiente en el nuevo archivo de configuración y asegúrese de reemplazarlo your_domain_here
por el dominio que ha configurado para apuntar a su servidor Metabase. Debería ser algo como metabase.example.com
, por ejemplo:
/etc/nginx/sites-available/metabase.conf
server { listen 80; listen [::]:80; server_name your_domain_here; access_log /var/log/nginx/metabase.access.log; error_log /var/log/nginx/metabase.error.log; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Proto https; proxy_pass http://localhost:3000; }}
Por ahora, esta configuración es solo para HTTP, ya que dejaremos que Certbot se encargue de configurar TLS en el siguiente paso. El resto del archivo de configuración establece las ubicaciones de registro y luego pasa todo el tráfico, así como algunos encabezados de proxy importantes, a http://localhost:3000
, el contenedor de Metabase que iniciamos en el paso anterior.
Guarde y cierre el archivo, luego habilite la configuración vinculándolo a /etc/nginx/sites-enabled/
:
- sudo ln -s /etc/nginx/sites-available/metabase.conf /etc/nginx/sites-enabled/
Utilice nginx -t
para verificar que la sintaxis del archivo de configuración sea correcta:
- sudo nginx -t
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Y por último, recarga el nginx
servicio con la nueva configuración:
- sudo systemctl reload nginx.service
Ahora, su sitio de Metabase debería estar disponible en HTTP simple. Cárguelo (es posible que tenga que hacer clic en una advertencia de seguridad) y se verá así:http://your_domain_here
Ahora que su sitio está funcionando a través de HTTP, es momento de asegurar la conexión con los certificados Certbot y Let’s Encrypt. Debe hacer esto antes de realizar el procedimiento de configuración basado en la web de Metabase.
Paso 4: Instalación de Certbot y configuración de certificados TLS
Gracias a Certbot y a la autoridad de certificación gratuita Let’s Encrypt, agregar el cifrado TLS a su aplicación Metabase solo requerirá dos comandos.
Primero, instale Certbot y su complemento Nginx:
- sudo apt install certbot python3-certbot-nginx
A continuación, ejecute certbot
el --nginx
modo y especifique el mismo dominio que utilizó en la server_name
directiva de configuración de Nginx:
- sudo certbot --nginx -d your_domain_here
Se le pedirá que acepte los términos de servicio de Let’s Encrypt y que ingrese una dirección de correo electrónico.
Luego, se te preguntará si deseas redirigir todo el tráfico HTTP a HTTPS. Depende de ti, pero en general es una opción recomendada y segura.
Después de eso, Let’s Encrypt confirmará tu solicitud y Certbot descargará tu certificado:
OutputCongratulations! You have successfully enabled https://metabase.example.comYou should test your configuration at:https://www.ssllabs.com/ssltest/analyze.html?d=metabase.example.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/metabase.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/metabase.example.com/privkey.pem Your cert will expire on 2022-05-09. 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
Certbot recargará automáticamente Nginx con la nueva configuración y los certificados. Recargue su sitio en su navegador y debería cambiarlo a HTTPS automáticamente si eligió la opción de redireccionamiento.
Su sitio ahora es seguro y puede continuar sin problemas con los pasos de configuración basados en la web.
Paso 5: Configuración de la metabase
De nuevo en el navegador web, vuelva a cargar la página. Ahora debería tener abierta la página de configuración de la base de datos de Metabase mediante una https://
conexión segura. Ahora puede completar el proceso de configuración haciendo clic en el botón Comenzar .
Se le pedirá que ingrese los siguientes detalles:
- ¿Cuál es tu idioma preferido? Si tu idioma está en la lista, selecciónalo y haz clic en Siguiente, como se muestra en la siguiente captura de pantalla:
- ¿Cómo queremos llamarte? Completa todos los campos y asegúrate de guardar tu contraseña en un lugar seguro.
- Agregue sus datos: haga clic en la opción Agregaré mis datos más tarde en la parte inferior del panel
-
Preferencias de datos de uso: elija si desea compartir datos de uso con Metabase para ayudar a mejorar la herramienta. Haga clic en Finalizar una vez que haya hecho su elección.
-
¡Ya está todo listo! Agrega tu dirección de correo electrónico si deseas recibir actualizaciones del proyecto Metabase; de lo contrario, puedes ignorar este campo.
Por último, haz clic en el botón Llévame a Metabase . Llegarás a una página que dice “Saludos, Sammy” en la parte superior, con un conjunto de rayos X preconfigurados en los que puedes hacer clic para explorar los datos de muestra que cargaste.
Haga clic en cualquier radiografía para ver detalles sobre la tabla en Metabase. Puede utilizar los controles de la página de radiografía para filtrar datos o explorar campos y tablas de bases de datos relacionados.
Cuando esté listo para intentar crear su propia pregunta (este es el término que Metabase utiliza para describir una consulta), haga clic en el ícono de la cuadrícula de datos Explorar en la parte superior derecha de su página. Luego, haga clic en el mosaico Base de datos de muestra y, luego, haga clic en una tabla de la lista. En este ejemplo, utilizaremos la tabla Revisiones .
Su pantalla se parecerá a la siguiente:
Ahora haga clic en el botón Resumir en la parte superior derecha de la página y cambie el campo Resumir por a Promedio de calificación . Metabase calculará este valor en función de los datos de la tabla en el campo Calificación. Cambie también el campo Agrupar por a Creado en , ya que este campo permitirá a Metabase calcular la calificación promedio del producto por mes en todos los productos y calificaciones de ejemplo.
Haga clic en el botón Listo en la parte inferior derecha y estará en una página que muestra un gráfico de calificaciones promedio de productos como la siguiente captura de pantalla:
Puede experimentar con los botones Filtro , Visualización y Configuración para cambiar el gráfico, los datos y las etiquetas en el gráfico resultante.
Conclusión
En este tutorial, inició la herramienta Metabase BI con Docker Compose, luego configuró un proxy inverso Nginx y lo protegió con certificados TLS de Let’s Encrypt. También agregó algunos datos de muestra y experimentó con la creación de sus propias preguntas en Metabase para consultar los datos.
Ahora está listo para comenzar a conectar Metabase a una base de datos externa para consultar sus propios datos. Metabase admite una variedad de fuentes de datos , incluidas bases de datos SQL tradicionales, así como motores de análisis y bases de datos orientadas a documentos.
Para obtener más información sobre el uso de Metabase, consulte la documentación oficial de Metabase .
Deja una respuesta