Instalación de Metabase para Inteligencia de Negocio

Metabase es una plataforma de business intelligence de código abierto que permite crear dashboards interactivos y explorar datos sin conocimientos avanzados de SQL. Con Metabase puedes conectar múltiples bases de datos, construir visualizaciones y compartir análisis con tu equipo en minutos. Esta guía cubre la instalación en Linux, configuración de conexiones a bases de datos y puesta en producción.

Requisitos Previos

  • Ubuntu 20.04/22.04, Debian 11+ o CentOS 8+/Rocky Linux 8+
  • Docker 20.10+ (para instalación con Docker) o Java 11+
  • 2 GB de RAM mínimo (4 GB recomendado para producción)
  • 2 vCPUs mínimo
  • Base de datos para Metabase: PostgreSQL 12+ (recomendado) o MySQL 8+
  • Puerto 3000 disponible

Instalación con Docker

Docker es la forma más sencilla de desplegar Metabase en producción.

# Crear red y volumen para persistencia
docker network create metabase-net
docker volume create metabase-data

# Crear base de datos PostgreSQL para Metabase
docker run -d \
  --name metabase-db \
  --network metabase-net \
  -e POSTGRES_DB=metabase \
  -e POSTGRES_USER=metabase \
  -e POSTGRES_PASSWORD=metabase_pass_segura \
  -v metabase-db-data:/var/lib/postgresql/data \
  postgres:15-alpine

# Esperar a que PostgreSQL esté listo
sleep 10

# Iniciar Metabase con PostgreSQL como base de datos de aplicación
docker run -d \
  --name metabase \
  --network metabase-net \
  -p 3000:3000 \
  -e MB_DB_TYPE=postgres \
  -e MB_DB_DBNAME=metabase \
  -e MB_DB_PORT=5432 \
  -e MB_DB_USER=metabase \
  -e MB_DB_PASS=metabase_pass_segura \
  -e MB_DB_HOST=metabase-db \
  -v metabase-data:/metabase-data \
  metabase/metabase:latest

Docker Compose

Crea el archivo docker-compose.yml:

version: "3.8"
services:
  metabase-db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: metabase
      POSTGRES_USER: metabase
      POSTGRES_PASSWORD: metabase_pass_segura
    volumes:
      - metabase-db-data:/var/lib/postgresql/data
    networks:
      - metabase-net

  metabase:
    image: metabase/metabase:latest
    ports:
      - "3000:3000"
    environment:
      MB_DB_TYPE: postgres
      MB_DB_DBNAME: metabase
      MB_DB_PORT: 5432
      MB_DB_USER: metabase
      MB_DB_PASS: metabase_pass_segura
      MB_DB_HOST: metabase-db
      MB_SITE_URL: https://metabase.tudominio.com
      MB_ENCRYPTION_SECRET_KEY: clave_aleatoria_32_caracteres
    volumes:
      - metabase-data:/metabase-data
    depends_on:
      - metabase-db
    networks:
      - metabase-net

volumes:
  metabase-db-data:
  metabase-data:

networks:
  metabase-net:
# Iniciar con Docker Compose
docker compose up -d

# Ver logs de inicio (puede tardar 1-2 minutos)
docker compose logs -f metabase

Instalación con JAR

Para instalaciones sin Docker en servidores con Java:

# Instalar Java 11
sudo apt update && sudo apt install -y openjdk-11-jre-headless  # Ubuntu/Debian
sudo dnf install -y java-11-openjdk-headless                     # CentOS/Rocky

# Verificar instalación de Java
java -version

# Crear usuario y directorio para Metabase
sudo useradd -r -s /bin/false metabase
sudo mkdir -p /opt/metabase
cd /opt/metabase

# Descargar la última versión
sudo wget -O metabase.jar https://downloads.metabase.com/latest/metabase.jar

# Ajustar permisos
sudo chown -R metabase:metabase /opt/metabase

Crear el servicio systemd:

sudo tee /etc/systemd/system/metabase.service > /dev/null <<EOF
[Unit]
Description=Metabase Business Intelligence
After=network.target

[Service]
Type=simple
User=metabase
WorkingDirectory=/opt/metabase
Environment="MB_DB_TYPE=postgres"
Environment="MB_DB_DBNAME=metabase"
Environment="MB_DB_PORT=5432"
Environment="MB_DB_USER=metabase"
Environment="MB_DB_PASS=metabase_pass_segura"
Environment="MB_DB_HOST=localhost"
Environment="MB_SITE_URL=https://metabase.tudominio.com"
ExecStart=/usr/bin/java -jar /opt/metabase/metabase.jar
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# Habilitar e iniciar el servicio
sudo systemctl daemon-reload
sudo systemctl enable metabase
sudo systemctl start metabase

# Verificar estado
sudo systemctl status metabase

Configuración Inicial

