Comment déployer mon Hexabot en utilisant NGINX ?
Introduction
Cette documentation décrit deux méthodes pour déployer votre projet Hexabot en environnement de production en utilisant NGINX et Let's Encrypt pour le certificat SSL :
Prérequis
Avant de commencer, assurez-vous d'avoir les éléments suivants :
Étape 1 : Exigences du serveur
Un serveur exécutant une distribution Linux avec SSH activé.
Ces instructions sont basées sur Ubuntu, adaptez-les si nécessaire pour d'autres distributions.
Étape 2 : Installer les logiciels requis
Étape 3 : Configurer le projet Hexabot
Installez l'interface de ligne de commande Hexabot :
npm install -g hexabot-cliCréer un nouveau projet :
hexabot create my-chatbot
cd my-chatbot/Ou clonez un projet existant :
git clone [email protected]:YOUR_ORG/my-chatbot.git
cd my-chatbot/Configuration de l'environnement :
Pour configurer les variables d'environnement, utilisez la commande suivante :
hexabot initCette commande copiera le .env.example fichier vers .env dans le ./docker répertoire si le fichier n'existe pas déjà
Mettez à jour votre
.envfichier pour la production, en particulier les éléments suivants :
NODE_ENV
production
Mode d'environnement
APP_DOMAIN
mychatbot.ai
Nom de domaine de l'application
API_ORIGIN
https://mychatbot.ai/api
Le point de terminaison API sera utilisé pour communiquer avec le backend
FRONTEND_BASE_URL
https://mychatbot.ai
Le point de terminaison API sera utilisé pour communiquer avec le frontend
FRONTEND_ORIGIN
http://mychatbot.ai, https://mychatbot.ai
Les origines qui seront acceptées par l'API. Une liste d'origines autorisées pour les requêtes cross-origin
NEXT_PUBLIC_API_ORIGIN
https://mychatbot.ai/api
Point de terminaison API Next.js
JWT_SECRET
346998ba1f171f107433
Secret pour chiffrer le token JWT
SESSION_SECRET
27feaf70d2c78892bf49
Secret pour chiffrer le token de session
HTTPS_ENABLED
true
Paramètre Https
INVITATION_JWT_SECRET
51c8ea00d82eb10ee226
Secret pour chiffrer le token d'invitation
PASSWORD_RESET_JWT_SECRET
5ee97916017176d1ca6c
Secret pour chiffrer le token de réinitialisation de mot de passe
CONFIRM_ACCOUNT_SECRET
80f74dce70e5385bf80b
Secret pour chiffrer le token de confirmation de compte
MONGO_USER
my_mongo_username
Nom d'utilisateur Mongodb
MONGO_PASSWORD
my_mongo_password
Mot de passe Mongodb
AUTH_TOKEN
c97643c1c1e5e9dc5745
Secret pour chiffrer le token NLU
Notez que vous pouvez également ajuster les durées d'expiration par défaut des tokens si nécessaire.
Méthode 1 : Utiliser Nginx comme service et Certbot pour le SSL
Étape 1 : Exécutez votre projet Hexabot en mode production :
hexabot start
# Ou inclure des services supplémentaires que vous souhaitez utiliser
hexabot start --services ollama,influxdbNotez que cette commande démarrera tous les services (api, frontend, mongodb, ...) en tant que conteneurs Docker ainsi que d'autres services optionnels pouvant être fournis.
Étape 2 : Installer Nginx
Le déploiement d'un projet Hexabot en production nécessite de configurer un serveur Web HTTP comme Apache2, HAProxy ou Nginx pour sécuriser les communications via SSL, établir l'accès par nom de domaine, et de nombreuses autres fonctionnalités telles que la limitation de débit par exemple pour aider à se protéger contre les abus et prévenir la surcharge du serveur. Dans ce guide, nous vous accompagnerons à travers une configuration type de serveur Web HTTP en utilisant Nginx et Certbot pour la génération du certificat SSL.
Mettre à jour le système :
sudo apt updateInstaller Nginx :
sudo apt install nginxVérifier l'installation de Nginx :
nginx -vDémarrer Nginx :
sudo systemctl start nginxVérifier le statut de Nginx :
sudo systemctl status nginxÉtape 3 : Configurer Nginx
Remplacez la configuration du serveur Nginx par la suivante : /etc/nginx/sites-available/default.
server {
listen 80;
server_name mychatbot.ai; # Vous devrez mettre à jour ceci pour utiliser votre propre domaine
server_tokens off;
client_max_body_size 20M;
location / {
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Url-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://localhost:8080; # Assurez-vous d'utiliser le port configuré dans le fichier .env
}
location /api/ {
rewrite ^/api/?(.*)$ /$1 break;
proxy_pass http://localhost:4000; # Assurez-vous d'utiliser le port configuré dans le fichier .env
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $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_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-NginX-Proxy false;
proxy_pass_request_headers on;
}
location ~* \.io {
rewrite ^/api/?(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy false;
proxy_pass http://localhost:4000; # Assurez-vous d'utiliser le port configuré dans le fichier .env
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}Étape 4 : Générer un certificat SSL avec Certbot
Installer Certbot :
sudo apt install certbot python3-certbot-nginxObtenir un certificat SSL :
sudo certbot --nginx(Optionnel) Automatiser le renouvellement SSL :
sudo crontab -eAjoutez la ligne suivante :
0 12 * * * certbot renew --quietÉtape 5 : Recharger Nginx avec la nouvelle configuration
Tester la syntaxe de la configuration :
sudo nginx -tSi vous obtenez une erreur, assurez-vous qu'il n'y a pas d'erreur de syntaxe dans /etc/nginx/sites-available/default
Recharger Nginx avec la nouvelle configuration :
sudo systemctl reload nginxAccédez à votre domaine en HTTPS (par ex. https://mychatbot.ai) pour vérifier si vous avez déployé avec succès votre projet Hexabot en utilisant Nginx ! 🚀🎉. N'hésitez pas à demander de l'aide à la communauté sur notre canal Discord.
Méthode 2 : Utiliser des services Nginx et Certbot conteneurisés (Docker) :
Ce guide vous aidera à configurer Nginx avec SSL en utilisant Docker et Certbot pour votre projet Hexabot.
Étape 1 : Copier les fichiers requis pour Nginx et Certbot conteneurisés
Pour utiliser la version conteneurisée de Nginx et Certbot :
Téléchargez les fichiers suivants depuis le dépôt GitHub de Hexabot :
docker/nginx
docker/docker-compose.nginx.yml
docker/docker-compose.nginx.prod.yml
docker/init-letsencrypt.sh
Copiez ces fichiers sous le
my-chatbot/dockerrépertoire de votre projet.
Étape 2 : Initialiser le SSL avec Certbot
Naviguez vers le
my-chatbot/dockerrépertoire :
cd my-chatbot/dockerOptionnel : Si vous souhaitez tester votre configuration sans atteindre les limites de requêtes pour les certificats SSL, définissez la variable staging à 1 dans le
init-letsencrypt.shscript avant de l'exécuter :
staging=1Après avoir confirmé la configuration, remettez la variable staging à 0 pour demander des certificats en production.
Exécutez le
init-letsencrypt.shscript :
Assurez-vous de définir la variable APP_DOMAIN à votre nom de domaine d'application dans le.env fichier. Il est également recommandé d'utiliser une adresse e-mail valide, pensez donc à définir la variable SSL_EMAIL également.
APP_DOMAIN=mychatbot.ai
[email protected]Vous pouvez tester la configuration DNS en exécutant l'une de ces commandes :
nslookup mychatbot.aiOu
dig mychatbot.aiRendez le init-letsencrypt.sh script exécutable en lui accordant les permissions d'exécution.
chmod +x init-letsencrypt.shVous pourrez maintenant exécuter le script
./init-letsencrypt.shÉtape 3 : Vérifier le déploiement
Une fois le script terminé, exécutez docker ps vérifiez que vos conteneurs Docker Nginx et Certbot sont démarrés et en cours d'exécution. Accédez à votre instance Hexabot via le domaine que vous avez spécifié (par ex., https://mychatbot.ai) pour vérifier si des certificats SSL ont été générés et sont correctement installés.
Mis à jour
Ce contenu vous a-t-il été utile ?