Chatwoot est une plateforme open-source de support client et d’engagement qui permet aux entreprises de gérer leurs conversations avec les clients à travers plusieurs canaux. Dans ce guide détaillé, nous allons vous accompagner pas à pas dans l’installation de Chatwoot en utilisant Docker et Docker Compose.
Qu’est-ce que Chatwoot ?
Chatwoot est une alternative open-source à des solutions comme Intercom, Zendesk ou Freshdesk. Cette plateforme vous permet de centraliser toutes vos conversations clients provenant de différents canaux : site web (widget de chat), email, Facebook, Twitter, WhatsApp, Telegram, et bien d’autres.
Parmi ses principales fonctionnalités, on trouve la gestion multi-canaux des conversations, un système de tickets et d’assignation aux agents, des réponses automatiques et des chatbots, des rapports et analyses détaillés, une API complète pour les intégrations, ainsi que le support multilingue.
Prérequis
Avant de commencer l’installation, assurez-vous de disposer des éléments suivants :
Configuration matérielle minimale : Un serveur avec au minimum 4 Go de RAM (8 Go recommandés), 2 vCPUs, et 20 Go d’espace disque disponible.
Logiciels requis : Docker version 20.10 ou supérieure, Docker Compose version 2.0 ou supérieure, un système d’exploitation Linux (Ubuntu 20.04/22.04 recommandé), et un accès root ou sudo au serveur.
Étape 1 : Installation de Docker et Docker Compose
Si Docker n’est pas encore installé sur votre serveur, commencez par l’installer. Voici les commandes pour Ubuntu/Debian :
# Mise à jour du système
sudo apt update && sudo apt upgrade -y
# Installation des dépendances
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Ajout de la clé GPG officielle de Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Ajout du dépôt Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installation de Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Ajout de l'utilisateur au groupe docker
sudo usermod -aG docker $USERVérifiez l’installation avec les commandes suivantes :
docker --version
docker compose versionÉtape 2 : Préparation de l’environnement Chatwoot
Créez un répertoire dédié pour Chatwoot et téléchargez les fichiers de configuration nécessaires :
# Création du répertoire
mkdir -p ~/chatwoot
cd ~/chatwoot
# Téléchargement des fichiers de configuration
wget -O .env https://raw.githubusercontent.com/chatwoot/chatwoot/develop/.env.example
wget -O docker-compose.yaml https://raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yamlÉtape 3 : Configuration des variables d’environnement
nano .envVoici les principales variables à configurer :
# Configuration de base
SECRET_KEY_BASE=votre_cle_secrete_generee
FRONTEND_URL=https://chat.votredomaine.com
DEFAULT_LOCALE=fr
# Configuration de la base de données PostgreSQL
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DATABASE=chatwoot_production
POSTGRES_USERNAME=chatwoot
POSTGRES_PASSWORD=votre_mot_de_passe_securise
# Configuration Redis
REDIS_URL=redis://redis:6379
# Configuration SMTP pour les emails
[email protected]
SMTP_DOMAIN=votredomaine.com
SMTP_ADDRESS=smtp.votredomaine.com
SMTP_PORT=587
SMTP_USERNAME=votre_username_smtp
SMTP_PASSWORD=votre_mot_de_passe_smtp
SMTP_AUTHENTICATION=plain
SMTP_ENABLE_STARTTLS_AUTO=true
# Configuration du stockage (optionnel - pour les fichiers)
ACTIVE_STORAGE_SERVICE=localPour générer une clé secrète sécurisée, utilisez la commande suivante :
openssl rand -hex 64
Étape 4 : Personnalisation du fichier Docker Compose
Le fichier docker-compose.yaml définit tous les services nécessaires au fonctionnement de Chatwoot. Voici un exemple de configuration optimisée :
version: '3'
services:
base: &base
image: chatwoot/chatwoot:latest
env_file: .env
volumes:
- ./data/storage:/app/storage
rails:
<<: *base
depends_on:
- postgres
- redis
ports:
- '3000:3000'
environment:
- NODE_ENV=production
- RAILS_ENV=production
- INSTALLATION_ENV=docker
entrypoint: docker/entrypoints/rails.sh
command: ['bundle', 'exec', 'rails', 's', '-p', '3000', '-b', '0.0.0.0']
restart: always
sidekiq:
<<: *base
depends_on:
- postgres
- redis
environment:
- NODE_ENV=production
- RAILS_ENV=production
- INSTALLATION_ENV=docker
command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']
restart: always
postgres:
image: postgres:15
restart: always
ports:
- '127.0.0.1:5432:5432'
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_DB=chatwoot_production
- POSTGRES_USER=chatwoot
- POSTGRES_PASSWORD=votre_mot_de_passe_securise
redis:
image: redis:alpine
restart: always
command: ["sh", "-c", "redis-server --appendonly yes"]
volumes:
- ./data/redis:/dataÉtape 5 : Lancement de Chatwoot
Avant de lancer Chatwoot, créez les répertoires de données et préparez la base de données :
# Création des répertoires de données
mkdir -p data/storage data/postgres data/redis
# Démarrage des services de base (postgres et redis)
docker compose up -d postgres redis
# Attendre quelques secondes que les services démarrent
sleep 15
# Préparation de la base de données
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
# Démarrage de tous les services
docker compose up -dVérifiez que tous les conteneurs sont en cours d’exécution :
docker compose psVous devriez voir quatre conteneurs actifs : rails, sidekiq, postgres et redis.
Étape 6 : Configuration du reverse proxy avec Nginx
Pour accéder à Chatwoot via un nom de domaine avec HTTPS, configurez Nginx comme reverse proxy. Installez d’abord Nginx et Certbot :
sudo apt install -y nginx certbot python3-certbot-nginxCréez un fichier de configuration Nginx pour Chatwoot :
sudo nano /etc/nginx/sites-available/chatwootAjoutez la configuration suivante :
server {
listen 80;
server_name chat.votredomaine.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 86400;
}
client_max_body_size 50M;
}Activez le site et obtenez un certificat SSL :
# Activation du site
sudo ln -s /etc/nginx/sites-available/chatwoot /etc/nginx/sites-enabled/
# Test de la configuration
sudo nginx -t
# Redémarrage de Nginx
sudo systemctl restart nginx
# Obtention du certificat SSL
sudo certbot --nginx -d chat.votredomaine.comÉtape 7 : Création du compte administrateur
Accédez à votre instance Chatwoot via votre navigateur à l’adresse https://chat.votredomaine.com. Lors de la première connexion, vous serez invité à créer un compte super administrateur.
Alternativement, vous pouvez créer le compte administrateur via la ligne de commande :
docker compose exec rails bundle exec rails consoleDans la console Rails, exécutez :
SuperAdmin.create!(email: '[email protected]', password: 'VotreMotDePasseSecurise', name: 'Admin')Étape 8 : Commandes utiles pour la maintenance
Voici quelques commandes essentielles pour gérer votre installation Chatwoot :
# Voir les logs en temps réel
docker compose logs -f
# Voir les logs d'un service spécifique
docker compose logs -f rails
# Redémarrer tous les services
docker compose restart
# Arrêter tous les services
docker compose down
# Mettre à jour Chatwoot
docker compose pull
docker compose up -d
# Accéder à la console Rails
docker compose exec rails bundle exec rails console
# Sauvegarder la base de données
docker compose exec postgres pg_dump -U chatwoot chatwoot_production > backup_$(date +%Y%m%d).sqlÉtape 9 : Configuration des intégrations
Une fois Chatwoot installé, vous pouvez configurer diverses intégrations directement depuis l’interface d’administration.
Widget de chat pour votre site web : Dans le panneau d’administration, allez dans « Inbox » puis « Add Inbox ». Sélectionnez « Website » et suivez les instructions pour obtenir le code JavaScript à intégrer sur votre site.
Intégration Facebook : Créez une application Facebook, configurez le webhook et connectez votre page Facebook à Chatwoot pour gérer les messages Messenger.
Intégration WhatsApp : Utilisez l’API WhatsApp Business ou un provider comme Twilio pour connecter WhatsApp à votre instance Chatwoot.
Résolution des problèmes courants
Problème : Les conteneurs ne démarrent pas
Vérifiez les logs avec docker compose logs et assurez-vous que les ports requis (3000, 5432, 6379) ne sont pas déjà utilisés par d’autres services.
Problème : Erreur de connexion à la base de données
Vérifiez que les variables POSTGRES_PASSWORD dans le fichier .env correspondent à celles définies dans docker-compose.yaml. Assurez-vous également que le conteneur postgres est bien démarré avant les autres services.
Problème : Les emails ne sont pas envoyés
Vérifiez votre configuration SMTP dans le fichier .env. Testez l’envoi d’email depuis la console Rails avec ActionMailer::Base.mail(to: ‘[email protected]’, subject: ‘Test’, body: ‘Test’).deliver_now
Problème : WebSocket ne fonctionne pas
Assurez-vous que votre configuration Nginx inclut bien les headers pour le support WebSocket (Upgrade et Connection). Vérifiez également que FRONTEND_URL est correctement configuré dans le fichier .env.
Sécurisation de votre installation
Pour sécuriser votre installation Chatwoot en production, suivez ces recommandations :
Utilisez des mots de passe forts et uniques pour la base de données et les comptes administrateurs. Activez la double authentification (2FA) pour tous les comptes administrateurs. Configurez un pare-feu pour limiter l’accès aux ports sensibles. Mettez en place des sauvegardes automatiques régulières. Maintenez Docker et Chatwoot à jour avec les dernières versions de sécurité. Utilisez uniquement HTTPS avec des certificats SSL valides.
Félicitations ! Vous avez maintenant une instance Chatwoot fonctionnelle déployée avec Docker. Cette solution vous permet de gérer efficacement vos communications clients à travers plusieurs canaux, tout en gardant le contrôle total sur vos données.
N’hésitez pas à explorer les nombreuses fonctionnalités de Chatwoot, comme les automatisations, les rapports, et les intégrations avec d’autres outils. La documentation officielle de Chatwoot est une excellente ressource pour approfondir votre maîtrise de la plateforme.
Si vous rencontrez des difficultés ou avez des questions, la communauté Chatwoot est très active et dispose d’un forum de support ainsi qu’un serveur Discord où vous pourrez obtenir de l’aide.
