Chatwoot/docs/deployment/production/linux-vm.md
Sojan Jose ca7554f88c
Chore: Add deployment documentation (#904)
Co-authored-by: Pranav Raj S <pranav@thoughtwoot.com>
2020-06-11 22:34:22 +05:30

114 lines
3.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
```