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:
- Selecciona tu idioma y haz clic en Siguiente
- Crea la cuenta de administrador con email y contraseña seguros
- Añade tu primera conexión a base de datos (o sáltala por ahora)
- 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)
- Clic en + Nuevo → Pregunta
- Selecciona la base de datos y tabla origen
- Usa el Constructor de preguntas (modo visual) o cambia a SQL nativo
- Añade filtros, agrupaciones y métricas de forma visual
- Guarda la pregunta con un nombre descriptivo
Crear un dashboard
- Clic en + Nuevo → Dashboard
- Asigna un nombre y colección
- Añade preguntas guardadas con el botón +
- Redimensiona y reorganiza los widgets arrastrando
- 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.


