Guide de déploiement

Héberger Metabase sur un VPS : tableaux de bord BI open source

Déployer sur un VPS Cloud →

Tutoriel

Héberger Metabase sur un VPS : tableaux de bord BI open source

Self-hosting9 min de lecture6 étapes

Metabase (AGPL, ~46k étoiles) est le moyen le plus simple de poser des tableaux de bord en libre-service au-dessus d'une base de données que vous exploitez déjà — PostgreSQL, MySQL, ClickHouse et bien d'autres — sans abonnement par utilisateur en dollars auprès d'un SaaS de BI étranger. Les utilisateurs non techniques construisent questions et graphiques en cliquant ; les analystes basculent en SQL brut quand ils en ont besoin. Dans ce guide, vous déployez Metabase et son Postgres de métadonnées compagnon sous forme de pile Docker à deux conteneurs sur un VPS, pour que toute votre couche analytique reste sur une infrastructure que vous maîtrisez. La version de référence est Metabase 64.1 (LTS, sortie le 6 octobre 2026, support jusqu'au 1er décembre 2027) — si vous tournez encore sur v63, migrez avant le 1er novembre 2026, date de fin de support sécurité.

Sommaire· Pourquoi auto-héberger vos tableaux de bord BI1/10
  1. 01Pourquoi auto-héberger vos tableaux de bord BI
  2. 02Ce que Metabase vous apporte
  3. 03Prérequis
  4. 04Déployer Metabase sur votre VPS
  5. 05Mettre à jour vers Metabase 64 (LTS)
  6. 06Alertes, abonnements et rapports planifiés
  7. 07Connecteurs supportés : bien au-delà du SQL classique
  8. 08Metabase Open Source, Pro et Cloud : ce qui change
  9. 09Dépannage : erreurs courantes
  10. 10Faites pointer Metabase vers une réplique en lecture, pas vers votre base primaire

Pourquoi auto-héberger vos tableaux de bord BI

Les outils de BI hébergés sont pratiques… jusqu'à ce que la facture par utilisateur tombe — et jusqu'à ce que vous réalisiez que vos données produit, chiffre d'affaires et clients sont recopiées dans un SaaS tiers facturé en dollars. Metabase renverse la donne : il est open source (AGPL), auto-hébergeable, et se connecte à une base de données qui vous appartient déjà. Faites-le tourner sur un VPS derrière votre propre domaine et votre couche analytique ne quitte jamais votre serveur. Vous payez un coût mensuel fixe pour le VPS, pas un abonnement par utilisateur qui gonfle, et vos données restent sur une infrastructure que vous maîtrisez — ce qui, pour une équipe marocaine, signifie aussi la souveraineté des données, pas un datacenter dont vous ignorez la localisation.

Ce que Metabase vous apporte

  • Un constructeur de requêtes visuel pour que les utilisateurs non techniques créent graphiques et questions en cliquant — avec un éditeur SQL complet pour les analystes.
  • Des tableaux de bord interactifs avec filtres, exploration détaillée (drill-through) et actualisation planifiée.
  • Des connecteurs pour plus de 20 bases de données : PostgreSQL, MySQL/MariaDB, SQL Server, ClickHouse, BigQuery, Redshift, Snowflake, MongoDB, Athena, Spark, Druid et d'autres encore.
  • Des abonnements programmés et des alertes de seuil envoyés par e-mail ou Slack.
  • Des permissions au niveau des groupes et des collections, plus des contrôles par ligne et par colonne, pour que chaque équipe ne voie que ses propres données.
  • De l'analytique embarquée pour intégrer des tableaux de bord signés et filtrés directement dans votre propre application.
  • Open source sous AGPL — aucun frais par utilisateur, son propre état stocké dans une base de données Postgres qui vous appartient.

Prérequis

Un VPS sous Ubuntu 22.04 (ou Debian 12) avec Docker installé. Metabase tourne sur la JVM, alors donnez-lui de la marge : 2 Go de RAM est le minimum réaliste et 4 Go est confortable pour une petite équipe. Par défaut, la JVM alloue un heap de 1 500 MB ; sur un VPS à 2 Go vous pouvez le plafonner à 1 200 MB avec JAVA_OPTS=-Xmx1200m, et le porter à 2 Go sur un 4 Go (-Xmx2g). Le déploiement se compose de deux conteneurs — Metabase lui-même et un postgres:16 compagnon qui stocke les métadonnées propres à Metabase (utilisateurs, tableaux de bord, questions enregistrées). Aucun domaine n'est strictement requis — Metabase répond sur le port 3000 via l'IP de votre serveur — mais vous voudrez un reverse proxy pour le HTTPS en production.

