How to Set Up Metabase for Self-Serve Analytics
Last updated Apr 29, 2026

Metabase is one of the most widely deployed open-source business intelligence tools, with over 50,000 organizations using it to give non-technical teams direct access to data. The appeal is straightforward: connect a database, and anyone on the team can ask questions, build charts, and create dashboards without writing a single line of SQL.
This guide covers the fastest path from zero to a working Metabase setup, including both the cloud-hosted option and self-hosting with Docker. It also explains how to build your first dashboard and set up automated reporting.
Choosing Between Metabase Cloud and Self-Hosting
Metabase offers two deployment models. Metabase Cloud is the hosted version managed by the Metabase team. You create an account, connect your database, and skip all infrastructure setup. Plans start at $85 per month for up to 5 users, billed annually. This is the right choice for teams that want to move fast and avoid managing servers.
Self-hosting is free and gives you full control. The tradeoff is that you manage installation, upgrades, and backups. The most common self-hosted setup runs Metabase as a Docker container, with a separate PostgreSQL database storing Metabase's own metadata (user accounts, saved questions, dashboards).
For teams just evaluating Metabase, start with the cloud trial. For teams with a specific data residency requirement or a need to embed Metabase into a product, self-hosting is worth the added complexity.
Option A: Metabase Cloud Setup
Go to metabase.com and click Start a free trial. Enter your email and create a password. Metabase will ask a few setup questions about your role and use case. These do not affect functionality.
Once inside the app, you land on the Add a database screen. Select your database type from the dropdown. Metabase supports PostgreSQL, MySQL, BigQuery, Snowflake, Redshift, MongoDB, SQLite, and around 15 other connectors. Enter your host, port, database name, and credentials. For cloud databases, you may need to whitelist Metabase's IP range to allow inbound connections. Metabase publishes its IP addresses in the documentation.
Click Save and Metabase will test the connection. If it succeeds, your database tables appear in the sidebar under Browse Data.
Option B: Self-Hosting with Docker
You need Docker installed on a Linux or macOS server. A 2-core server with 4 GB RAM handles most small and medium teams without issue.
Create a dedicated PostgreSQL database for Metabase's internal data. On Ubuntu:
sudo apt install postgresql
sudo -u postgres psql -c "CREATE USER metabase WITH PASSWORD 'your_password';"
sudo -u postgres psql -c "CREATE DATABASE metabase OWNER metabase;"
Then run the Metabase container:
docker run -d \
--name metabase \
-p 3000:3000 \
-e MB_DB_TYPE=postgres \
-e MB_DB_DBNAME=metabase \
-e MB_DB_PORT=5432 \
-e MB_DB_USER=metabase \
-e MB_DB_PASS=your_password \
-e MB_DB_HOST=your_server_ip \
metabase/metabase:latest
Metabase starts in about 60 seconds. Open a browser to http://your_server_ip:3000 and complete the first-time setup wizard, which walks through creating the admin account and connecting your first database. For production use, put Nginx in front and add TLS termination - Metabase does not serve HTTPS natively.
Connecting Your Database
After initial setup, additional databases are added from Settings > Admin > Databases > Add database. Each database you connect becomes available to query independently. Metabase does not join across separate database connections at query time, so if you need cross-database queries, handle that upstream in your data warehouse.
For teams using Google Sheets as a primary data store, Metabase does not connect to Sheets directly. Your options are to sync Sheets data into a PostgreSQL or SQLite database first, or use a connector like Airbyte to replicate it.
Building Your First Question
In Metabase, a "question" is a saved query. Click New > Question in the top navigation bar. You'll see three options: Simple Question uses the GUI builder, Custom Question adds filtering and join logic through a drag-and-drop interface, and Native Query drops you into a SQL editor.
For the Simple Question builder:
- Pick your database and select a table from the dropdown.
- Use the Filter button to apply conditions (e.g., date range, status = active).
- Use Summarize to aggregate: count rows, sum a column, average, and so on.
- Set a Group By dimension to break results out by category, date, or user.
Metabase automatically suggests a visualization based on the query shape. A single aggregate becomes a number. A time-series becomes a line chart. A grouped aggregate becomes a bar chart. You can override the suggested chart type from the visualization picker on the right.
Once you are satisfied with the result, click Save. Name the question descriptively and save it to a Collection (Metabase's folder system).
Building a Dashboard
Dashboards are assembled from saved questions. Click New > Dashboard, give it a name, and then use Add a question to pull in your saved charts.
Cards on the dashboard are resizable by dragging the bottom-right corner. Click and drag the card itself to reposition it. Use the Add text button to insert section headers or explanatory notes between charts.
Dashboards support filter widgets - click Add a Filter to add a date range or dropdown that updates all cards simultaneously. This turns a static dashboard into a lightweight data exploration tool without requiring any SQL. A sales ops manager can select a region or date range from the top of the dashboard and all underlying charts update accordingly.
Automated Email and Slack Reports
This is the feature that most guides skip, but it is the one that drives ongoing value. Instead of team members remembering to check a dashboard, Metabase can push a snapshot of any dashboard to email or Slack on a schedule.
From a saved dashboard, click the share icon (arrow pointing up) and select Set up a subscription. Choose email or Slack, configure the recipients and schedule (daily, weekly, or custom), and save. Metabase renders the dashboard as a PNG and sends it at the scheduled time.
For Slack, you need to connect Metabase to a Slack workspace once from Settings > Admin > Slack. This is a one-time OAuth flow. After that, any subscription can target any Slack channel.
Teams using this feature report that it replaces most of their manual reporting work. A weekly email with the previous week's key metrics takes about 10 minutes to set up and runs indefinitely without maintenance.
Managing Permissions
Metabase uses a group-based permission system. From Settings > Admin > Permissions, you assign each group's access level to each database: unrestricted (full access), limited (restricted to specific tables or rows), or no self-service (users can view dashboards but cannot write their own queries).
For most small teams, two groups work well: Admins who can connect databases and manage settings, and All Users who can query and build dashboards but cannot change the configuration. If you have sensitive tables (payroll, personal data), create a restricted group and use row-level permissions to limit what those users see.
Keeping Metabase Up to Date
Metabase releases updates roughly every four to six weeks. For self-hosted deployments, update by pulling the latest Docker image:
docker pull metabase/metabase:latest
docker stop metabase && docker rm metabase
# then re-run the docker run command above
Because Metabase stores all state in the external PostgreSQL database, the update preserves all saved questions, dashboards, and user accounts. Always take a database backup before upgrading in production.
What Metabase Does Not Do Well
Metabase is not a data transformation tool. It reads from your existing tables. If your raw data needs cleaning, joining, or aggregating before it is useful, that work happens upstream - in dbt, in your data warehouse, or in a staging pipeline. Teams often pair Metabase with a transformation layer precisely because of this.
Metabase also does not handle real-time streaming data. Queries run against your database on demand. For dashboards that need sub-second refresh rates, purpose-built tools like Grafana with a time-series database are better suited.
For teams that want to skip the database connection entirely and analyze files or spreadsheets through natural language, a tool like VSLZ handles uploads directly without requiring a connected warehouse.
Summary
Metabase is the fastest path to self-serve analytics for teams that have data in a database but lack the engineering capacity to build a custom reporting layer. The cloud version removes all infrastructure burden. The self-hosted version is free and runs on modest hardware. Either way, the question builder and dashboard tools are accessible enough that a non-technical operations manager can produce useful analysis on day one.
FAQ
Is Metabase free to use?
Metabase has a free open-source tier that you self-host. The hosted Metabase Cloud version starts at $85 per month for up to 5 users (billed annually). The open-source version has no usage limits - you pay only for the server you run it on. Enterprise features like SSO, advanced permissions, and embedding require a paid license.
How do I connect Metabase to PostgreSQL?
In Metabase, go to Settings > Admin > Databases > Add database. Select PostgreSQL from the database type dropdown. Enter your host, port (default 5432), database name, username, and password. If your database is on a remote server, make sure Metabase's IP address is allowed through the firewall. Click Save and Metabase will test the connection. If you are using Metabase Cloud, you may need to whitelist Metabase's published IP range in your database's security group.
Can non-technical users use Metabase without SQL?
Yes. Metabase's Simple Question builder lets users filter, group, and aggregate data through a point-and-click interface with no SQL required. Users select a table, apply filters using dropdowns and date pickers, and choose a summarization method. Metabase automatically picks a chart type based on the result shape. The native SQL editor is available for advanced users but is not required.
What databases does Metabase support?
Metabase supports over 20 database types including PostgreSQL, MySQL, MariaDB, SQLite, BigQuery, Snowflake, Amazon Redshift, MongoDB, MS SQL Server, Oracle, Druid, Presto, SparkSQL, and ClickHouse. Support for additional databases is available through community-built drivers. Metabase does not connect to Google Sheets, Excel, or CSV files directly.
How do I set up automated dashboard reports in Metabase?
Open a saved dashboard and click the share icon (upward arrow) in the top right corner. Select Set up a subscription. Choose email or Slack, enter the recipient addresses or Slack channel name, set the schedule (daily, weekly, or custom cron), and save. Metabase renders the full dashboard as a static image and delivers it at the specified time. For Slack delivery, you first need to connect Metabase to your Slack workspace once from Settings > Admin > Slack.


