Intermédiaire ⏱ 30 min de mise en œuvre Mis à jour le 11 août 2026

Héberger EspoCRM : votre CRM open source auto-hébergé

Votre fichier clients est un actif stratégique et des données RGPD : pas forcément à confier à Salesforce ou HubSpot. EspoCRM est le CRM open source souverain. Voici comment l'héberger.

Votre fichier clients est un actif stratégique. Il concentre des coordonnées, des échanges commerciaux, des opportunités, des historiques d’achat et parfois des informations confidentielles. Il contient aussi des données personnelles soumises au RGPD. Le confier à un CRM SaaS comme Salesforce, HubSpot ou Zoho revient à dépendre d’un prestataire pour le stockage, la disponibilité et la portabilité de ces données.

L’auto-hébergement offre une autre approche : vous gardez la maîtrise du serveur, des sauvegardes, des accès et du lieu de stockage. EspoCRM s’inscrit dans cette logique. Ce CRM open source permet de gérer les contacts, les comptes, les prospects, les opportunités, le pipeline de vente, les emails, les activités et les campagnes depuis une interface web.

EspoCRM repose sur PHP et MySQL ou MariaDB. Il reste raisonnablement léger pour une PME, une agence, une équipe commerciale ou un indépendant. Son déploiement avec Docker Compose simplifie l’installation et sépare clairement l’application, la base de données et le service chargé des tâches planifiées.

Prérequis pour héberger EspoCRM

Pour mettre EspoCRM en production, prévoyez :

  • un VPS Linux avec un accès administrateur ;
  • Docker Engine et le plugin Docker Compose (voir installer Docker sur un VPS) ;
  • un nom de domaine ou un sous-domaine, par exemple crm.example.fr ;
  • un enregistrement DNS pointant vers l’adresse IP du VPS ;
  • une base MySQL ou MariaDB, ici déployée dans Docker ;
  • un reverse proxy capable de gérer HTTPS ;
  • éventuellement un compte SMTP et une boîte accessible en IMAP.

La capacité nécessaire dépendra du nombre d’utilisateurs, du volume d’emails, des pièces jointes et des automatisations. Il est donc préférable de surveiller la mémoire, le stockage et la charge après la mise en service plutôt que d’annoncer une configuration universelle.

TalCloud propose une offre VPS à partir de 4,99 € par mois, avec des serveurs situés en France, du stockage NVMe, une protection Anti-DDoS Netrix et un support humain. Le dimensionnement reste à valider selon votre usage.

Déployer EspoCRM avec Docker Compose

Créez un répertoire réservé à l’application :

mkdir -p /opt/espocrm
cd /opt/espocrm

Le fichier compose.yaml suivant déploie MariaDB, EspoCRM et un second conteneur EspoCRM exécutant le daemon des tâches planifiées :