Déployer Metabase sur votre VPS

  1. Créer une pile docker-compose

    Metabase doit stocker son propre état dans une vraie base de données, pas dans le fichier H2 embarqué par défaut. Créez un docker-compose.yml avec deux services : metabase/metabase:v0.64.1 et un postgres:16 compagnon. Reliez Metabase à Postgres avec MB_DB_TYPE=postgres, MB_DB_HOST=metabase-db, MB_DB_DBNAME=metabaseappdb, MB_DB_PORT=5432, MB_DB_USER=metabase et un MB_DB_PASS robuste. Utilisez le même mot de passe pour le POSTGRES_PASSWORD du conteneur Postgres, montez un volume nommé pour /var/lib/postgresql/data, et définissez restart: unless-stopped sur les deux. Ajoutez aussi METABASE_SITE_URL=https://bi.votre-domaine.com (l'URL publique finale) et MB_ENCRYPTION_SECRET_KEY (une chaîne aléatoire de 32+ caractères) pour chiffrer les identifiants de connexion aux bases de données en base — sans cette clé, les mots de passe sont stockés en clair dans Postgres.

  2. Ajuster la mémoire JVM

    Ajoutez la variable JAVA_OPTS=-Xmx1500m dans la section environment du service Metabase si vous avez 2 Go de RAM, ou -Xmx2g si vous avez 4 Go. Sans ce réglage, la JVM peut dépasser la mémoire disponible et déclencher un OOM (Out Of Memory) qui tue le conteneur sans message d'erreur lisible. Vous détecterez un OOM par docker inspect metabase --format '{{.State.OOMKilled}}' qui revient true, ou par dmesg | grep -i oom.

  3. Lancer la pile et attendre le démarrage

    Lancez docker compose up -d. Au premier démarrage, Metabase exécute ses migrations de base de données sur Postgres, ce qui prend 60 à 120 secondes sur un petit VPS — c'est normal. Sondez la disponibilité avec curl -f http://localhost:3000/api/health ; dès qu'il renvoie {"status":"ok"}, l'application est prête. La pile compose conditionne Metabase au healthcheck de Postgres, si bien que l'application ne démarre jamais avant que sa base de données ne soit prête.

  4. Terminer l'assistant de configuration

    Ouvrez http://<your-server-ip>:3000. Metabase redirige vers l'assistant de configuration : créez le compte administrateur, puis connectez la base de données que vous voulez réellement analyser — en général le PostgreSQL ou le MySQL de votre application, idéalement une réplique en lecture pour que les requêtes analytiques ne touchent jamais votre base primaire de production. Metabase scanne le schéma et vos tables sont interrogeables en quelques secondes.

  5. Construire un tableau de bord

    Créez deux ou trois questions avec le constructeur de requêtes visuel (un décompte dans le temps, une répartition par catégorie), enregistrez-les dans une collection et épinglez-les sur un tableau de bord doté d'un filtre par date. Basculez n'importe quelle question vers l'éditeur SQL natif lorsque vous avez besoin d'un contrôle total. Mettez en place un abonnement par e-mail ou Slack pour recevoir le tableau de bord à intervalles réguliers.

  6. Ajouter le HTTPS et verrouiller l'accès

    Placez Metabase derrière un reverse proxy pour obtenir un vrai domaine et un certificat. Avec Caddy : apt install caddy, puis un /etc/caddy/Caddyfile contenant bi.votre-domaine.com { reverse_proxy localhost:3000 } et systemctl reload caddy pour un certificat Let's Encrypt automatique. Faites d'abord pointer l'enregistrement DNS A de bi.votre-domaine.com vers votre VPS, restreignez le port 3000 avec ufw allow from <proxy> to any port 3000, et définissez un mot de passe administrateur robuste — quiconque parvient à se connecter peut interroger toutes les bases de données connectées.

Mettre à jour vers Metabase 64 (LTS)

Si vous tournez sur la v63 ou une version antérieure, migrez avant le 1er novembre 2026 : le support sécurité de la v63 s'arrête à cette date. Metabase 64.1 est la branche LTS recommandée, supportée jusqu'au 1er décembre 2027. La procédure de mise à jour est simple avec Docker : stoppez la pile (docker compose down), remplacez v0.62.3.6 par v0.64.1 dans votre docker-compose.yml, puis relancez (docker compose up -d). Metabase applique automatiquement les migrations de schéma au démarrage. Sauvegardez votre volume Postgres (docker exec metabase-db pg_dump -U metabase metabaseappdb > backup-avant-v64.sql) avant la mise à jour, et vérifiez que le conteneur démarre correctement avec curl -f http://localhost:3000/api/health avant de supprimer la sauvegarde.

Alertes, abonnements et rapports planifiés

