PostgreSQLのSQLをほとんど書かずにGUIで一括編集できる DBeaver は重宝していた。ただJavaベースで起動がそれなりに重く、複数のDBをまとめて眺めるにはもう少し身軽なツールが欲しくなっていた。
そんな折に見つけたのが DBX だ。無料で、多くのデータベースに対応し、動作も軽快らしい。試しにTraefik配下のDocker環境に組み込んでみることにした。
気になる点が一つある。DBXの開発元は中国だということだ。今後の開発体制やデータの取り扱いがどうなっていくかは注視しておきたいが、まずは手元の環境で動かしてみて様子を見ることにした。
DBXとは
DBX はRust + Vue 3製の軽量なマルチデータベースクライアントだ。公式の謳い文句は「80+ databases in 20 MB」。
- 対応DB: MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、SQL Serverなど80種類以上
- 軽量: 単一バイナリで約20MB、外部ランタイム依存なし
- クエリエディタ: CodeMirror 6ベース、シンタックスハイライト・メタデータ補完に対応
- AI SQLアシスタント: Claude/OpenAI連携で自然言語からSQLを生成できる
- データグリッド: 仮想スクロール対応、インライン編集・フィルタ・エクスポートが可能
- スキーマツール: ブラウザ、ER図、構造エディタ、比較ユーティリティを備える
- 専用ブラウザ: Redisのキー管理、MongoDBのドキュメントCRUDに対応
- 配布形態: Desktop(Homebrew/Scoop/WinGet/Flatpak)、Docker、CLI、MCP Serverの4系統
まずは素のdocker-compose環境で試す
いきなりTraefikに組み込む前に、Traefikを使わない最小構成でまず動かしてみることにした。
services:
dbx:
image: t8y2/dbx:latest
container_name: dbx
restart: unless-stopped
ports:
- "4224:4224"
volumes:
- dbx_data:/app/data
volumes:
dbx_data:docker compose up -d で起動すれば、http://<host>:4224 にそのままアクセスできる。
ただし自宅環境ではすでにTraefikで各サービスを80番/443番からまとめて振り分けており、DBXだけポートを直接公開すると構成の一貫性が崩れる。そこでここからはTraefik配下の /dbx サブパスに乗せる方式に切り替えることにした。
Traefik配下でのDocker環境構築
自宅環境では traefik_network という外部ネットワーク上でTraefikがリバースプロキシとして稼働している。DBXはこのネットワークに参加させ、/dbx というサブパスで公開することにした。
DBXの公式イメージには、リバースプロキシのサブパス配信用の環境変数があらかじめ用意されている。
環境変数
DBX_PUBLIC_BASE_PATH=/dbxを設定すると、/dbxのようなコンテキストパス配下での公開に対応する。 pgadmin これをTraefikのPathPrefixルールと組み合わせるだけでよい。
services:
dbx:
image: t8y2/dbx:latest
container_name: dbx
pull_policy: always
restart: unless-stopped
environment:
DBX_PUBLIC_BASE_PATH: "/dbx"
volumes:
- dbx_data:/app/data
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
- "traefik.http.services.dbx.loadbalancer.server.port=4224"
- "traefik.http.routers.dbx.rule=PathPrefix(`/dbx`)"
- "traefik.http.routers.dbx.entrypoints=web"
- "traefik.http.routers.dbx.priority=10"
networks:
- traefik_network
volumes:
dbx_data:
networks:
traefik_network:
external: true構成のポイント
- ポート: DBXはコンテナ内部で
4224で待ち受ける。Traefikラベルのloadbalancer.server.portをこれに合わせた - 永続化:
dbx_dataという名前付きボリュームを/app/dataにマウントした - ネットワーク:
traefik_networkのみに接続している。pgadmin4のように内部DB用ネットワークを別途持つ構成とは異なり、DBXは接続先DBをアプリ内で個別に設定する方式なので、ネットワークはこれだけで足りる - ルーティング:
PathPrefix(/dbx)ルールで振り分け、priority=10を明示して他ルールとの優先順位を示した
起動
cd /home/user/docker/compose/dbx
docker compose up -d起動後、http://<host>/dbx でアクセスできるようになった。
まとめ
| 項目 | 内容 |
|---|---|
| 選定理由 | DBeaverより軽快で無料、多くのDBに対応しているため |
| 気になる点 | 開発元が中国であること。今後の動向は注視する |
| 公開方式 | DBX_PUBLIC_BASE_PATH=/dbx とTraefikの PathPrefix を組み合わせ、/dbx サブパス配下に公開 |
| 永続化 | dbx_data 名前付きボリュームを /app/data にマウント |
DBeaverではデータ編集時にコピー&ペーストができたが、DBXではそれができなかった。
一方で、DBXは一括編集機能によって複数のデータをまとめて変更できるようになった。
DBeaverの代わりが務まるかはまだ分からないが、まずは軽さと対応DB数の広さを試す環境が整った。
開発元の動向は継続して見ていきたい。