Metabase
BI dashboards non-analysts actually use - point-and-click questions over your databases, on a managed Postgres.
One-click deploy, from $25/mo on a Miget plan.
Metabase’s superpower is that the marketing team uses it without filing tickets: point-and-click questions, sensible charts, dashboards, and scheduled email reports - with full SQL one click away for those who want it. It connects to practically every database.
This template runs the OSS image with its app database on a managed Postgres (the embedded H2 default is explicitly non-production upstream - this template never touches it). With the external app DB the container is stateless: questions, dashboards, and users live in Postgres; your analytics data stays in the warehouses Metabase queries.
It pairs naturally with the rest of the catalogue: point it at your clickhouse, timescaledb, mssql, or mongodb stacks by service name and the whole project gets dashboards.
Upstream project: Metabase OSS
#what you get
- Point-and-click question builder + native SQL editor
- Dashboards with filters, drill-through, and scheduled email/Slack reports
- Connects to Postgres, MySQL, ClickHouse, SQL Server, Mongo, and more
- Stateless container on a managed Postgres app DB - clean ops
- Embedding and public sharing of charts
- OSS core - the same engine Metabase Cloud runs
#topology
| Service | Role | Public |
|---|---|---|
| metabase | Metabase UI + API (:5000) | yes |
| db | Postgres app DB - managed on Miget, container locally | no |
#miget sizing
// this stack needs
3 GiB RAM · 5 GB disk · 2 services
Metabase is a JVM app: 2 GiB container with a 1 GB heap is the practical floor, and startup takes a minute or two. Scale up with concurrent dashboard users.
Hobby - recommended fit
$25/mo
2 vCPU · 4 GiB · 80 GiB disk
Headroom for your own apps: 8 GiB at $49/mo
Professional - production
$43/mo
2 vCPU · 4 GiB · 25 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Metabase on Miget ★ | 4 GiB plan | $25 | this whole stack, flat - no usage meters, and room left for your own apps |
| Metabase Cloud | Starter | ~$100 | base with 5 users included, then $6/user/mo |
Same OSS core. Cloud adds hosting and support; Pro features (SSO, sandboxing) are a separate $575/mo tier either way.
#vs. other PaaS
Estimated monthly cost of running this exact stack (3 GiB RAM, 5 GB disk, 2 containers) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $25 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$150 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| DO App Platform | ~$41 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Render | ~$39 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| Railway | ~$31 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$18 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
metabase -
Set the required variable:
MB_SITE_URL, set to the app’s https domain after first deploy (links and embeds)
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/metabase
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
How does self-hosted Metabase compare to Metabase Cloud?
Metabase Cloud Starter is $100/month base for 5 users plus $6 per extra user. This stack is $25/month flat with unlimited users on the identical OSS core. Cloud buys you their hosting and upgrades; the Pro feature set (SSO, sandboxing) is a separate $575/month tier in either case.
Where does my data live?
Your analytics data never moves - Metabase queries your databases where they are. Only the app database (questions, dashboards, users) lives in the managed Postgres, which is exactly what gets backed up.
Can it query the other stacks in this catalogue?
Yes - in-project databases are reachable by service name: clickhouse ch-1:8123, timescaledb:5432, mssql:1433, mongo-1:27017. Add them as data sources and dashboard the lot without anything leaving the project network.
Why does the template insist on an external app database?
Metabase’s embedded H2 is documented as non-production - it corrupts under concurrent use and complicates upgrades. The managed Postgres removes the failure mode entirely and makes the Metabase container disposable.
Ship Metabase today
One compose stack, 3 GiB of RAM, from $25/month flat, and it runs on your laptop with the same files.