How can I deploy my Hexabot using NGINX ?
Last updated
Was this helpful?
Last updated
Was this helpful?
This documentation outlines two methods for deploying your Hexabot project in a production environment using NGINX and Let's Encrypt for SSL certificate :
Before starting, ensure you have the following:
A server running a Linux distribution with SSH enabled.
These instructions are based on Ubuntu, so adapt as needed for other distributions.
Install the Hexabot CLI:
Create new project:
Or clone an existing project of yours:
Environment Setup:
To configure the environment variables, use the following command:
This command will copy the .env.example
file to .env
in the ./docker
directory if the file does not already exist
Update your .env
file for production, especially the following ones:
NODE_ENV
prod
Environment Mode
APP_DOMAIN
mychatbot.ai
Application Domain Name
API_ORIGIN
https://mychatbot.ai/api
The API endpoint will be used to communicate with the backend
FRONTEND_BASE_URL
https://mychatbot.ai
The API endpoint will be used to communicate with the frontend
FRONTEND_ORIGIN
http://mychatbot.ai, https://mychatbot.ai
The origins that will be accepted by the API. A list of permitted origins for cross-origin requests
NEXT_PUBLIC_API_ORIGIN
https://mychatbot.ai/api
Next.js API endpoint
JWT_SECRET
346998ba1f171f107433
Secret to encrypt JWT token
SESSION_SECRET
27feaf70d2c78892bf49
Secret to encrypt session token
HTTPS_ENABLED
true
Https setting
INVITATION_JWT_SECRET
51c8ea00d82eb10ee226
Secret to encrypt invitation token
PASSWORD_RESET_JWT_SECRET
5ee97916017176d1ca6c
Secret to encrypt reset password token
CONFIRM_ACCOUNT_SECRET
80f74dce70e5385bf80b
Secret to encrypt confirm account token
MONGO_USER
my_mongo_username
Mongodb username
MONGO_PASSWORD
my_mongo_password
Mongodb password
AUTH_TOKEN
c97643c1c1e5e9dc5745
Secret to encrypt NLU token
Note that you can also adjust the default token expirations durations as needed.
To be able to send email you will need to configure SMTP. Learn how to configure SMTP environment variables by following our detailed SMTP setup guide.
If you're starting with a fresh installation and not using a DB backup, it's recommended to run Hexabot in development mode the first time. This allows for automatic seeding of essential data into the DB.
Note that this command will start all the services (api, frontend, mongodb, ...) as Docker containers and other optional services that may provide.
Deploying an Hexabot project on production requires you to setup a HTTP Web Server like Apache2, HAProxy or Nginx to secure communications using SSL, establish access per domain name, and a lot of other capabilities such as rate limiting for example to help protect against abuse and prevent server overload. In this guide, we will walk you through a typical HTTP Web Server setup using Nginx and Certbot for SSL certificate generation.
Update the system:
Install Nginx:
Verify the Nginx installation:
Start Nginx:
Check the Nginx status:
Replace Nginx server configuration with the following : /etc/nginx/sites-available/default.
Install Certbot:
Obtain an SSL certificate:
(Optional) Automate SSL renewal:
Add the following line:
Step 5: Reload Nginx with new configuration
Test configuration syntax:
If you get an error please make sure you don't have any syntax error in /etc/nginx/sites-available/default
Reload Nginx with new configuration:
Access your domain using HTTPS (eg. https://mychatbot.ai) to check if you have successfully deployed your Hexabot project using Nginx! 🚀🎉. Feel free to ask for support from the community on our Discord channel.
This guide will help you set up Nginx with SSL using Docker and Certbot for your Hexabot project.
To use the Dockerized version of Nginx and Certbot:
Download the following files from the Hexabot GitHub repository:
docker/nginx
docker/docker-compose.nginx.yml
docker/docker-compose.nginx.prod.yml
docker/init-letsencrypt.sh
Copy these files under the my-chatbot/docker
directory of your project.
Navigate to the my-chatbot/docker
directory:
Optional: If you'd like to test your setup without hitting request limits for SSL certificates, set the staging variable to 1 in the init-letsencrypt.sh
script before running it:
After confirming the setup, set the staging
variable back to 0
to request live certificates.
Run the init-letsencrypt.sh
script:
Make sure to set the APP_DOMAIN
variable to your application domain name in the.env
file. It's recommended also to use a valid email address so make sure to set the SSL_EMAIL
variable as well.
You can test the DNS configuration by running one of these commands:
Or
Make the init-letsencrypt.sh
script executable by granting it execute permissions.
Now you will be able to run the script
Once the script completes, run docker ps
verify that your Nginx and Certbot docker containers are up and running. Access your Hexabot instance via the domain you specified (e.g., https://mychatbot.ai
) to check if SSL certificates have been generated and are properly installed.