Guide de déploiement

Héberger Chatwoot sur un VPS : support client omnicanal

Déployer sur un VPS Cloud →

Tutoriel

Héberger Chatwoot sur un VPS : support client omnicanal

Self-hosting8 min de lecture11 étapes

Intercom et Zendesk facturent par agent, ferment l'accès à vos propres données et font grimper la note dès que votre équipe grandit. Chatwoot (MIT, 34 k+ étoiles, v4.16.0) propose une alternative radicale : une plateforme de support client omnicanal open-source que vous hébergez sur votre propre VPS. Livechat sur votre site, e-mails, WhatsApp Business, Telegram, Facebook Messenger et Twitter/X DMs — toutes les conversations de vos clients dans une seule boîte de réception partagée, sans frais par agent, sans données qui quittent votre infrastructure.

Sommaire· Pourquoi auto-héberger votre support client1/8
  1. 01Pourquoi auto-héberger votre support client
  2. 02Ce que vous obtenez avec un Chatwoot auto-hébergé
  3. 03Prérequis
  4. 04Déployer Chatwoot sur un VPS en 6 étapes
  5. 05La documentation officielle
  6. 06Migrer de Chatwoot v3 vers v4
  7. 07Procédure de migration v3 → v4
  8. 08Correctif de sécurité v4.0.2 : invalidation des tokens

Pourquoi auto-héberger votre support client

Les solutions SaaS de support client ont un modèle économique simple : vous payez par agent et par canal, et vos données de clients sont stockées sur leurs serveurs. Pour une agence web ou une PME marocaine, cela représente rapidement plusieurs centaines de dirhams par mois dès que l'équipe dépasse deux ou trois personnes. Chatwoot inverse ce calcul : vous déployez la plateforme sur votre propre VPS, vous invitez autant d'agents que nécessaire, et vous connectez tous vos canaux sans frais supplémentaires. Vos échanges clients restent sur votre infrastructure — un argument de poids pour la conformité RGPD, la confiance client et la souveraineté des données.

Ce que vous obtenez avec un Chatwoot auto-hébergé

  • Boîte de réception partagée omnicanale : livechat, e-mail, WhatsApp, Telegram, Facebook Messenger et Twitter/X DMs dans un seul tableau de bord.
  • Widget livechat intégrable : une faqade personnalisable à ajouter à n'importe quel site web avec deux lignes de JavaScript.
  • Réponses prédéfinies et règles d'automatisation : affectation automatique, réponse de premier contact et routage par langue ou mot-clé.
  • Collaboration d'équipe : notes internes, affectation de conversations, mentions et files d'attente d'équipe visibles par tous les agents.
  • CRM intégré : profils des contacts avec historique des conversations, attributs personnalisés et étiquettes.
  • API REST et webhooks : intégration avec n8n, Activepieces ou votre propre backend.
  • Licence MIT — pas de tarification par agent, pas de données envoyées vers un tiers, souveraineté totale.

Prérequis

Chatwoot tourne avec une stack Ruby on Rails + Sidekiq + PostgreSQL 15 + Redis 7, soit quatre conteneurs Docker. Prévoyez un VPS avec au minimum 2 Go de RAM (4 Go recommandés pour des équipes de plus de 10 agents). Ubuntu 24.04 avec Docker est le chemin le plus rapide. Côté réseau, préparez un sous-domaine — support.votre-domaine.com par exemple — et un reverse proxy (Nginx ou Caddy) pour activer le HTTPS. Chatwoot exige un FRONTEND_URL en HTTPS pour que les redirections OAuth, les liens dans les e-mails et le script du widget livechat fonctionnent correctement.

Déployer Chatwoot sur un VPS en 6 étapes

  1. Déploiement en un clic depuis la marketplace ServOrbit

    Ouvrez votre panneau de contrôle ServOrbit, allez dans Marketplace → Collaboration et productivité → Chatwoot, puis cliquez sur Déployer. Docker récupère chatwoot/chatwoot:latest et démarre quatre conteneurs : PostgreSQL, Redis, le serveur web Rails et le worker Sidekiq. Au premier démarrage, la migration de la base de données s'exécute automatiquement — attendez 60 à 90 secondes avant que l'interface soit disponible.

  2. Créer le compte administrateur

    Rendez-vous sur http://<votre-ip-vps>:3000. Chatwoot affiche un assistant de première configuration : saisissez votre nom, votre adresse e-mail et un mot de passe fort. Ce compte devient le super-administrateur. Vous pourrez ensuite inviter des agents supplémentaires et créer des équipes depuis le panneau Paramètres.

  3. Configurer le FRONTEND_URL et activer HTTPS

    Pointez votre domaine vers le VPS (enregistrement A → IP du VPS). Installez Caddy (apt install -y caddy) et créez /etc/caddy/Caddyfile : support.votre-domaine.com { reverse_proxy localhost:3000 }. Rechargez Caddy (systemctl reload caddy). Mettez ensuite FRONTEND_URL=https://support.votre-domaine.com dans votre fichier .env et redémarrez le conteneur web : docker compose restart web. Chatwoot utilise cette URL pour les redirections OAuth, les liens dans les e-mails et le script du widget.

  4. Ajouter votre première boîte de réception

    Dans Chatwoot, allez dans Paramètres → Boîtes de réception → Ajouter une boîte. Choisissez Site web pour le livechat, E-mail pour les échanges SMTP/IMAP, ou un canal de messagerie comme WhatsApp Cloud API ou Telegram. Pour le livechat, copiez le snippet JavaScript généré et collez-le dans le <head> de votre site. Les visiteurs voient immédiatement la bulle de chat.

  5. Inviter les agents et configurer l'automatisation

    Allez dans Paramètres → Agents et envoyez des invitations par e-mail. Dans Paramètres → Automatisation, créez des règles pour affecter automatiquement les conversations (par exemple, WhatsApp → équipe commerciale, e-mail → facturation) et envoyer des messages de premier contact en dehors des heures d'ouverture. Le worker Sidekiq prend en charge toutes les tâches asynchrones : envoi d'e-mails, déclenchement de webhooks et notifications push.

  6. Connecter WhatsApp Business (optionnel)

    Créez une application Meta for Developers et activez l'API WhatsApp Business Cloud. Dans Chatwoot → Paramètres → Boîtes de réception → Ajouter → WhatsApp, saisissez votre numéro de téléphone WhatsApp Business, l'ID du compte WhatsApp Business, le token d'accès et le token de vérification Webhook. Les messages WhatsApp entrants apparaissent désormais dans la boîte de réception partagée aux côtés du livechat et des e-mails.

  7. Se connecter la première fois

    Ouvrez l'URL dès que l'installation est terminée : un écran d'accueil vous fait créer le premier compte (nom, e-mail, mot de passe) et ce compte devient propriétaire de l'espace de travail.

