Objectif
Déployer Botpress sur un serveur Linux en Docker Compose, avec :
- HTTPS (Let’s Encrypt) via reverse proxy
- persistance (données + base PostgreSQL)
- une base saine pour la prod (sécurité, backups, ops)
Dans la pratique, le pattern “app derrière reverse proxy + volumes + DB dédiée” est celui qu’on retrouve dans la plupart des guides de déploiement Docker en production.
Prérequis
- Un serveur Linux (Debian/Ubuntu), 2 vCPU / 4 Go RAM (recommandé)
- Un nom de domaine (ex:
example.com) + un sous-domaine (ex:bot.example.com) - Docker + Docker Compose
1) DNS : pointer le sous-domaine vers le serveur
Crée un enregistrement DNS A :
- Nom :
botpress(ou ce que vous voulez) - Valeur : IP publique du serveur
Attends la propagation (souvent 1–30 minutes).
2) Arborescence & fichiers
Sur le serveur :
mkdir -p ~/botpress-compose && cd ~/botpress-compose
3) Créer le fichier .env
Crée un fichier .env (à adapter) :
# Domaine
DOMAIN_NAME=example.com
SUBDOMAIN=botpress
[email protected]
# Postgres
PG_DB=botpress
PG_USER=botpress
PG_PASSWORD=change-me
# Timezone
TZ=Europe/Paris
4) Docker Compose : Botpress + PostgreSQL + HTTPS (Traefik)
Crée compose.yaml :
services:
traefik:
image: traefik:v3.2
restart: always
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --entrypoints.websecure.address=:443
- --certificatesresolvers.le.acme.tlschallenge=true
- --certificatesresolvers.le.acme.email=${SSL_EMAIL}
- --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
postgres:
image: postgres:16
restart: always
environment:
POSTGRES_DB: ${PG_DB}
POSTGRES_USER: ${PG_USER}
POSTGRES_PASSWORD: ${PG_PASSWORD}
TZ: ${TZ}
volumes:
- postgres_data:/var/lib/postgresql/data
botpress:
image: botpress/server:latest
restart: always
depends_on:
- postgres
# Option “safe” : pas d'exposition directe, uniquement via Traefik
ports:
- "127.0.0.1:3000:3000"
environment:
NODE_ENV: production
BP_HOST: 0.0.0.0
PORT: 3000
PG_HOST: postgres
PG_PORT: 5432
PG_USER: ${PG_USER}
PG_PASSWORD: ${PG_PASSWORD}
PG_SSL: "false"
TZ: ${TZ}
labels:
- traefik.enable=true
- traefik.http.routers.botpress.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.botpress.entrypoints=web,websecure
- traefik.http.routers.botpress.tls=true
- traefik.http.routers.botpress.tls.certresolver=le
- traefik.http.services.botpress.loadbalancer.server.port=3000
volumes:
traefik_data:
postgres_data:
Pourquoi cette structure ?
- Le reverse proxy ne publie que 80/443 (HTTPS + routage)
- Botpress n’est accessible qu’en interne (bind
127.0.0.1) → surface d’attaque réduite - PostgreSQL est dédiée, persistée
5) Démarrer
docker compose up -d
docker compose ps
docker compose logs -f --tail=200
Accède ensuite à :
https://${SUBDOMAIN}.${DOMAIN_NAME}
6) Checklist production (sécurité & ops)
- Firewall : n’ouvrir que 80/443 (et SSH si nécessaire)
- Backups : volume
postgres_data(DB) + données applicatives - Mises à jour :
docker compose pull && docker compose up -d - Logs/monitoring : CPU/RAM, espace disque (volumes), erreurs Traefik
7) Dépannage rapide
- Certificat Let’s Encrypt ne sort pas : DNS pas propagé, port 80/443 bloqué, ou mauvaise valeur
SSL_EMAIL - 404/Bad Gateway : vérifier
loadbalancer.server.port=3000+ que le conteneur écoute bien
Vidéo (FR)
Images (CDN)
- Schéma “reverse proxy + volumes” : https://cdn.adgents.cloud/images/screen-2.png
- Illustration “hébergement / infra” : https://cdn.adgents.cloud/images/screen-3.png
CTA — Héberger Botpress sans prise de têvous
- Voir l’app : /applications/botpress
- Essayer gratuitement
Avec adgents.cloud :
- Déploiement en 1 clic
- Facturation à l’heure
- Stop/Start (compute non facturé à l’arrêt ; stockage conservé)
- Backups automatiques (toutes les 24h par défaut, jusqu’à 1/h)
- Rétention longue (jusqu’à 10 ans)
- Scaling CPU/RAM à la demande
Sources (structure/intent alignés)
- https://hub.docker.com/r/botpress/server
- https://raw.githubusercontent.com/botpress/v12/master/examples/docker-compose/README.md
- https://itsfoss.gitlab.io/post/nginx-reverse-proxy-docker-compose/
Lancez-vous avec Botpress.
Envie de vous lancer avec Botpress ? Créez votre site web en quelques clics.
Botpress
Plateforme open-source de chatbots
Aller plus loin
Essayer sur Adgents.cloud
Envie d’un déploiement propre sans passer des heures sur l’infra ? Sur Adgents.cloud, vous pouvez :
- déployer en 1 clic
- être facturé à l’heure
- utiliser stop/start (compute non facturé à l’arrêt)
- activer des backups automatiques (24h par défaut, jusqu’à 1/h)
- garder une rétention longue (jusqu’à 10 ans)
- ajuster le scaling CPU/RAM à la demande
→ Découvrir botpress sur Adgents.cloud → Essayer gratuitement