services:
  db:
    image: mariadb:11.4
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: espocrm
      MARIADB_USER: espocrm
      MARIADB_PASSWORD: ${DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

  espocrm:
    image: espocrm/espocrm
    restart: unless-stopped
    depends_on:
      - db
    environment:
      ESPOCRM_DATABASE_HOST: db
      ESPOCRM_DATABASE_NAME: espocrm
      ESPOCRM_DATABASE_USER: espocrm
      ESPOCRM_DATABASE_PASSWORD: ${DB_PASSWORD}
      ESPOCRM_ADMIN_USERNAME: ${ESPOCRM_ADMIN_USERNAME}
      ESPOCRM_ADMIN_PASSWORD: ${ESPOCRM_ADMIN_PASSWORD}
      ESPOCRM_SITE_URL: ${ESPOCRM_SITE_URL}
    volumes:
      - espocrm_data:/var/www/html
    ports:
      - "127.0.0.1:8080:80"

  espocrm-daemon:
    image: espocrm/espocrm
    restart: unless-stopped
    depends_on:
      - db
      - espocrm
    volumes:
      - espocrm_data:/var/www/html
    entrypoint: docker-daemon.sh

volumes:
  db_data:
    name: espocrm_db_data
  espocrm_data:
    name: espocrm_data

Placez les secrets dans un fichier .env situé à côté du fichier Compose :

DB_PASSWORD=remplacez_par_un_secret_long
DB_ROOT_PASSWORD=remplacez_par_un_autre_secret
ESPOCRM_ADMIN_USERNAME=admin
ESPOCRM_ADMIN_PASSWORD=remplacez_par_un_mot_de_passe_admin
ESPOCRM_SITE_URL=https://crm.example.fr

Restreignez ensuite les droits du fichier :

chmod 600 .env

Lancez les services et contrôlez leur état :

docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100 espocrm
docker compose logs --tail=100 espocrm-daemon

Le volume espocrm_data est partagé entre le serveur web et le daemon. Celui-ci est indispensable : EspoCRM lui confie les tâches en arrière-plan, notamment le traitement des emails, certaines notifications, les workflows et les opérations programmées. Une interface accessible ne signifie donc pas que l’installation est complète si ce conteneur reste arrêté.

Les fonctions temps réel peuvent, selon la version et la configuration retenues, nécessiter le service WebSocket prévu par EspoCRM. Il faut alors suivre la configuration correspondant exactement à la version de l’image déployée.

Effectuer le premier accès

Le port HTTP de l’application est lié à 127.0.0.1. Il n’est donc pas directement exposé sur Internet. Pour un contrôle initial avant la configuration du reverse proxy, utilisez par exemple un tunnel SSH :

ssh -L 8080:127.0.0.1:8080 utilisateur@adresse-du-vps

Ouvrez ensuite http://127.0.0.1:8080 depuis votre poste. Connectez-vous avec les identifiants définis dans ESPOCRM_ADMIN_USERNAME et ESPOCRM_ADMIN_PASSWORD.

Vérifiez immédiatement l’URL du site, le fuseau horaire, la langue et les paramètres régionaux. Créez ensuite un compte nominatif pour chaque administrateur. Le compte partagé admin peut être conservé comme compte de secours, avec un mot de passe robuste stocké dans un gestionnaire de secrets.

Configurer l’envoi et la réception des emails

Le SMTP permet à EspoCRM d’envoyer des emails depuis une adresse professionnelle. Dans les paramètres d’administration, renseignez le serveur SMTP, le port, le mode de chiffrement, l’identifiant et le mot de passe fournis par votre service de messagerie.

Effectuez un envoi de test, puis vérifiez les journaux du conteneur si le message ne part pas :

docker compose logs --tail=200 espocrm
docker compose logs --tail=200 espocrm-daemon

Pour recevoir et classer les messages, configurez un compte IMAP. EspoCRM peut ainsi récupérer les emails et les rattacher aux contacts, comptes ou opportunités correspondants. Cette association transforme l’historique de messagerie en information commerciale exploitable par l’équipe.

Utilisez de préférence une boîte dédiée ou des identifiants spécifiques à l’application. Vérifiez aussi la politique de conservation des messages et des pièces jointes : leur importation peut augmenter rapidement la taille du volume persistant et des sauvegardes.

Organiser les données commerciales

Dans EspoCRM, un compte représente généralement une entreprise ou une organisation. Les contacts correspondent aux personnes rattachées à ces structures. Cette séparation évite de dupliquer les informations d’une entreprise pour chaque interlocuteur.

Les leads regroupent les prospects qui ne sont pas encore qualifiés. Une fois leur intérêt confirmé, ils peuvent être convertis en contact, compte et opportunité. L’opportunité porte alors le montant estimé, l’étape commerciale, la probabilité et la date de clôture prévue.

Le pipeline en vue kanban permet de déplacer les opportunités entre les différentes étapes de vente. Avant d’importer des données, adaptez ces étapes à votre cycle réel : qualification, découverte, proposition, négociation, gagné ou perdu, par exemple.

Les appels, réunions, tâches et emails alimentent l’historique d’activité. Le calendrier donne une vue commune des rendez-vous et échéances. Pour conserver des données fiables, définissez quelques règles simples : propriétaires des fiches, champs obligatoires, conventions de nommage et traitement des doublons.

Gérer les utilisateurs, rôles et permissions

Un CRM ne doit pas donner automatiquement accès à tout le fichier clients. Créez un utilisateur nominatif par personne et affectez-lui un rôle adapté.

Une équipe commerciale peut accéder à ses propres comptes et opportunités, tandis qu’un responsable consulte les données de son équipe. Les fonctions d’administration, d’export massif et de suppression doivent rester limitées aux personnes qui en ont réellement besoin.

Testez chaque rôle avec un compte non administrateur. Une règle qui semble correcte dans l’écran de configuration peut produire un résultat différent selon la propriété des enregistrements, l’équipe associée ou le périmètre d’accès choisi.

Désactivez rapidement les comptes des collaborateurs qui quittent l’organisation. La journalisation, la revue périodique des droits et l’usage de comptes nominatifs facilitent également la traçabilité attendue autour des données personnelles.

Activer HTTPS avec un reverse proxy

Un fichier clients ne doit pas transiter en clair. Placez EspoCRM derrière Nginx, Caddy, Traefik ou Nginx Proxy Manager et installez un certificat TLS valide pour le domaine.

Le proxy doit transmettre les en-têtes indiquant le protocole et l’hôte d’origine. L’URL publique doit correspondre à ESPOCRM_SITE_URL, par exemple https://crm.example.fr. Une incohérence peut provoquer des redirections incorrectes, des liens erronés dans les emails ou des problèmes de cookies.

N’exposez pas directement le port 8080 sur toutes les interfaces. Si le reverse proxy fonctionne lui aussi dans Docker, placez les deux services sur un réseau Docker commun et retirez, si possible, la publication du port HTTP.

Sécurité, RGPD, mises à jour et sauvegardes

L’auto-hébergement donne davantage de contrôle, mais il implique aussi des responsabilités. Appliquez les mises à jour du système, limitez les ports ouverts avec le pare-feu, protégez l’accès SSH et surveillez l’espace disque. Évitez le tag latest en production lorsque vous avez validé une version précise, afin de maîtriser les changements lors des mises à jour.

Avant chaque mise à niveau, sauvegardez la base et le volume EspoCRM. Une sauvegarde MariaDB peut être créée ainsi :

docker compose exec -T db sh -c \
  'mariadb-dump -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' \
  > espocrm-$(date +%F).sql

Sauvegardez aussi les fichiers persistants :

docker run --rm \
  -v espocrm_data:/data:ro \
  -v "$PWD":/backup \
  alpine tar czf /backup/espocrm-data-$(date +%F).tar.gz -C /data .

Copiez ces archives vers un emplacement distinct, idéalement chiffré, et définissez une durée de conservation. Testez régulièrement une restauration sur une instance isolée : une archive non vérifiée ne garantit pas une reprise fonctionnelle. Notre guide sur la stratégie de sauvegarde d’un serveur détaille l’automatisation.

Documentez enfin la finalité des données stockées, leur durée de conservation, les personnes autorisées et la procédure de traitement des demandes RGPD. Héberger EspoCRM sur des serveurs situés en France facilite une stratégie de souveraineté, mais ne remplace pas ces mesures organisationnelles.

Pour la maintenance courante, contrôlez les conteneurs, sauvegardez, récupérez la version validée puis redémarrez les services :

docker compose ps
docker compose pull
docker compose up -d
docker compose logs --tail=100 espocrm espocrm-daemon