Ce guide suit la page Running Metabase on Docker, relue le 15 octobre 2026 pour la version 0.64. L'image utilisée est l'édition libre, metabase/metabase, dans la version v0.64.2.5, la plus récente publiée à cette date sur Docker Hub.
La base d'application
Metabase garde ses propres données, comptes, questions, tableaux de bord et réglages, dans une base qu'il appelle base d'application. Par défaut, c'est une base H2 écrite dans un fichier à l'intérieur du conteneur. La documentation prévient que supprimer le conteneur fait perdre ces données, et demande une base prête pour la production pour un usage réel.
Ne confondez pas cette base avec celles que vous analysez : Metabase lit vos données ailleurs, il n'écrit que dans sa base d'application.
Installer Metabase avec PostgreSQL
- Créez un dossier et placez-vous dedans :
mkdir ~/metabase && cd ~/metabase - Écrivez un fichier
.envavec un mot de passe que vous générez vous-même, lettres et chiffres :
MB_DB_PASS=un-mot-de-passe-long-et-unique
- Écrivez
compose.yaml, qui reprend l'exemple de la documentation avec une version fixée, un port publié sur la seule adresse locale et un volume nommé pour PostgreSQL :
services:
metabase:
image: metabase/metabase:v0.64.2.5
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabaseappdb
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: ${MB_DB_PASS}
MB_DB_HOST: postgres
volumes:
- /dev/urandom:/dev/random:ro
depends_on:
- postgres
healthcheck:
test: curl --fail -I http://localhost:3000/api/health || exit 1
interval: 15s
timeout: 5s
retries: 5
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: metabase
POSTGRES_DB: metabaseappdb
POSTGRES_PASSWORD: ${MB_DB_PASS}
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
pg_data:
- Lancez :
docker compose up -d - Suivez le démarrage avec
docker compose logs -f metabase, puisCtrl+C: le premier lancement prend un moment, le temps de préparer la base d'application.
La documentation présente son propre fichier d'exemple comme non destiné à la production. Les écarts ci-dessus vont dans ce sens : version fixée au lieu de latest, mot de passe hors du fichier, port limité au serveur lui-même.
Ouvrir Metabase en HTTPS
Le port 3000 n'est publié que sur l'adresse locale : passez par un proxy inverse pour servir Metabase sur un nom de domaine. Avec Caddy lancé dans un conteneur sur un réseau partagé nommé proxy, Metabase doit rejoindre ce réseau sans quitter le réseau propre au projet, où il retrouve PostgreSQL. D'après la documentation des réseaux de Compose, relue le 15 octobre 2026, un service qui liste ses réseaux ne rejoint que ceux-là : il faut donc nommer default. Ajoutez au service metabase :
networks:
- default
- proxy
Laissez postgres sans clé networks : il reste sur le seul réseau default, hors de portée du proxy. Déclarez enfin le réseau partagé à la fin du fichier, au même niveau que volumes :
networks:
proxy:
external: true
Le réseau proxy doit exister avant docker compose up, sinon Compose s'arrête sur une erreur de réseau introuvable. Relancez avec docker compose up -d, puis ajoutez au Caddyfile :
stats.votre-domaine.fr {
reverse_proxy metabase:3000
}
Le sous-domaine doit pointer vers l'adresse IP du serveur. À la première ouverture, Metabase demande de créer le compte administrateur : faites-le sans attendre, la première personne qui ouvre la page le crée.
Relier vos données
Dans les réglages d'administration de Metabase, rubrique des bases de données, ajoutez une base : type, hôte, port, nom de la base, utilisateur et mot de passe.
- Créez un utilisateur en lecture seule dans la base analysée, réservé à Metabase. Un tableau de bord n'a pas besoin d'écrire.
- Une base qui tourne dans un conteneur du même serveur se joint par le nom de son service, si les deux conteneurs partagent un réseau Docker. La documentation rappelle que la connexion part de l'intérieur du conteneur de Metabase :
localhosty désigne Metabase lui-même. - Une base distante doit accepter la connexion depuis l'adresse du serveur, de préférence chiffrée.
Sauvegarder et mettre à jour
Ce qui compte, c'est la base d'application, dans le volume pg_data. Sauvegardez-la par un export PostgreSQL : docker compose exec -T postgres pg_dump -U metabase metabaseappdb > metabase.sql (l'option -T évite le pseudo-terminal, qui abîmerait le fichier). Gardez une copie hors du serveur.
Pour mettre à jour :
- Sauvegardez la base d'application.
- Lisez les notes de version de Metabase.
- Changez l'étiquette de l'image dans
compose.yaml, puis lancezdocker compose pulletdocker compose up -d.
D'après la page de mise à jour, Metabase fait lui-même les migrations de sa base d'application au démarrage d'une nouvelle version, et revenir en arrière après une version majeure demande de restaurer une sauvegarde : c'est pourquoi elle passe avant.
Sur un VPS Hubspace
Docker et Compose sont installés à la livraison, utilisables sans sudo par le compte admin. Le pare-feu réseau n'ouvre que les ports 22, 80 et 443 : le port 3000 reste fermé depuis Internet, même publié, et Metabase se sert par le proxy en HTTPS. Une base de données hébergée sur une offre Plesk n'est pas joignable depuis l'extérieur : Metabase ne peut pas s'y connecter directement. La sauvegarde quotidienne du serveur couvre son disque, pas le disque supplémentaire monté sur /mnt/data : voir Les sauvegardes d'un VPS. Les serveurs VPS décrivent la mémoire de chaque taille.
Questions fréquentes
Metabase est-il gratuit ?
L'édition libre, image metabase/metabase, l'est. Metabase vend aussi des éditions Pro et Enterprise, qui utilisent l'image metabase/metabase-enterprise et ajoutent des fonctions payantes.
Peut-on garder H2 pour un essai ?
Oui, le temps de découvrir l'outil. Gardez en tête que tout ce que vous construisez disparaît avec le conteneur. Avant d'y mettre du travail, passez à PostgreSQL.
Quelle mémoire prévoir ?
La page d'installation n'en donne pas. Metabase tourne sur Java, et sa consommation dépend du nombre d'utilisateurs et de la taille des requêtes : surveillez-la avec docker stats les premiers jours, et lisez la mémoire disponible du serveur comme l'explique Mémoire et swap sous Linux.
Articles liés
- Vaultwarden : installer et sécuriser avec DockerInstaller Vaultwarden avec Docker Compose sur un serveur Linux, derrière Caddy en HTTPS, fermer les inscriptions et protéger la page d'administration.
- Installer n8n avec Docker Compose sur un serveurInstaller n8n avec Docker Compose sur un serveur Linux, derrière Traefik en HTTPS, avec les bonnes variables pour les webhooks, sauvegarder et mettre à jour.
- Nextcloud Docker : installer Nextcloud sur un VPSInstaller Nextcloud avec Docker sur un VPS grâce à l'image officielle All-in-One, ouvrir son interface sans l'exposer et le servir sur votre domaine en HTTPS.