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
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:latestet 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.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.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 ensuiteFRONTEND_URL=https://support.votre-domaine.comdans votre fichier.envet 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.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.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.
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.
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
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.Passer le tag de l'image à v4
Dans votre
docker-compose.yml, remplacezchatwoot/chatwoot:latestparchatwoot/chatwoot:v4.0.2(ou la dernière patch release v4). Évitezlatesten 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.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 avecdb:migrate:up VERSION=...avant de relancer.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/sidekiqsi 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.