Metabase Self-Hosted
BeginnerDashboardSelf-hosted Metabase on your own server with PostgreSQL and full data control.
Published 27 September 2026
About Metabase Self-Hosted
Metabase Self-Hosted runs the Metabase BI platform in a Docker container on your own server, with PostgreSQL as Metabase's application database: every question, dashboard, user, and connection setting lives there. The data you analyze stays wherever it already is, since Metabase connects to your existing databases and warehouses and queries them in place.
Self-hosting removes Metabase Cloud's per-user pricing and meets data residency requirements that rule out sending query results or dashboard definitions to a third-party cloud. It also lets Metabase reach databases on a private network without exposing them to the internet, and updates land on your own schedule.
Metabase is a Java application, so memory is the resource to plan for: the official guide puts the app at 1 GB and its PostgreSQL at 2 GB before concurrent users, which makes a 4 GB server the comfortable starting point for a small team. It suits organizations with data governance requirements, teams that prefer owning their infrastructure, and companies whose seat count has made Cloud expensive.
Key Features
- ✓Docker deployment of Metabase on a self-managed server
- ✓PostgreSQL as Metabase's application database for questions, dashboards, and users
- ✓Questions, dashboards, alerts, and embedding from the Open Source edition
- ✓Full control over Metabase version, configuration, and upgrade timing
- ✓No per-user cost regardless of team size
- ✓Connections to databases on a private network without exposing them
When to Use Metabase Self-Hosted
- →Organizations with compliance requirements that prohibit cloud-hosted BI tools
- →Teams that have outgrown Metabase Cloud pricing at their user count
- →Engineering teams standardizing on self-hosted open-source tooling
- →Companies who need Metabase to query internal databases not reachable from the cloud
- →Data teams who want to pin a specific Metabase version for stability
Pros
- No SaaS subscription cost at any user count
- Full control over data and metadata: nothing leaves your infrastructure
- Docker deployment is straightforward with the official Metabase image
- All open-source Metabase features available without cloud tier limitations
Cons
- Server maintenance, updates, and backups are your responsibility
- A JVM app plus PostgreSQL needs about 3 GB before concurrent users, more than most self-hosted dashboards
- SSO, row-level permissions, and usage analytics need a paid Pro license even when self-hosted
Hosting Options for Metabase Self-Hosted
A flat-rate root VPS whose entry instance already has 4 GB of memory for around €4-5/mo, enough for Metabase's JVM and its PostgreSQL with room for a small team's concurrent dashboards. The cheapest way to meet the official sizing, with backups and upgrades left to you.
A root Droplet with snapshots and a cloud firewall in the panel, about $24/mo for the 4 GB that Metabase and PostgreSQL want together. Managed PostgreSQL (from about $15/mo) can hold the application database instead, which lets a 2 GB Droplet run Metabase alone.
The budget VPS in the list: the entry KVM plan (about $6.50/mo on a two-year term) has 4 GB of memory, which covers Metabase and PostgreSQL for a small team. Fewer regions than the larger providers, so check that one sits near the databases Metabase will query.
Metabase's official Docker image ships ARM64 builds, and a Pi 4 or 5 with 4 GB or more runs the JVM and PostgreSQL for a personal or small-team BI server, with no monthly bill. The tradeoff is query latency on large datasets: fine for dashboards over modest data, noticeable on heavy aggregations.
An EC2 instance at roughly $25-35/mo for 4 GB, placed next to data in Redshift or RDS so queries stay inside the VPC. RDS can host the application database with automated backups, and an Application Load Balancer with AWS Certificate Manager can handle TLS instead of the reverse proxy.
A Compute Engine instance at roughly $25-35/mo for 4 GB, close to BigQuery so dashboard queries stay low-latency. Cloud SQL can host the application database, and Cloud Load Balancing with Google-managed certificates can handle TLS instead of the reverse proxy.
These are highlighted picks. To see all the tools, check the Hosting & Cloud category.
Reverse Proxy Options for Metabase Self-Hosted
Routes to the Metabase container from Docker labels and renews Let's Encrypt certificates on its own. Set Metabase's Site URL to the public HTTPS address so links in alert emails and embedded dashboards point at the right host.
Automatic HTTPS from a few lines of config, the simplest fit for one Metabase container on port 3000. Caddy applies no short response timeout by default, so long-running questions over big tables finish instead of being cut off at the proxy.
Self-Hosted PaaS Options for Metabase Self-Hosted
Free and self-hosted, with a one-click Metabase template that provisions PostgreSQL beside it and HTTPS through Coolify's bundled proxy. Set the JVM heap in the service's environment so Metabase leaves room for PostgreSQL on the same server.
Metabase Self-Hosted Add-ons
Each addition below extends this stack with a capability the base stack works fine without. None are required: include the ones your product actually needs when building this stack, and skip the rest.
Tunnel Add-ons
Add a tunnel when you're self-hosting without a static IP or can't open inbound ports — a home server, a VPS behind restrictive network policies, or anywhere a reverse proxy alone can't reach the internet.
Makes Metabase reachable over HTTPS through an outbound-only connection, with no inbound ports or static IP, for a server inside a private network. Put Cloudflare Access in front unless dashboards are meant to be public, and set Metabase's Site URL to the tunnel hostname.
Frequently Asked Questions about Metabase Self-Hosted
Why self-host Metabase instead of using Metabase Cloud?
Cost at team size, data residency, and reach. Metabase Cloud bills per user (Starter includes 5, with a charge for each additional person), while the self-hosted Open Source edition has no user limit, so a 40-person company pays for one small server instead of 40 seats. Self-hosting also keeps dashboard definitions and query results on your infrastructure, and lets Metabase query databases on a private network without exposing them to the internet. What it costs you: you run upgrades, backups, and uptime yourself. Enterprise features such as SSO and row-level permissions need a paid Pro license either way.
What does it take to run?
Memory, above all. Metabase's production guide puts the app at 1 GB plus 2 GB for every 20 concurrent users, and its PostgreSQL application database at a 2 GB baseline plus 1 GB per 40 users. On one server that adds up to about 3 GB before anyone logs in, so a 4 GB instance is the comfortable start for a small team; 40 concurrent users need about 5 GB for the app alone. Give the JVM heap about 80% of what Metabase's share is, through JAVA_OPTS, so PostgreSQL keeps its room.
What needs backing up, and how do upgrades work?
Only the PostgreSQL application database holds state: every question, dashboard, user, and connection setting. The Metabase container itself can be replaced at any time. Back up that database on a schedule, and always right before an upgrade, because a new Metabase version migrates the application database when it starts, and going back to the old version means restoring the pre-upgrade backup. Pin the Docker image to a specific version rather than latest, read the release notes before major versions, and upgrade on a schedule you choose.
Metabase Self-Hosted or Metabase + PostgreSQL?
They answer different questions. Metabase + PostgreSQL is the project stack: dashboards and self-service questions on top of your PostgreSQL data, using Metabase's free Open Source edition, with where Metabase runs left open. This stack is the infrastructure recipe for running Metabase yourself: the Docker deployment, its own PostgreSQL application database, a reverse proxy for HTTPS, and a choice of hosts. Use both together when you build dashboards with the first and need a concrete way to host Metabase from the second.
Do I need a reverse proxy?
Yes, for anything beyond local testing. Metabase serves plain HTTP on port 3000, so Traefik, Caddy, NGINX, or a self-hosted PaaS terminates HTTPS in front of it. Two settings matter behind any of them: Metabase's Site URL should be the public HTTPS address, and the proxy's response timeout should be long enough for slow questions to finish.
Stacks Related to Metabase Self-Hosted
Strapi Self-Hosted
InfrastructureSelf-hosted Strapi: an open-source headless CMS with PostgreSQL, on a server you control.
Airflow Self-Hosted
InfrastructureSelf-hosted Apache Airflow: the standard data-pipeline scheduler on your infrastructure.
n8n Self-Hosted
InfrastructureSelf-hosted n8n on your own server, with full control over the database, the host, and how it's exposed to the internet.
GitLab Self-Hosted
InfrastructureSelf-hosted GitLab with Docker: your code, your CI, your infrastructure.
Scores
Popularity4/5
Among the most widely adopted open-source BI tools and a common first recommendation for internal dashboards.
Learning Curve2/5
Built for non-analysts to ask questions through a plain UI; running it is one container plus its database.
Flexibility4/5
Point it at nearly any database for questions, dashboards, and SQL when needed; it stays BI rather than a warehouse engine.
Performance3/5
Comfortable at small-team scale; heavy concurrent querying eventually wants a bigger instance and a tuned source database.
Portability5/5
Metabase sits in front of your existing databases, so the data never moved in the first place, and questions and dashboards export with the instance.
Tools in the Metabase Self-Hosted Stack
Metabase Self-Hosted Pricing
Metabase's Open Source edition, PostgreSQL, and Docker are all free; the recurring cost is a server with about 4 GB of memory. Metabase Cloud would instead start at $100/mo for 5 users with $6 for each additional person, and Pro's enterprise features ($575/mo) only matter if SSO or row-level permissions become worth paying for, self-hosted or not.
Metabase needs 1 GB and its PostgreSQL 2 GB before concurrent users, so a 4 GB instance is the comfortable start; add 2 GB per 20 concurrent users.
Metabase's Open Source edition has no feature caps on core dashboarding; Starter ($100/mo, 5 users) adds managed hosting and Pro ($575/mo) enterprise features.
Traefik, Caddy, NGINX, Coolify, and Dokploy all self-host free, with free Let's Encrypt certificates.
Metabase Self-Hosted System Requirements
source- CPU
- 1 core baseline, plus 1 core per 20 concurrent users
- RAM
- 1 GB baseline, plus 2 GB per 20 concurrent users; give the JVM heap about 80% of total RAM
- App database
- 1 core and 2 GB baseline for PostgreSQL, plus 1 core and 1 GB per 40 concurrent users
- Runs as
- JAR or Docker container; the sizing applies to either
Official production-guide figures (40 concurrent users work out to 3 cores and 5 GB for the app alone, and v52+ raised the per-user memory share). With this stack's PostgreSQL on the same box, add the database line to the app line before picking an instance.