Accede a http://tu-ip:3000 en el navegador. Verás el asistente de configuración inicial:

  1. Selecciona tu idioma y haz clic en Siguiente
  2. Crea la cuenta de administrador con email y contraseña seguros
  3. Añade tu primera conexión a base de datos (o sáltala por ahora)
  4. Metabase generará datos de ejemplo para explorar

Conexión a Bases de Datos

Metabase soporta MySQL, PostgreSQL, MongoDB, Redshift, BigQuery, Snowflake y más.

# Verificar conectividad desde el servidor Metabase hacia tu base de datos
nc -zv host-base-datos 5432

En la interfaz web: Configuración → Bases de Datos → Añadir base de datos

Parámetros comunes para PostgreSQL:

  • Host: IP o hostname del servidor
  • Puerto: 5432
  • Nombre de la base de datos: nombre_db
  • Usuario y Contraseña
  • Habilitar SSL en producción

Para MySQL:

  • Puerto: 3306
  • Activar Usar un túnel SSH si la base de datos no es accesible directamente

Después de conectar, Metabase realiza un escaneo inicial de esquemas. Este proceso puede tardar varios minutos dependiendo del tamaño de la base de datos.

Creación de Dashboards

Crear una pregunta (query)

  1. Clic en + Nuevo → Pregunta
  2. Selecciona la base de datos y tabla origen
  3. Usa el Constructor de preguntas (modo visual) o cambia a SQL nativo
  4. Añade filtros, agrupaciones y métricas de forma visual
  5. Guarda la pregunta con un nombre descriptivo

Crear un dashboard

  1. Clic en + Nuevo → Dashboard
  2. Asigna un nombre y colección
  3. Añade preguntas guardadas con el botón +
  4. Redimensiona y reorganiza los widgets arrastrando
  5. Añade filtros globales para que afecten a múltiples tarjetas
# Activar caché de consultas para mejor rendimiento (variable de entorno)
# Añadir al archivo de entorno o docker-compose
MB_QUERY_CACHING_ENABLED=true
MB_QUERY_CACHING_TTL_RATIO=0.1
MB_QUERY_CACHING_MIN_TTL=60

Permisos y Usuarios

Metabase organiza los permisos por grupos:

  • Administradores: acceso total
  • Todos los usuarios: permisos base configurables
  • Grupos personalizados: acceso granular por base de datos y colección
# Los permisos se gestionan desde la interfaz:
# Configuración → Permisos → Bases de datos
# Configuración → Permisos → Colecciones

Para crear usuarios adicionales: Configuración → Personas → Invitar a alguien

Para integración LDAP/SSO (Enterprise o plan Pro): Configuración → Autenticación

Optimización del Rendimiento

# Aumentar memoria JVM para instancias grandes (instalación JAR)
# Editar el servicio systemd
ExecStart=/usr/bin/java -Xmx2g -Xms512m -jar /opt/metabase/metabase.jar

# Para Docker, añadir variable de entorno
JAVA_OPTS=-Xmx2g -Xms512m

Configuraciones recomendadas en la interfaz:

  • Caché de preguntas: activa el caché para consultas lentas
  • Horario de sincronización: ajusta la frecuencia de escaneo de metadatos
  • Límite de filas: establece un límite razonable (por ejemplo, 10.000) para consultas ad-hoc
# Crear índices en las columnas más consultadas en tu base de datos de datos
# Ejemplo para PostgreSQL
psql -U usuario -d mi_base_datos -c "CREATE INDEX idx_fecha ON ventas(fecha_venta);"

Solución de Problemas

Metabase no arranca tras la instalación:

# Revisar logs detallados
docker logs metabase --tail 100
# o para systemd
sudo journalctl -u metabase -n 100 --no-pager

Error de conexión a la base de datos de aplicación:

# Verificar que PostgreSQL está activo
docker exec metabase-db pg_isready -U metabase

# Probar conexión manual
docker exec -it metabase-db psql -U metabase -d metabase -c "\l"

Consultas muy lentas:

  • Activa el caché de consultas en Configuración → General
  • Revisa que las tablas en tu fuente de datos tengan índices apropiados
  • Considera usar una réplica de lectura para las consultas de análisis

Puerto 3000 ocupado:

# Ver qué proceso usa el puerto
sudo ss -tlnp | grep 3000

# Cambiar puerto de Metabase
# En Docker: -p 3001:3000
# En systemd: añadir MB_JETTY_PORT=3001

Problema con certificado SSL en conexiones de base de datos:

# Descargar certificado de CA y montarlo en el contenedor
docker run ... -v /ruta/ca-cert.pem:/app/certs/ca.pem metabase/metabase

Conclusión

Metabase ofrece una solución completa de business intelligence que puede desplegarse en minutos con Docker y escalar según las necesidades del negocio. Con la configuración correcta de permisos, caché y conexiones a bases de datos, permite a equipos técnicos y no técnicos explorar datos y tomar decisiones informadas sin depender de herramientas de pago. Para entornos de producción, asegúrate de usar PostgreSQL como base de datos de aplicación y configurar SSL en todas las conexiones.