115 lines
3.5 KiB
Markdown
115 lines
3.5 KiB
Markdown
|
---
|
|||
|
path: "/docs/deployment/deploy-chatwoot-in-linux-vm"
|
|||
|
title: "Linux VM Chatwoot Production deployment guide"
|
|||
|
---
|
|||
|
|
|||
|
|
|||
|
## Deploying to Linux VM
|
|||
|
|
|||
|
We have prepared a deployment script for ubuntu 18.04. Run the script or refer the script and make changes accordingly to OS.
|
|||
|
|
|||
|
https://github.com/chatwoot/chatwoot/blob/develop/deployment/setup.sh
|
|||
|
|
|||
|
### After logging in to your Linux VM as the root user perform the following steps for initial set up
|
|||
|
|
|||
|
1. Create the `chatwoot.sh` file and copy the content from [deployment script](https://github.com/chatwoot/chatwoot/blob/develop/deployment/setup.sh).
|
|||
|
2. Execute the script and it will take care of the initial Chatwoot setup
|
|||
|
3. Chatwoot Installation will now be accessible at `http://{your_ip}:3000`
|
|||
|
|
|||
|
### Configure ngix and letsencrypt
|
|||
|
|
|||
|
1. configure Nginx to serve as a frontend proxy by following steps in your shell
|
|||
|
|
|||
|
```bash
|
|||
|
cd /etc/nginx/sites-enabled
|
|||
|
nano yourdomain.com.conf
|
|||
|
```
|
|||
|
2. Add the required Nginx config after replacing the `yourdomain.com` in `server_name`
|
|||
|
```sh
|
|||
|
server {
|
|||
|
server_name yourdomain.com;
|
|||
|
# where rails app is running
|
|||
|
set $upstream 127.0.0.1:3000;
|
|||
|
|
|||
|
# Here we define the web-root for our SSL proof
|
|||
|
location /.well-known {
|
|||
|
# Note that a request for /.well-known/test.html will be made
|
|||
|
alias /var/www/ssl-proof/chatwoot/.well-known;
|
|||
|
}
|
|||
|
|
|||
|
location / {
|
|||
|
proxy_pass_header Authorization;
|
|||
|
proxy_pass http://$upstream;
|
|||
|
proxy_set_header Upgrade $http_upgrade;
|
|||
|
proxy_set_header Connection "upgrade";
|
|||
|
proxy_set_header Host $host;
|
|||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|||
|
proxy_set_header X-Forwarded-Ssl on; # Optional
|
|||
|
proxy_set_header X-Real-IP $remote_addr;
|
|||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|||
|
proxy_http_version 1.1;
|
|||
|
proxy_set_header Connection “”;
|
|||
|
proxy_buffering off;
|
|||
|
client_max_body_size 0;
|
|||
|
proxy_read_timeout 36000s;
|
|||
|
proxy_redirect off;
|
|||
|
}
|
|||
|
listen 80;
|
|||
|
}
|
|||
|
```
|
|||
|
3. Verify and reload your Nginx config by running following command.
|
|||
|
```sh
|
|||
|
nginx -t
|
|||
|
systemctl reload nginx
|
|||
|
```
|
|||
|
4. Run Letsencrypt and configure SSL
|
|||
|
```sh
|
|||
|
mkdir -p /var/www/ssl-proof/chatwoot/.well-known
|
|||
|
certbot --webroot -w /var/www/ssl-proof/chatwoot/ -d yourdomain.com -i nginx
|
|||
|
```
|
|||
|
|
|||
|
5. You Chatwoot installation should be accessible from the `https://yourdomain.com` now.
|
|||
|
|
|||
|
### Configure the required environment variables
|
|||
|
For your chatwoot installation to properly function you would need to configure some of the essential environment variables like `FRONTEND_URL`, mailer and storage config etc. refer [environment variables](https://www.chatwoot.com/docs/environment-variables) for the full list.
|
|||
|
|
|||
|
1. Login as chatwoot and edit the .env file.
|
|||
|
```shell
|
|||
|
# login as chatwoot user
|
|||
|
sudo -i -u chatwoot
|
|||
|
cd chatwoot
|
|||
|
nano .env
|
|||
|
```
|
|||
|
2. Refer [environment variables](https://www.chatwoot.com/docs/environment-variables) and update the required variables. Save the `.env` file.
|
|||
|
3. Restart the Chatwoot server and enjoy using Chatwoot.
|
|||
|
```sh
|
|||
|
systemctl restart chatwoot.target
|
|||
|
```
|
|||
|
## Updating your Chatwoot Installation on a Linux VM
|
|||
|
|
|||
|
Run the following steps on your VM if you made use of our installation script Or making changes accordingly to your OS
|
|||
|
|
|||
|
```sh
|
|||
|
# login as chatwoot user
|
|||
|
sudo -i -u chatwoot
|
|||
|
|
|||
|
# navigate to the chatwoot directory
|
|||
|
cd chatwoot
|
|||
|
|
|||
|
# pull the latest version of the master branch
|
|||
|
git pull
|
|||
|
|
|||
|
# update dependencies
|
|||
|
bundle
|
|||
|
yarn
|
|||
|
|
|||
|
# recompile the assets
|
|||
|
rake assets:precompile RAILS_ENV=production
|
|||
|
|
|||
|
# migrate the database schema
|
|||
|
RAILS_ENV=production bundle exec rake db:migrate
|
|||
|
|
|||
|
#Restart the chatwoot server
|
|||
|
systemctl restart chatwoot.target
|
|||
|
```
|