[{"data":1,"prerenderedAt":135},["ShallowReactive",2],{"seo-verification":3,"blog-how-to-self-host-metabase-on-a-vps-open-source-bi-dashboards-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":78,"ctaBody":79,"ctaButton":80,"ctaUrl":81,"relatedPosts":82},168,"how-to-self-host-metabase-on-a-vps-open-source-bi-dashboards",{"fr":10,"en":8,"ar":11},"self-host-metabase-vps","استضافة-metabase-على-vps-لوحات-ذكاء-أعمال-مفتوحة-المصدر","How to Self-Host Metabase on a VPS: Open-Source BI Dashboards","Deploy Metabase on your VPS: connect any SQL database and build dashboards and charts in the browser, with a companion Postgres, on infrastructure you control.",5,0,false,"2026-07-06T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-metabase-vps-poster.svg",{"categorySlug":30,"appSlug":31},"databases","metabase","Metabase (AGPL, ~46k stars) is the easiest way to put self-service dashboards on top of a database you already run — PostgreSQL, MySQL, ClickHouse and dozens more — without a per-seat USD subscription to a foreign BI SaaS. Non-technical users build questions and charts by clicking; analysts drop into raw SQL when they need it. In this guide you deploy Metabase and its companion metadata Postgres as a two-container Docker stack on a VPS, so your entire analytics layer stays on infrastructure you control.",[34,38,49,52,74],{"type":35,"title":36,"body":37},"h2","Why self-host your BI dashboards","Hosted BI tools are convenient until the per-seat bill arrives — and until you realise your product, revenue and customer data are being copied into a third-party SaaS priced in USD. Metabase flips that: it is open source (AGPL), self-hostable, and connects to a database you already own. Run it on a VPS behind your own domain and your analytics layer never leaves your server. You pay a fixed monthly cost for the VPS, not a growing per-user subscription, and your data stays on infrastructure you control — which for a Moroccan team also means data sovereignty, not a datacenter on another continent.",{"type":39,"title":40,"items":41},"ul","What Metabase gives you",[42,43,44,45,46,47,48],"A visual query builder so non-technical users create charts and questions by clicking — with a full SQL editor for analysts.","Interactive dashboards with filters, drill-through and scheduled refresh.","Connectors for 20+ databases: PostgreSQL, MySQL\u002FMariaDB, SQL Server, ClickHouse, BigQuery, Redshift, Snowflake and more.","Scheduled subscriptions and threshold alerts delivered to email or Slack.","Group- and collection-level permissions plus row\u002Fcolumn controls so each team sees only its own data.","Embedded analytics to drop signed, filtered dashboards into your own app.","AGPL open source — no per-seat fee, its own state stored in a Postgres database you own.",{"type":35,"title":50,"body":51},"Requirements","A VPS with Ubuntu 22.04 (or Debian 12) and Docker installed. Metabase runs on the JVM, so give it room: 2 GB RAM is the realistic minimum and 4 GB is comfortable for a small team. The deployment is two containers — Metabase itself and a companion `postgres:16` that stores Metabase's own metadata (users, dashboards, saved questions). No domain is strictly required — Metabase answers on port 3000 via your server's IP — but you will want a reverse proxy for HTTPS in production.",{"type":53,"title":54,"steps":55},"steps","Deploy Metabase on your VPS",[56,59,62,65,68,71],{"title":57,"body":58},"Create a docker-compose stack","Metabase should store its own state in a real database, not the default embedded H2 file. Create a `docker-compose.yml` with two services: `metabase\u002Fmetabase:v0.62.3.6` and a companion `postgres:16`. Wire Metabase to Postgres with `MB_DB_TYPE=postgres`, `MB_DB_HOST=metabase-db`, `MB_DB_DBNAME=metabaseappdb`, `MB_DB_PORT=5432`, `MB_DB_USER=metabase` and a strong `MB_DB_PASS`. Use the same password for the Postgres container's `POSTGRES_PASSWORD`, mount a named volume for `\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata`, and set `restart: unless-stopped` on both.",{"title":60,"body":61},"Bring it up and wait for boot","Run `docker compose up -d`. On first start Metabase runs its database migrations against Postgres, which takes 60–120 seconds on a small VPS — this is normal. Poll readiness with `curl -f http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fhealth`; once it returns `{\"status\":\"ok\"}` the app is ready. The compose stack gates Metabase on the Postgres healthcheck so the app never starts before its database is up.",{"title":63,"body":64},"Finish the setup wizard","Open `http:\u002F\u002F\u003Cyour-server-ip>:3000`. Metabase redirects to the setup wizard: create the admin account, then connect the database you actually want to analyse — typically your application's PostgreSQL or MySQL, ideally a read replica so analytics queries never hit your production primary. Metabase scans the schema and your tables are query-ready in seconds.",{"title":66,"body":67},"Build a dashboard","Create a couple of questions with the visual query builder (a count over time, a breakdown by category), save them into a collection, and pin them onto a dashboard with a date filter. Switch any question to the native SQL editor when you need full control. Set up an email or Slack subscription to have the dashboard delivered on a schedule.",{"title":69,"body":70},"Add HTTPS and lock it down","Put Metabase behind a reverse proxy for a real domain and a certificate. With Caddy: `apt install caddy`, then a `\u002Fetc\u002Fcaddy\u002FCaddyfile` containing `bi.yourdomain.com { reverse_proxy localhost:3000 }` and `systemctl reload caddy` for an automatic Let's Encrypt cert. Point the DNS A record for `bi.yourdomain.com` at your VPS first, restrict port 3000 with `ufw allow from \u003Cproxy> to any port 3000`, and set a strong admin password — anyone who can log in can query every connected database.",{"title":72,"body":73},"Logging in for the first time","Open the address right after the installation: Metabase shows a welcome screen, then “Let's get started”, and creates an account for you from your name, your e-mail and the password you choose — this first account is automatically an administrator.",{"type":75,"title":76,"body":77},"tip","Point Metabase at a read replica, not your primary","Analytics queries can be heavy. Connect Metabase to a read replica or a dedicated reporting database rather than your production primary, so a slow dashboard query never slows down your live application. On a single VPS you can run a lightweight replica in its own container on the same private Docker network — Metabase reaches it by service name and your primary stays untouched.","Deploy Metabase on your VPS in one click","Stop paying per seat in USD for hosted BI. ServOrbit provisions a ready-to-use Metabase instance — companion Postgres pre-wired, health-checked, and reachable from your browser in minutes — on infrastructure you control.","Deploy Metabase","\u002Fvps-cloud?template=metabase",[83,99,120],{"id":84,"slug":85,"slugs":86,"title":89,"excerpt":90,"readTime":91,"views":15,"isPinned":16,"publishedAt":92,"category":93,"categories":94,"featuredImage":26,"bgImage":27,"posterImage":96,"relatedSolution":97},157,"how-to-self-host-nocodb-on-a-vps",{"fr":87,"en":85,"ar":88},"self-host-nocodb-vps","كيفية-استضافة-nocodb-ذاتيا-على-خادم-vps","How to Self-Host NocoDB on a VPS","Deploy NocoDB on your VPS for a self-hosted, open-source Airtable alternative. Turn any database into a smart spreadsheet with REST and GraphQL APIs, via Docker Compose.",2,"2026-01-20T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[95],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fself-host-nocodb-vps-poster.svg",{"categorySlug":30,"appSlug":98},"nocodb",{"id":100,"slug":101,"slugs":102,"title":105,"excerpt":106,"readTime":107,"views":15,"isPinned":16,"publishedAt":108,"category":109,"categories":115,"featuredImage":26,"bgImage":27,"posterImage":117,"relatedSolution":118},56,"postgresql-on-a-vps-a-reliable-and-controlled-database",{"fr":103,"en":101,"ar":104},"heberger-postgresql-vps","postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها","PostgreSQL on a VPS: a reliable and controlled database","Host PostgreSQL on a VPS: volumes, backups, restricted network access and sound configuration for your applications.",4,"2026-04-25T00:00:00+00:00",{"id":110,"name":111,"slug":112,"color":113,"icon":114},6,"Databases","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[116],{"id":110,"name":111,"slug":112,"color":113,"icon":114},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":30,"appSlug":119},"postgresql-stack",{"id":121,"slug":122,"slugs":123,"title":126,"excerpt":127,"readTime":107,"views":15,"isPinned":16,"publishedAt":128,"category":129,"categories":130,"featuredImage":26,"bgImage":27,"posterImage":132,"relatedSolution":133},65,"hosting-qdrant-on-a-vps",{"fr":124,"en":122,"ar":125},"heberger-qdrant-vps","استضافة-qdrant-على-خادم-vps","Hosting Qdrant on a VPS","Host Qdrant on your VPS: a high-performance vector database written in Rust for semantic search and RAG. A Docker, API key and SSL guide.","2026-04-16T00:00:00+00:00",{"id":110,"name":111,"slug":112,"color":113,"icon":114},[131],{"id":110,"name":111,"slug":112,"color":113,"icon":114},"\u002Fblog\u002Fcovers\u002Fheberger-qdrant-vps-poster.svg",{"categorySlug":30,"appSlug":134},"qdrant",1787581005874]