この記事のポイント
metabase/metabase:latest(v0.62.2.7)を Ubuntu 24.04 上で実際に起動して確認したdocker run一行で起動でき、/api/healthが{"status":"ok"}を返すまでおよそ10秒- 起動直後のメモリ使用量は約 1.7 GB。2 GB 以上の VPS が最低ラインになる
- PostgreSQL・MySQL・BigQuery など 20 種以上のデータソースに GUI からノーコードで接続できる
- 本番利用では H2 をやめて PostgreSQL をメタデータ DB に使うのが公式推奨
Metabase は、SQL が書けなくてもデータを可視化・集計できるオープンソースの BI ツールです。PostgreSQL や MySQL にブラウザから接続し、ドラッグ&ドロップでグラフを作れます。SaaS 版もありますが、Docker を使えば Ubuntu VPS 上で完全セルフホストできるため、データを外部サービスに出したくない場合にも使えます。
実際に Ubuntu 24.04.4 LTS の環境でコンテナを起動してみると、イメージ取得から GUI が開くまでは拍子抜けするほど簡単でした。正直、詰まったのは「RAM 不足でコンテナがサイレントに落ちる」という初回起動時だけです。メモリの話は後半で詳しく触れます。
本記事のコマンドはすべて Ubuntu 24.04 + Docker 29.5.3 の環境で実行した結果を掲載しています。
目次
- 動作確認済み環境
- Docker のインストールと Metabase 起動
- 初期セットアップウィザード
- データベースの接続設定
- Query Builder でデータを可視化する
- Docker Compose で本番構成にする
- よくあるエラーと解決策
- まとめ
動作確認済み環境
以下の環境で動作を確認しています。
| 項目 | バージョン / 値 |
|---|---|
| OS | Ubuntu 24.04.4 LTS(Noble Numbat) |
| Docker | 29.5.3(Docker 公式リポジトリ) |
| Metabase | v0.62.2.7(metabase/metabase:latest) |
| 内蔵 Java | OpenJDK 21.0.11(Metabase イメージに同梱) |
| 確認日 | 2026年6月20日 |

メモリは 2 GB 以上必須
Metabase は Java ベースのアプリケーションのため、起動直後に約 1.7 GB のメモリを使います。1 GB プランの VPS では OOM(メモリ不足)でコンテナがサイレントに終了します。最低 2 GB、快適に使うなら 4 GB 以上のプランを選んでください。
Docker のインストールと Metabase 起動
手順1:Docker をインストールする
すでに Docker が入っている場合はこの手順を飛ばしてください。Ubuntu 24.04 への Docker インストールは公式スクリプトを使うのが確実です。
# インストール完了後、バージョン確認
$ docker –version
Docker version 29.5.3, build d1c06ef
$ sudo usermod -aG docker $USER
# ← ログインし直すと sudo なしで docker コマンドが使えるようになる
手順2:Metabase コンテナを起動する
Docker イメージを pull して起動するだけです。ポート 3000 でサービスが起動します。
latest: Pulling from library/metabase
Digest: sha256:e3ee7f6ce6ba4278cc375fd3e0f3f9f66c84f8359496b6dbe0a59152555add27
Status: Downloaded newer image for metabase/metabase:latest
$ docker run -d \
–name metabase \
-p 3000:3000 \
-v metabase-data:/metabase-data \
-e MB_DB_FILE=/metabase-data/metabase.db \
metabase/metabase:latest
337f5c1a384d40778eb3e8bee82b92807e73bdc56af8bc7c600e0926fbdec7bf
$ curl -s http://localhost:3000/api/health
{“status”:”ok”}

私が確認したとき、docker run を実行してから /api/health が {"status":"ok"} を返すまで約 10 秒でした。JVM の初期化に時間がかかるため、すぐにブラウザを開いてもまだ起動中のことがあります。
手順3:起動状態とリソース使用量を確認する
metabase Up 2 minutes 0.0.0.0:3000->3000/tcp
$ docker stats –no-stream –format “{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}” metabase
metabase 0.36% 1.724GiB / 60.43GiB

アイドル時の CPU は 0.36% 程度とほぼゼロですが、メモリは常時 1.7 GB 前後を確保します。VPS を選ぶ際のポイントになります。
初期セットアップウィザード
ブラウザで http://<サーバーのIP>:3000/ を開くと、初回はセットアップウィザードが表示されます。

ウィザードでは以下を設定します。
- 管理者アカウント(名前・メールアドレス・パスワード)
- 組織名(サイト名)
- 使用するデータベースの選択(後で変更可)
- 匿名使用データの送信可否
設定後はダッシュボードが表示されます。初期状態では H2 の「Sample Database」が接続済みで、サンプルデータを使ったグラフを試せます。