Metabase peut envoyer vos tableaux de bord par e-mail ou Slack selon un planning. Pour les e-mails, configurez un serveur SMTP dans Administration → Paramètres d'e-mail : renseignez METABASE_SMTP_HOST, METABASE_SMTP_PORT, METABASE_SMTP_USER et METABASE_SMTP_PASSWORD comme variables d'environnement, ou directement dans l'interface. Une fois le SMTP actif, chaque tableau de bord propose un bouton « S'abonner » : choisissez les destinataires, la fréquence (quotidien, hebdomadaire) et le format (image PNG ou pièce jointe). Les alertes de seuil fonctionnent sur n'importe quelle question chiffrée : Metabase évalue la requête selon un planning et envoie une notification quand la valeur dépasse ou passe sous un seuil. C'est idéal pour surveiller des KPIs clés — chiffre d'affaires quotidien, nombre d'erreurs, taux de conversion — sans avoir à ouvrir le tableau de bord.

Connecteurs supportés : bien au-delà du SQL classique

Metabase Open Source se connecte nativement à PostgreSQL, MySQL/MariaDB, SQL Server, SQLite, H2, Redshift, BigQuery, Snowflake, Athena, Druid, ClickHouse, MongoDB (lecture seule via le pilote officiel), Presto/Trino et SparkSQL. La version Pro/Enterprise ajoute des pilotes certifiés supplémentaires et un support officiel. Pour les bases non listées, des pilotes communautaires JSON sont disponibles : vous les placez dans le répertoire /plugins du conteneur (montez un volume) et Metabase les détecte au démarrage. L'atout ClickHouse mérite d'être souligné : ClickHouse est de plus en plus utilisé pour l'analytique temps réel à volume élevé, et Metabase s'y connecte nativement depuis la v44 — une combinaison redoutable pour des tableaux de bord en quasi-temps réel sans entrepôt de données dédié.

Metabase Open Source, Pro et Cloud : ce qui change

L'édition Open Source (AGPL) couvre tous les cas d'usage analytiques courants : tableaux de bord, alertes, abonnements, embedded analytics de base, contrôle d'accès par groupe. La version Pro (licence commerciale) ajoute la gestion des sous-organisations (multi-tenant), les tableaux de bord interactifs avec variables de session pour l'embedded analytics avancée, l'audit des accès et l'authentification SSO SAML. La version Cloud (SaaS géré par Metabase Inc.) élimine la maintenance mais transfert vos données vers des serveurs tiers — ce qui, pour les données sensibles ou les exigences de conformité, suffit à justifier l'auto-hébergement. Sur un VPS à 8 € par mois, l'édition Open Source couvre la quasi-totalité des besoins d'une PME, sans aucune limitation d'utilisateurs.

Dépannage : erreurs courantes

Conteneur qui redémarre en boucle / OOM. Vérifiez docker inspect metabase --format '{{.State.OOMKilled}}' — si true, augmentez la mémoire du VPS ou réduisez le heap avec JAVA_OPTS=-Xmx1200m. Un VPS à 1 Go de RAM est trop juste ; 2 Go est le minimum. JDBC connection refused au démarrage. Metabase essaie de se connecter à Postgres avant que celui-ci ne soit prêt. Assurez-vous que le healthcheck est bien défini sur le service Postgres dans votre docker-compose.yml et que Metabase dépend de ce healthcheck (depends_on: metabase-db: condition: service_healthy). Temps de démarrage très long (> 5 min). Sur un VPS à faible CPU, les migrations initiales peuvent prendre jusqu'à 5 minutes. C'est normal au premier lancement ; les démarrages suivants sont rapides (15-30 secondes). Tableau de bord lent ou timeout. Connectez Metabase à une réplique en lecture plutôt qu'à la base primaire. Si ce n'est pas possible, ajoutez MB_QUERY_CACHING_TTL_RATIO=10 pour activer la mise en cache des requêtes. E-mails non reçus. Vérifiez les logs SMTP dans Administration → Journaux d'audit. Testez la connexion SMTP avec Administration → Paramètres d'e-mail → Envoyer un e-mail de test.

Faites pointer Metabase vers une réplique en lecture, pas vers votre base primaire

Les requêtes analytiques peuvent être lourdes. Connectez Metabase à une réplique en lecture ou à une base de reporting dédiée plutôt qu'à votre base primaire de production, ainsi une requête de tableau de bord lente ne ralentira jamais votre application en production. Sur un seul VPS, vous pouvez faire tourner une réplique légère dans son propre conteneur sur le même réseau Docker privé — Metabase l'atteint par son nom de service et votre base primaire reste intacte.

Déployez Metabase sur votre VPS en un clic

Cessez de payer par utilisateur en dollars pour de la BI hébergée. ServOrbit provisionne une instance Metabase prête à l’emploi — Postgres compagnon pré-câblé, vérifié par healthcheck et accessible depuis votre navigateur en quelques minutes — sur une infrastructure que vous maîtrisez.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet