Guide de déploiement

Héberger Mattermost sur votre propre VPS

Déployer sur un VPS Cloud →

Tutoriel

Héberger Mattermost sur votre propre VPS

Self-hosting9 min de lecture7 étapes

Mattermost est une plateforme de messagerie d'équipe open source, souvent présentée comme l'alternative auto-hébergée à Slack. La déployer sur votre VPS garantit que vos conversations professionnelles restent sur votre infrastructure. Ce guide couvre l'installation Docker complète avec PostgreSQL, la configuration HTTPS/WebSocket, les intégrations (Gitea, Jira, Zoom), les sauvegardes, le dépannage et les nouveautés de Mattermost v10.

Sommaire· Pourquoi self-héberger Mattermost sur un VPS1/11
  1. 01Pourquoi self-héberger Mattermost sur un VPS
  2. 02Bénéfices concrets d'un Mattermost auto-hébergé
  3. 03Prérequis matériels et logiciels
  4. 04Déployer Mattermost avec Docker et SSL
  5. 05Mattermost v10 : les nouveautés clés
  6. 06Intégrations : webhooks, Gitea, Jira et Zoom
  7. 07Sauvegardes : base de données et fichiers
  8. 08Ce que l'édition gratuite limite depuis la version 11
  9. 09Mattermost vs Slack vs Rocket.Chat
  10. 10Dépannage : erreurs courantes
  11. 11La documentation officielle

Pourquoi self-héberger Mattermost sur un VPS

Les messageries SaaS facturent par utilisateur actif et conservent l'historique de vos échanges sur leurs serveurs. Mattermost renverse cette logique : une instance auto-hébergée sur VPS abrite des équipes entières sans coût par siège sur l'édition Team, avec l'historique complet et un stockage de fichiers que vous contrôlez. Pour une agence ou une entreprise soumise à des contraintes de confidentialité, héberger la messagerie en propre signifie que ni les messages, ni les fichiers partagés, ni les métadonnées ne transitent par un tiers. Mattermost s'intègre par ailleurs nativement avec des forges Git, des outils de CI/CD et des webhooks entrants/sortants, ce qui en fait un hub de communication central pour les équipes techniques.

Contrairement à Slack qui impose son infrastructure et ses tarifs par palier, une instance Mattermost vous donne un contrôle total sur la rétention des messages, les politiques d'archivage, les journaux d'audit et les intégrations. C'est particulièrement important pour les équipes soumises à des réglementations sectorielles — santé, finance, défense — où les données ne peuvent pas quitter un périmètre défini.

Bénéfices concrets d'un Mattermost auto-hébergé

  • Historique complet sur l'édition Team — l'édition gratuite Entry plafonne l'historique consultable à 10 000 messages depuis la version 11 (voir section dédiée).
  • Stockage des fichiers partagés sur votre VPS ou un bucket S3 que vous maîtrisez.
  • Webhooks entrants/sortants et slash commands pour brancher CI, monitoring et alertes.
  • Authentification entreprise : LDAP/AD, SAML et OAuth selon l'édition.
  • Applications desktop et mobiles officielles pointant vers votre propre domaine.
  • Conformité et souveraineté des données : aucune conversation hors de votre infrastructure.
  • Plugin Boards intégré (v10+) pour la gestion de projets Kanban/Tableau directement dans la messagerie.
  • Appels audio/vidéo HD via le plugin Calls — conférences sans outil tiers.

Prérequis matériels et logiciels

Mattermost est plus exigeant qu'une forge Git car il maintient des connexions WebSocket persistantes. Comptez 2 vCPU et 4 Go de RAM pour une équipe jusqu'à 50 utilisateurs actifs ; visez 8 Go au-delà ou si vous activez la recherche avancée (Elasticsearch). Pour une organisation de 100 à 500 utilisateurs ou si vous activez les appels vidéo HD via le plugin Calls, comptez 16 Go de RAM et 4 vCPU. PostgreSQL est la base recommandée depuis la v10 — MySQL est toujours supporté mais PostgreSQL est plus adapté aux gros volumes et à la recherche plein-texte. Prévoyez 30 Go de SSD minimum, davantage si vous stockez beaucoup de fichiers localement.

Côté logiciel : Docker Engine 24+ et Docker Compose v2, un sous-domaine chat.votredomaine.com avec enregistrement A, et un reverse proxy capable de relayer correctement les connexions WebSocket (Upgrade/Connection). Un certificat TLS valide est requis — les clients mobiles refusent les connexions HTTP. Pensez également à ouvrir le port 8443 si vous activez les appels vidéo (plugin Calls/RTCD) et à configurer le serveur TURN pour les connexions derrière NAT.

Déployer Mattermost avec Docker et SSL

  1. Préparer le VPS

    Installez Docker et Compose, puis récupérez le dépôt officiel mattermost-docker ou créez /opt/mattermost. Augmentez si besoin vm.max_map_count et les limites de fichiers ouverts — Mattermost ouvre de nombreuses connexions simultanées :
    sysctl -w vm.max_map_count=262144 echo 'vm.max_map_count=262144' >> /etc/sysctl.conf

  2. Configurer PostgreSQL et les volumes

    Dans le docker-compose.yml, déclarez un service postgres avec un mot de passe fort et des volumes persistants pour /var/lib/postgresql/data. Pour Mattermost, montez des volumes dédiés à config, data, logs et plugins afin de tout conserver hors du conteneur.

  3. Lancer la stack Mattermost

    Renseignez les variables MM_SQLSETTINGS_DATASOURCE et MM_SERVICESETTINGS_SITEURL (en HTTPS), puis exécutez docker compose up -d. Suivez docker compose logs -f jusqu'au message indiquant que le serveur écoute sur le port 8065.

  4. Configurer le reverse proxy HTTPS avec WebSocket

    Avec Nginx, proxifiez vers http://127.0.0.1:8065 et ajoutez impérativement ces en-têtes WebSocket :
    proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400;
    Sans ces lignes, la messagerie temps réel ne fonctionnera pas. Avec Caddy, reverse_proxy localhost:8065 gère le WebSocket automatiquement.

  5. Activer le certificat SSL (Let's Encrypt)

    Obtenez le certificat avec certbot --nginx -d chat.votredomaine.com ou laissez Caddy le provisionner seul. Vérifiez que SiteURL est bien en https:// dans la configuration, sinon les clients mobiles refuseront de se connecter.

  6. Créer l'équipe et durcir l'instance

    Ouvrez https://chat.votredomaine.com, créez le compte administrateur système et votre première équipe. Désactivez l'inscription ouverte (Allow Email Invitations uniquement), configurez SMTP pour les e-mails de notification, et restreignez la création d'équipes aux administrateurs.

  7. Se connecter la première fois

    Ouvrez l'URL dès la fin de l'installation : Mattermost affiche un écran de création de compte, et le TOUT PREMIER compte créé reçoit automatiquement le rôle d'administrateur système. Créez-le immédiatement.

Mattermost v10 : les nouveautés clés

Mattermost v10 (sorti fin 2024, branche Extended Support active en 2025–2026) a introduit plusieurs améliorations significatives pour les instances auto-hébergées :

Boards intégré en GA — le plugin Boards (Kanban/Tableau de bord) est désormais pré-packagé et activé par défaut. Vos équipes gèrent leurs projets directement depuis Mattermost sans outil externe.

Calls HD (plugin Calls v0.x) — conférences audio et vidéo HD directement dans les canaux, avec partage d'écran. L'installation Docker inclut le plugin ; il suffit d'activer MM_PLUGINSETTINGS_ENABLE=true.

SAML AES-256-GCM — chiffrement des assertions SAML renforcé pour les environnements Enterprise.

Connected Workspaces en GA — les canaux partagés entre plusieurs instances Mattermost passent de béta à disponibilité générale, permettant des espaces de travail fédérés.

Fin du support E10/E20 — si vous migrez depuis une ancienne licence, vérifiez votre plan avant de mettre à jour.

Intégrations : webhooks, Gitea, Jira et Zoom

Mattermost excelle comme hub centralisé pour les équipes techniques. Les intégrations les plus courantes en self-hosted :

Webhooks entrants — chaque canal dispose d'une URL webhook. Votre CI envoie un POST JSON quand un déploiement réussit ou échoue ; Mattermost l'affiche dans #ci-alerts. Configuration dans Intégrations → Webhooks entrants.

Webhooks sortants — Mattermost envoie une requête HTTP lorsqu'un message contient un mot-clé défini. Utile pour déclencher des pipelines depuis une conversation.

Gitea et GitLab — le plugin officiel Mattermost pour GitLab (compatible Gitea via webhooks JSON) notifie push, merge requests et issues dans les canaux de vos dépôts.

Jira — le plugin Jira permet de créer des tickets directement depuis un message Mattermost et de recevoir les mises à jour de statut dans les canaux.

Zoom — le plugin Zoom génère un lien de réunion en une commande slash /zoom dans n'importe quel canal. Alternative : utilisez le plugin Calls natif pour des réunions entièrement on-premise.

Sauvegardes : base de données et fichiers

Une instance Mattermost repose sur deux composants à sauvegarder régulièrement : la base PostgreSQL et le dossier de données.

Sauvegarde PostgreSQL avec pg_dump (depuis l'hôte, avec le conteneur en cours) :
docker exec mattermost-postgres pg_dump -U mmuser mattermost | gzip > /backups/mm-$(date +%Y%m%d).sql.gz

Sauvegarde du dossier data — montez le volume mattermost/data en externe et archivez-le :
tar czf /backups/mm-data-$(date +%Y%m%d).tar.gz /opt/mattermost/data

Restauration — pour restaurer : stoppez les conteneurs, importez le dump SQL dans un conteneur Postgres propre, remplacez le dossier data, puis docker compose up -d.

Pensez à tester la restauration au moins une fois : une sauvegarde non testée n'est pas une sauvegarde.

Ce que l'édition gratuite limite depuis la version 11

À partir de Mattermost 11, l'édition gratuite auto-hébergée — appelée Entry — plafonne l'historique consultable à 10 000 messages, tous canaux confondus et pour l'ensemble du serveur. Le point important est souvent mal compris : les messages plus anciens ne sont pas supprimés. Ils restent dans votre base de données, sur votre machine — ils cessent simplement d'être affichables et cherchables depuis l'application. Le changement a été mal reçu par la communauté, précisément parce qu'il porte sur des données que l'utilisateur héberge lui-même. Deux issues existent : passer à une édition payante pour lever le plafond, ou choisir un outil dont l'édition libre ne limite pas l'historique. Si votre usage est une messagerie d'équipe au long cours, mesurez votre volume mensuel avant de vous engager : 10 000 messages se consomment vite à plusieurs. Il existe une troisième voie, souvent ignorée : l'édition Team, gratuite elle aussi, ne plafonne PAS l'historique — mais elle ne gère pas le SSO et s'arrête à 250 utilisateurs. Le choix se fait donc entre un plafond d'historique (Entry) et un plafond d'utilisateurs sans SSO (Team).

Mattermost vs Slack vs Rocket.Chat

Faites défiler le tableau

CritèreMattermost (Team)Slack (gratuit)Rocket.Chat (CE)
Self-hostedOuiNon (SaaS)Oui
Historique messagesAucun plafond90 joursAucun plafond
Coût par siègeGratuit jusqu'à 250 utilisateursGratuit / 7,25 $/u/mois ProGratuit (open source)
Appels vidéo natifsPlugin Calls (HD)Intégration HuddlesPlugin Jitsi
Boards / PM intégréPlugin Boards (GA v10)Non (Canvases)Non
LDAP/SAMLÉditions payantesNon (SAML Enterprise+)Oui (inclus CE)
API & webhooksOui (entrants/sortants)OuiOui
Mobile (iOS/Android)Apps officiellesApps officiellesApps officielles

Dépannage : erreurs courantes

WebSocket SSL ne s'établit pas — vérifiez que votre bloc Nginx inclut proxy_set_header Upgrade $http_upgrade; et proxy_set_header Connection "upgrade";. Si le proxy est derrière Cloudflare, activez le mode WebSocket dans le dashboard Cloudflare (Network → WebSockets).

Erreur de connexion à la base de données — contrôlez que MM_SQLSETTINGS_DATASOURCE pointe bien vers le service postgres du Compose (postgres://mmuser:motdepasse@db:5432/mattermost). Le conteneur Mattermost doit être sur le même réseau Docker que postgres.

Mise à jour entre versions majeures — ne sautez pas de versions majeures. De v9 à v11 : passez d'abord par v10, attendez que la migration de schéma se termine (vérifiez les logs), puis montez vers v11. Consultez CHANGELOG.md officiel pour les breaking changes avant chaque saut.

Clients mobiles refusent de se connecterSiteURL doit être en https:// et le certificat valide. Un certificat auto-signé est refusé par les apps iOS/Android sans configuration MDM.

Pour les fichiers partagés, ne stockez pas tout sur le disque du VPS à long terme : configurez Mattermost en mode stockage objet S3 compatible. Cela découple le volume de données de la taille de votre VPS, simplifie radicalement les sauvegardes (le bucket est versionné indépendamment) et facilite une éventuelle montée en charge horizontale. Pensez aussi à activer la rétention des données pour purger automatiquement les vieux messages et maîtriser la croissance de PostgreSQL.

La documentation officielle

Pour la configuration avancée et les options propres à l'outil, référez-vous à la documentation officielle de Mattermost. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins, les mises à jour majeures et les cas d'usage spécifiques.

Montez votre Mattermost privé sur un VPS Cloud ServOrbit

Un VPS Cloud avec Docker préconfiguré et IP fixe vous permet de déployer Mattermost, PostgreSQL et le reverse proxy WebSocket sans frottement. Vos conversations restent chez vous.

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