データベースの接続設定
Metabase はデフォルトで H2(組み込みデータベース)を使いますが、これは本番用途には向きません。PostgreSQL や MySQL などのデータソースを追加する方法を示します。
①対応データベース一覧
v0.62 時点で標準内蔵しているドライバーとサードパーティドライバーは以下の通りです。

②PostgreSQL を接続する手順
Admin パネル(/admin/databases)の「Add database」から設定します。

Display name: My Production DB
Host: db.example.com
Port: 5432
Database name: mydb
Username: metabase_reader
Password: ********
接続テストが通れば「Save」で完了です。Metabase が自動でスキーマをスキャンし、数分後にテーブル一覧が使えるようになります。
読み取り専用ユーザーを作ることを推奨
Metabase に渡すデータベース認証情報は、SELECT 権限のみの読み取り専用ユーザーを作って使うと安全です。admin や root 権限のアカウントを直接入れないようにしましょう。
Query Builder でデータを可視化する
右上の「+ New」→「Question」でクエリビルダーが開きます。SQL を書かなくても、テーブルとフィルタ・集計条件をクリックで選べます。

基本的な使い方
- 「Pick your starting data」でテーブルを選択する
- 「Filter」で絞り込み条件を追加する(例:日付 > 2026-01-01)
- 「Summarize」で集計軸を選ぶ(例:日別の件数 COUNT)
- グラフ種別(棒グラフ・折れ線・散布図など)を右上で切り替える
- 「Save」してダッシュボードに追加する
集計結果は CSV でそのままダウンロードできます。「SQL が書けなくてもレポートを作りたい」というチームメンバーに渡すダッシュボードを作る用途に向いています。
Docker Compose で本番構成にする
開発・検証なら docker run 一行で十分ですが、本番では PostgreSQL をメタデータ DB として使う構成が公式推奨です。以下は最小構成の docker-compose.yml です。
services:
metabase:
image: metabase/metabase:latest
ports:
– “3000:3000”
environment:
MB_DB_TYPE: postgres
MB_DB_HOST: db
MB_DB_PORT: 5432
MB_DB_DBNAME: metabasedb
MB_DB_USER: metabase
MB_DB_PASS: securepassword
depends_on:
– db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: metabasedb
POSTGRES_USER: metabase
POSTGRES_PASSWORD: securepassword
volumes:
– pg-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
pg-data:
✔ Container metabase-db-1 Started
✔ Container metabase-metabase-1 Started
$ docker compose ps
NAME STATUS PORTS
metabase-db-1 running 5432/tcp
metabase-metabase-1 running 0.0.0.0:3000->3000/tcp
H2 ではデータが単一ファイルに入るため、バックアップや移行が複雑です。PostgreSQL に切り替えると、pg_dump で定期バックアップできるようになります。
よくあるエラーと解決策
①コンテナがすぐに終了する / ログに OOM が出る
最もよく起きます。docker logs metabase を見て Killed や java.lang.OutOfMemoryError が出ていれば RAM 不足です。
Killed
$ free -h
total used free
Mem: 1.0Gi 0.9Gi 87Mi ← 1GB プランでは足りない
解決策は VPS プランを 2 GB 以上にアップグレードするか、-e JAVA_OPTS="-Xmx512m" でヒープ上限を下げて試してみることです(ただし動作が不安定になりやすい)。
②ポート 3000 が「Connection refused」になる
起動直後は JVM の初期化中です。10〜30 秒待ってから再アクセスしてください。UFW でポートを閉じている場合は sudo ufw allow 3000 が必要です。
Rule added
$ sudo ufw status | grep 3000
3000 ALLOW Anywhere
③「H2 is not recommended for production」という警告が出る
デフォルトの H2 データベースを使っているときに出る正常な警告です。開発・検証用途なら無視して構いません。本番に移行する際は上述の Docker Compose 構成で PostgreSQL に切り替えてください。
まとめ
Metabase を Ubuntu 24.04 + Docker でセルフホストする手順をまとめます。
docker pull metabase/metabase:latestでイメージ取得(v0.62.2.7)docker run -d -p 3000:3000で起動、/api/healthがokを返せば完了- メモリは起動直後で 1.7 GB 使用。VPS は 2 GB 以上必須、4 GB 以上を推奨
- 初回はウィザードで管理者アカウントを作成し、Admin パネルからデータソースを追加
- 本番運用では PostgreSQL をメタデータ DB に使う Docker Compose 構成に移行する
クラウドの VPS 上で動かすなら、Vultr の Cloud Compute(2 GB プラン)が費用対効果のバランスが取れています。東京リージョンがあるので、日本国内のユーザーが使うダッシュボードのレスポンスも良好です。
VPS を選ぶ際の比較は Ubuntu VPS 比較(2026年版)も参考にしてください。



コメント