搬瓦工部署 Metabase 商业智能分析平台教程
Metabase 是一款广受欢迎的开源商业智能(BI)工具,它让不懂 SQL 的业务人员也能轻松查询数据库并生成可视化报表。与传统 BI 工具相比,Metabase 以简洁的界面和零代码的查询方式著称,非常适合中小团队使用。本文将详细介绍如何在搬瓦工 VPS 上通过 Docker 部署 Metabase。部署前请确保已安装 Docker 和 Docker Compose。
一、Metabase 功能概述
- 可视化查询构建器:通过点击和下拉菜单即可构建复杂查询,无需编写 SQL。
- SQL 原生查询:支持编写自定义 SQL 并将结果参数化,供非技术人员使用。
- 交互式仪表板:拖拽式布局,支持筛选联动和自动刷新。
- 定时报告:可设置定时将报告通过邮件或 Slack 发送给团队成员。
- 嵌入分析:支持将图表和仪表板嵌入到你自己的应用中。
- 多数据库支持:原生支持 PostgreSQL、MySQL、MongoDB、BigQuery、Redshift 等。
二、系统要求
- 操作系统:Ubuntu 20.04+ 或 Debian 11+。
- 内存:至少 1GB,推荐 2GB 以上(Metabase 基于 Java,内存消耗较高)。
- 磁盘:至少 5GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose。
搬瓦工 VPS 方案选择建议参考 全部方案,购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买入口:bwh81.net。
三、创建项目目录
mkdir -p /opt/metabase && cd /opt/metabase
四、编写 Docker Compose 配置
创建 docker-compose.yml 文件:
cat > /opt/metabase/docker-compose.yml <<'EOF'
version: '3.8'
services:
metabase-db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: metabase
POSTGRES_USER: metabase
POSTGRES_PASSWORD: your_db_password_here
volumes:
- metabase_db_data:/var/lib/postgresql/data
metabase:
image: metabase/metabase:latest
restart: always
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: your_db_password_here
MB_DB_HOST: metabase-db
JAVA_OPTS: "-Xmx1g"
depends_on:
- metabase-db
volumes:
metabase_db_data:
EOF
默认情况下 Metabase 使用内嵌的 H2 数据库,但在生产环境中强烈建议使用 PostgreSQL 存储元数据,以获得更好的稳定性和备份能力。
五、启动服务
cd /opt/metabase
docker compose up -d
查看启动日志:
docker compose logs -f metabase
Metabase 首次启动需要初始化数据库,可能需要等待 1-2 分钟。当看到类似 "Metabase Initialization COMPLETE" 的日志时,表示启动成功。
六、初始设置
在浏览器中访问 http://your_server_ip:3000,Metabase 会引导你完成初始设置:
- 语言选择:选择简体中文。
- 创建管理员账户:设置用户名、邮箱和密码。
- 连接数据源:填入你要分析的数据库连接信息。
- 使用偏好:选择是否允许匿名使用数据收集。
七、配置反向代理
使用 Nginx 反向代理并开启 HTTPS:
cat > /etc/nginx/sites-available/metabase <<'EOF'
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/metabase /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d your_domain.com
八、常用功能使用
创建问题(查询)
点击右上角 新建 → 问题,选择数据库和表,通过可视化查询构建器设定筛选条件、聚合方式和分组维度,即可生成图表。你也可以切换到"原生查询"模式直接编写 SQL。
搭建仪表板
点击 新建 → 仪表板,将已保存的问题添加到仪表板中。可以自由调整图表大小和位置,添加文本说明和筛选控件。
设置定时报告
在仪表板右上角点击分享图标,选择"定时发送",可以按小时、每天或每周定时将报告通过邮件发送给指定成员。
九、JVM 内存调优
Metabase 运行在 JVM 上,默认内存可能不足。在 docker-compose.yml 中通过 JAVA_OPTS 参数调整:
# 1GB 内存的 VPS 建议设置
JAVA_OPTS: "-Xmx512m"
# 2GB 内存的 VPS 建议设置
JAVA_OPTS: "-Xmx1g"
# 4GB 及以上内存
JAVA_OPTS: "-Xmx2g"
修改后需要重新创建容器:
docker compose down && docker compose up -d
十、数据备份与恢复
# 备份 Metabase 元数据库
docker compose exec metabase-db pg_dump -U metabase metabase > /opt/metabase/backup_$(date +%Y%m%d).sql
# 恢复备份
cat backup_file.sql | docker compose exec -T metabase-db psql -U metabase metabase
十一、常见问题
启动时报内存不足
降低 JAVA_OPTS 中的 -Xmx 值,或升级 VPS 配置。同时确保没有其他高内存进程占用资源。
连接数据库超时
检查目标数据库的防火墙规则,确保允许从 VPS IP 进行连接。如果数据库在同一台 VPS 上,使用 Docker 网络名称而非 localhost。
总结
Metabase 是入门门槛最低的开源 BI 工具之一,特别适合需要让非技术人员也能自助查询数据的团队。通过在搬瓦工 VPS 上自托管,你可以享有完整的功能同时完全掌控数据隐私。如需功能更强大的数据可视化方案,可参考 Apache Superset 教程。选购搬瓦工 VPS 请参考 全部方案,优惠码 NODESEEK2026 可享 6.77% 折扣。