Por qué autoalojar sus paneles de BI
Las herramientas de BI alojadas son cómodas… hasta que llega la factura por usuario, y hasta que usted cae en la cuenta de que sus datos de producto, de ingresos y de clientes están copiados en un SaaS de terceros facturado en dólares. Metabase da la vuelta a la situación: es open source (AGPL), autoalojable y se conecta a una base de datos que ya le pertenece. Ejecútelo en un VPS detrás de su propio dominio y su capa analítica nunca saldrá de su servidor. Usted paga un coste mensual fijo por el VPS, no una suscripción por usuario que se infla, y sus datos permanecen en una infraestructura que usted controla, lo que para un equipo marroquí significa además soberanía de los datos, no un centro de datos cuya ubicación desconoce.
Lo que le aporta Metabase
- Un constructor de consultas visual para que los usuarios no técnicos creen gráficos y preguntas con unos clics, con un editor SQL completo para los analistas.
- Paneles interactivos con filtros, exploración detallada (drill-through) y actualización programada.
- Conectores para más de 20 bases de datos: PostgreSQL, MySQL/MariaDB, SQL Server, ClickHouse, BigQuery, Redshift, Snowflake, MongoDB, Athena, Spark, Druid y más.
- Suscripciones programadas y alertas de umbral enviadas por correo electrónico o Slack.
- Permisos por grupos y por colecciones, además de controles por fila y por columna, para que cada equipo vea únicamente sus propios datos.
- Analítica embebida para integrar paneles firmados y filtrados directamente en su propia aplicación.
- Open source bajo AGPL: sin coste por usuario, con su propio estado almacenado en una base de datos Postgres que le pertenece.
Requisitos previos
Un VPS con Ubuntu 22.04 (o Debian 12) y Docker instalado. Metabase se ejecuta sobre la JVM, así que déle margen: 2 GB de RAM es el mínimo realista y 4 GB resulta cómodo para un equipo pequeño. La JVM asigna por defecto un heap de 1 500 MB; en un VPS de 2 GB puede limitarlo a 1 200 MB con JAVA_OPTS=-Xmx1200m, o subirlo a 2 GB en un servidor de 4 GB (-Xmx2g). El despliegue se compone de dos contenedores: el propio Metabase y un postgres:16 complementario que almacena los metadatos propios de Metabase (usuarios, paneles, preguntas guardadas). No hace falta ningún dominio — Metabase responde en el puerto 3000 a través de la IP de su servidor —, pero querrá un reverse proxy para el HTTPS en producción.
Desplegar Metabase en su VPS
Crear una pila docker-compose
Metabase debe almacenar su propio estado en una base de datos real, no en el archivo H2 embebido por defecto. Cree un
docker-compose.ymlcon dos servicios:metabase/metabase:v0.64.1y unpostgres:16complementario. Conecte Metabase a Postgres conMB_DB_TYPE=postgres,MB_DB_HOST=metabase-db,MB_DB_DBNAME=metabaseappdb,MB_DB_PORT=5432,MB_DB_USER=metabasey unMB_DB_PASSrobusto. Use la misma contraseña para elPOSTGRES_PASSWORDdel contenedor Postgres, monte un volumen con nombre en/var/lib/postgresql/datay definarestart: unless-stoppeden ambos. Añada tambiénMETABASE_SITE_URL=https://bi.su-dominio.comyMB_ENCRYPTION_SECRET_KEY(una cadena aleatoria de 32+ caracteres) para cifrar las credenciales de conexión a las bases de datos en reposo — sin esta clave las contraseñas se almacenan en texto plano en Postgres.Ajustar la memoria JVM
Añada
JAVA_OPTS=-Xmx1500ma la secciónenvironmentdel servicio Metabase si dispone de 2 GB de RAM, o-Xmx2gpara 4 GB. Sin este ajuste, la JVM puede superar la memoria disponible y provocar un OOM (Out Of Memory) que mata el contenedor sin mensaje de error legible. Compruebe los OOM condocker inspect metabase --format '{{.State.OOMKilled}}'(devuelvetrue) o condmesg | grep -i oom.Levantar la pila y esperar el arranque
Ejecute
docker compose up -d. En el primer arranque, Metabase ejecuta sus migraciones de base de datos sobre Postgres, lo que tarda de 60 a 120 segundos en un VPS pequeño: es normal. Sondee la disponibilidad concurl -f http://localhost:3000/api/health; en cuanto devuelva{"status":"ok"}, la aplicación está lista. La pila compose condiciona Metabase al healthcheck de Postgres, de modo que la aplicación nunca arranca antes de que su base de datos esté lista.Completar el asistente de configuración
Abra
http://<your-server-ip>:3000. Metabase redirige al asistente de configuración: cree la cuenta de administrador y, a continuación, conecte la base de datos que realmente quiere analizar, por lo general el PostgreSQL o el MySQL de su aplicación, idealmente una réplica de lectura para que las consultas analíticas nunca toquen su base primaria de producción. Metabase escanea el esquema y sus tablas quedan consultables en unos segundos.Construir un panel
Cree dos o tres preguntas con el constructor de consultas visual (un recuento en el tiempo, un reparto por categoría), guárdelas en una colección y fíjelas en un panel dotado de un filtro por fecha. Cambie cualquier pregunta al editor SQL nativo cuando necesite un control total. Configure una suscripción por correo electrónico o Slack para recibir el panel a intervalos regulares.
Añadir HTTPS y blindar el acceso
Coloque Metabase detrás de un reverse proxy para obtener un dominio real y un certificado. Con Caddy:
apt install caddy, luego un/etc/caddy/Caddyfileque contengabi.su-dominio.com { reverse_proxy localhost:3000 }ysystemctl reload caddypara un certificado Let's Encrypt automático. Antes, apunte el registro DNS A debi.su-dominio.coma su VPS, restrinja el puerto 3000 conufw allow from <proxy> to any port 3000y defina una contraseña de administrador robusta: cualquiera que logre iniciar sesión puede consultar todas las bases de datos conectadas.
Actualizar a Metabase 64 (LTS)
Si está en v63 o anterior, migre antes del 1 de noviembre de 2026 — esa es la fecha en que termina el soporte de seguridad de v63. Metabase 64.1 es la rama LTS recomendada, con soporte hasta el 1 de diciembre de 2027. Actualizar con Docker es sencillo: detenga la pila (docker compose down), sustituya la etiqueta de imagen por v0.64.1 en su docker-compose.yml y vuélvala a levantar (docker compose up -d). Metabase aplica automáticamente las migraciones de esquema al arrancar. Haga una copia de seguridad de su volumen Postgres (docker exec metabase-db pg_dump -U metabase metabaseappdb > backup-antes-v64.sql) antes de actualizar, y verifique que el contenedor arranque correctamente con curl -f http://localhost:3000/api/health antes de descartar la copia de seguridad.
Alertas, suscripciones e informes programados
Metabase puede enviar sus paneles por correo electrónico o Slack según un calendario. Para el correo, configure un servidor SMTP en Administración → Configuración de correo: establezca METABASE_SMTP_HOST, METABASE_SMTP_PORT, METABASE_SMTP_USER y METABASE_SMTP_PASSWORD como variables de entorno, o rellene el formulario directamente. Una vez activo el SMTP, cada panel ofrece un botón «Suscribirse»: elija los destinatarios, la frecuencia (diaria, semanal) y el formato (imagen PNG o adjunto). Las alertas de umbral funcionan con cualquier pregunta numérica: Metabase evalúa la consulta según un calendario y envía una notificación cuando el valor supera o cae por debajo de un umbral; ideal para monitorizar KPIs clave como ingresos diarios, tasas de error o tasas de conversión.
Conectores soportados: mucho más allá del SQL clásico
Metabase Open Source se conecta de forma nativa a PostgreSQL, MySQL/MariaDB, SQL Server, SQLite, H2, Redshift, BigQuery, Snowflake, Athena, Druid, ClickHouse, MongoDB (solo lectura mediante el driver oficial), Presto/Trino y SparkSQL. Las ediciones Pro/Enterprise añaden drivers certificados y soporte oficial. Para bases de datos no listadas hay drivers comunitarios en formato JSON: colóquelos en el directorio /plugins del contenedor (monte un volumen) y Metabase los detecta al arrancar. El conector ClickHouse merece destacarse: ClickHouse se utiliza cada vez más para analítica en tiempo real de alto volumen, y Metabase se conecta a él de forma nativa desde la v44 — una combinación potente para paneles casi en tiempo real sin un almacén de datos dedicado.
Metabase Open Source vs Pro vs Cloud
La edición Open Source (AGPL) cubre todos los casos de uso analíticos habituales: paneles, alertas, suscripciones, analítica embebida básica y control de acceso por grupo. La edición Pro (licencia comercial) añade gestión de suborganizaciones (multi-tenant), paneles interactivos con variables de sesión para analítica embebida avanzada, registros de auditoría de acceso y autenticación SSO SAML. La edición Cloud (SaaS gestionado por Metabase Inc.) elimina el mantenimiento pero transfiere sus datos a servidores de terceros — lo que, para datos sensibles o requisitos de cumplimiento, es razón suficiente para el autoalojamiento. En un VPS de 8 € al mes, la edición Open Source cubre casi todas las necesidades de una pyme sin límite de usuarios.
Resolución de problemas: errores comunes
Contenedor reiniciándose en bucle / OOM. Compruebe docker inspect metabase --format '{{.State.OOMKilled}}' — si es true, aumente la memoria del VPS o reduzca el heap con JAVA_OPTS=-Xmx1200m. Un VPS con 1 GB de RAM es demasiado justo; 2 GB es el mínimo. JDBC connection refused al arrancar. Metabase intenta conectarse a Postgres antes de que esté listo. Asegúrese de que el healthcheck esté definido en el servicio Postgres y que Metabase dependa de él (depends_on: metabase-db: condition: service_healthy). Tiempo de arranque muy largo (> 5 min). En un VPS de bajo rendimiento, las migraciones iniciales pueden tardar hasta 5 minutos. Es normal en el primer lanzamiento; los arranques posteriores son rápidos (15–30 segundos). Paneles lentos o timeouts. Conecte Metabase a una réplica de lectura en lugar de la base primaria. Si no es posible, active la caché de consultas con MB_QUERY_CACHING_TTL_RATIO=10. Correos no recibidos. Revise los registros SMTP en Administración → Registros de auditoría. Pruebe la conexión SMTP desde Administración → Configuración de correo → Enviar correo de prueba.
Apunte Metabase a una réplica de lectura, no a su base primaria
Las consultas analíticas pueden ser pesadas. Conecte Metabase a una réplica de lectura o a una base de reporting dedicada en lugar de a su base primaria de producción; así una consulta de panel lenta nunca ralentizará su aplicación en producción. En un solo VPS, puede ejecutar una réplica ligera en su propio contenedor dentro de la misma red Docker privada: Metabase la alcanza por su nombre de servicio y su base primaria queda intacta.