Metabase 数据看板:NAS 上用 Docker 部署,把订单表变成图表和仪表盘
作者
小编
发布时间

项目介绍
Metabase 是一个开源的 BI(商业智能)工具,做的事很直接:把数据库里的一张张表,变成能看懂的数字卡、柱状图、折线图和仪表盘。不用写代码,选一张表、点几下汇总和分组,图就出来了;需要复杂逻辑时也可以直接写 SQL。
它适合这样的场景:订单、账单、库存、访问记录本来就存在表里,但每次要看「这个月卖了多少、哪个品类最多」都得翻表格、拉公式。把 Metabase 连上这些表,建几个问题(Question),再拼成一个仪表盘,打开就是结论。
界面有简体中文,第一次启动自带一份示例数据,可以拿它练手;换成自己的数据库也不难,MySQL、PostgreSQL、SQLite 这些常用库都支持。
项目地址:点我跳转
部署安装
只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示:先用 帕斯内网穿透 拿到一个公网地址,再把 Metabase 用 Docker Compose 装起来。先穿透、后部署,装完直接用公网地址打开,以后在手机上也能看同一块看板。
一、先用帕斯内网穿透拿到公网地址
飞牛的「应用中心」里搜 PassNAT,装上这个穿透插件,打开它,点「创建隧道」。隧道名字随便起(不超过 12 个字符),接入节点和传输协议留默认,本地 IP 留默认的 127.0.0.1,本地端口填 3000(就是下面编排里冒号左边那个端口)。
建好之后点开这条隧道,按一下电源,状态变成运行中,详情里就能看到分配好的公网地址(形如 IP:端口),先记下来。
不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。
二、新建 Compose 项目
打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 metabase,路径在「我的文件」下面挑一个空文件夹,没有就当场新建一个。来源选「创建 docker-compose.yml」,把下面这段整个贴进去:
1services:2 metabase:3 image: metabase/metabase:latest4 container_name: metabase5 ports:6 - "3000:3000"7 environment:8 MB_DB_FILE: "/metabase-data/metabase.db"9 JAVA_OPTS: "-Xmx1200m"10 volumes:11 - metabase-data:/metabase-data12 restart: unless-stopped1314volumes:15 metabase-data:
这段编排里没有要改的口令,只有两处按需调整:
端口 3000:如果 NAS 上已经被别的服务占用,把冒号左边的数字换一个,隧道里的本地端口也跟着改。
JAVA_OPTS:给 Metabase 的内存上限,默认给了 1200 MB;内存宽裕的机器可以往上调,小内存的机器别往下压太多,否则首次启动会很慢。
数据放在名为 metabase-data 的具名卷里(MB_DB_FILE 指到 /metabase-data/metabase.db)。这里特意用卷而不是直接挂一个目录:Docker 在不少 NAS 上以非 root 用户运行,直接挂目录很容易遇到权限问题,表现是日志里 H2 报错、页面一直打不开;具名卷由 Docker 自己管权限,省事。
勾上「创建项目后立即启动」,镜像下完就起来了。Metabase 是个 Java 应用,首次启动要做数据库迁移和插件扫描,等两三分钟,页面能打开就说明好了。
三、第一次打开:建管理员
用公网地址打开,第一次进来会进安装向导:填邮箱、密码和站点名,一路下一步,管理员账号就建好了。这一步不需要邮件验证,也不依赖 SMTP;以后忘了密码再配邮件服务也不迟。
建完之后会自动挂上一份 Sample Database(示例数据),里面有 Orders、People 等几张表,先拿它熟悉界面,再换成自己的数据。
四、把订单表变成图表
先看原始表。 点左上角的「数据 → 数据库」,选 Sample Database,能看到 Orders 这张订单表:每一行是一笔订单,金额、时间、数量都在列里。这就是要变成图表的东西。
新建一个问题。 点右上角「新建 → 问题」,起始数据选 Orders 表。把汇总方式选成「计数」,再按品类分组(示例库里订单会关联到商品表的品类),右边可视化切成柱状图,保存成「各品类销售额」。同样可以建一张按月汇总的折线图,或者一张只显示总数的数字卡。
换成自己的表也一样。 把数据库连接换成自己的 MySQL、PostgreSQL 或 SQLite,表结构选对,汇总和分组按业务口径点一遍就行;需要更复杂的统计时,编辑器里可以直接写 SQL。
五、拼成仪表盘,手机也能看
新建仪表盘。 点「新建 → 仪表盘」,起个名字,把刚才保存的问题一张张加进去。数字卡放最上面,柱状图和折线图放下面,拖动边角调整大小,排成自己顺眼的顺序,保存。
手机打开同一个地址。 用手机浏览器访问同一个公网地址,登录后看板会按竖屏重新排版:数字卡一张张往下排,图表铺满宽度。不用装 App,也不用把电脑开着,在外面想知道生意怎么样,掏手机看一眼就行。
给别人看。 仪表盘可以生成公开分享页,只读、不需要登录;不想公开时随时关掉。分享页和登录页用的是同一个地址,注意别把管理账号一起发出去。
几点说明
数据在哪。 Metabase 自己的配置、保存的问题和看板都在 metabase-data 卷里,备份这个卷就够了;业务数据仍然留在你自己的数据库里,Metabase 只读它。
升级。 镜像标签用的是 latest,升级前先把 metabase-data 卷备份一份,再到 Docker 里重新拉取镜像、重启项目;启动时会自动把内部数据库结构升到新版本。
明文 HTTP 访问。 内网穿透给的是 http 地址,Metabase 本身不需要 HTTPS 才能用;但看板里可能有经营数据,公网地址别到处发,用完了可以在插件里把隧道关掉。
首次启动慢。 Java 应用第一次启动要做迁移、加载驱动,两三分钟很正常;之后重启会快很多。如果一直打不开,先看容器日志,最常见的原因是数据目录权限。