Configurez les réponses prédéfinies (Paramètres → Réponses prédéfinies) dès le premier jour : saisissement du contact, confirmation de commande, délais de traitement. Vos agents gagnent plusieurs minutes par conversation — et la cohérence de ton est assurée quelle que soit la personne qui répond. Combinez avec les règles d'automatisation pour envoyer automatiquement la réponse de premier contact la nuit et les week-ends.

La documentation officielle

Pour la configuration avancée (SMTP, LDAP SSO, stockage S3, multi-comptes) et les options propres à Chatwoot, référez-vous à la documentation officielle Chatwoot self-hosted. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins et les mises à jour majeures.

Migrer de Chatwoot v3 vers v4

Chatwoot v4, sorti en juin 2026, introduit la nouvelle interface « Nova UI » et plusieurs migrations de schéma PostgreSQL bloquantes. Une montée de version à chaud depuis v3 casse systématiquement l'instance si elle est faite sans préparation — c'est le sujet de l'issue officielle #12088, qui recense les cas les plus courants.

La raison principale de la casse : v4 renomme la table mentions et restructure la table conversation_participants. Un docker compose pull && docker compose up -d sans sauvegarde préalable lance les migrations automatiquement ; si une migration échoue à mi-chemin (timeout, contrainte de FK non satisfaite), la base se retrouve dans un état intermédiaire et Chatwoot ne démarre plus.

En pratique, trois catégories d'instances sont à risque : celles qui tournent en v3 avec un volume de conversations supérieur à 50 000 (les migrations de masse sont lentes et peuvent dépasser le timeout Rails de 30 s), celles qui ont des colonnes personnalisées non documentées dans la table contacts, et celles qui utilisent Sidekiq Pro (supprimé de la Community Edition en v4 — les jobs en attente au moment de la mise à jour sont perdus).

Procédure de migration v3 → v4

  1. Sauvegarder la base et les volumes

    Avant toute manipulation, sauvegardez l'état complet : docker compose exec postgres pg_dumpall -U postgres > /tmp/chatwoot-v3-dump-$(date +%F).sql. Copiez également les volumes Docker liés à PostgreSQL et à Rails Storage. Cette sauvegarde est votre seul filet : en cas de migration échouée, la restauration est la seule sortie propre.

  2. Passer le tag de l'image à v4

    Dans votre docker-compose.yml, remplacez chatwoot/chatwoot:latest par chatwoot/chatwoot:v4.0.2 (ou la dernière patch release v4). Évitez latest en production : ce tag suit le HEAD et peut introduire des régressions sans avertissement. Vérifiez le changelog de chaque version sur le dépôt GitHub avant de cibler un tag.

  3. Exécuter les migrations manuellement

    Plutôt que de laisser Rails lancer les migrations au démarrage du conteneur web, lancez-les explicitement et en avant-plan pour surveiller leur avancement : docker compose run --rm web bundle exec rails db:migrate. En cas d'erreur, le message est visible immédiatement — il identifie la migration fautive et vous permet de la corriger ou de la sauter avec db:migrate:up VERSION=... avant de relancer.

  4. Démarrer et vérifier

    Une fois les migrations terminées sans erreur, démarrez la stack : docker compose up -d. Connectez-vous à l'interface Nova UI et vérifiez que les boîtes de réception, les contacts et les conversations existants sont présents. Testez l'envoi et la réception d'un message sur chaque canal connecté. Si Sidekiq affiche des jobs en erreur, consultez l'interface Sidekiq Web (montée sur /sidekiq si activée) pour les rejouer.

Correctif de sécurité v4.0.2 : invalidation des tokens

Le changelog Chatwoot v4.0.2 mentionne un correctif dans la gestion des tokens d'authentification : dans certaines conditions, un token révoqué côté serveur restait accepté par le middleware d'authentification Rails jusqu'à l'expiration naturelle du JWT. Ce comportement concernait les instances où le user_access_token n'était pas régénéré lors de la déconnexion forcée (session expirée, changement de mot de passe, révocation admin).

Si votre instance est en v3 ou en v4.0.0/v4.0.1, mettez à jour vers v4.0.2 minimum et exécutez docker compose exec web bundle exec rails runner "UserAccessToken.where(revoked_at: ...Time.current).delete_all" pour nettoyer les tokens périmés présents en base. Ce geste est sans impact sur les sessions actives légitimes : seuls les tokens dont la date revoked_at est dans le passé sont supprimés.

Déployez Chatwoot sur votre propre serveur

Auto-hébergez Chatwoot sur un VPS ServOrbit — open source, sans frais par agent, toutes vos conversations clients sur votre infrastructure.

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