Production deployment guide for Linux VM
Deploying to Linux VM
This guide will help you to install UniLink on Ubuntu 20.04 LTS. We have prepared a deployment script for you to run. Refer to the script and feel free to make changes accordingly to the operating system if you are on a non-Ubuntu system.
Steps to install
Note: If you plan to use a domain with chatwoot, please add an A record before proceeding. Refer to the
Configuring the installation domain
section below.
- Create an install.sh file using the following commands.
wget https://get.chatwoot.app/linux/install.sh
chmod +x install.sh
- Execute the script. The script will take care of the initial UniLink setup.
./install.sh --install
- UniLink Installation will now be accessible at
http://{your_ip_address}:3000
or if you opted for domain setup, it will be athttps://chatwoot.mydomain.com
.
Note This will also install the UniLink CLI(
cwctl
) starting with UniLink v2.7.0. Usecwctl --help
to learn more.
Configuring The installation Domain
- Create an
A
record forchatwoot.mydomain.com
on your domain management system and point it towards the installation IP address. - Continue with the installation script by entering
yes
when prompted about domain setup. - Enter your domain. The script will take care of configuring Nginx and SSL via LetsEncrypt.
- Your UniLink installation should be accessible from
https://chatwoot.mydomain.com
now.
Configure the required environment variables
For your UniLink installation to properly function, you would need to configure the essential environment variables like FRONTEND_URL
, Mailer, and a cloud storage config. Refer Environment variables for the full list.
- Login as chatwoot user and edit the .env file.
# Login as chatwoot user
sudo -i -u chatwoot
cd chatwoot
nano .env
Refer Environment variables and update the required variables. Save the
.env
file.Restart the UniLink server and enjoy using your self-hosted UniLink.
Note If you have UniLink CLI(
cwctl
) installed, usecwctl -r
.
sudo systemctl restart chatwoot.target
Upgrading to a newer version of UniLink
Whenever a new version of UniLink is released, use the following steps to upgrade your instance.
Note If you have UniLink CLI(
cwctl
) installed, usecwctl --upgrade
to upgrade your UniLink installation.
To install cwctl
, refer this section below.
Note If you are on an older version of UniLink(<2.7), follow the manual upgrade steps below if you face errors with
cwctl
.
Run the following steps on your VM. Make changes based on your OS if you are on a non-Ubuntu system.
# Login as UniLink user
sudo -i -u chatwoot
# Navigate to the UniLink directory
cd chatwoot
# Pull the latest version of the master branch
git checkout master && git pull
# Ensure the ruby version is upto date
rvm install "ruby-3.2.2"
rvm use 3.2.2 --default
# 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
# Switch back to root user
exit
# Copy the updated targets
cp /home/chatwoot/chatwoot/deployment/chatwoot-web.1.service /etc/systemd/system/chatwoot-web.1.service
cp /home/chatwoot/chatwoot/deployment/chatwoot-worker.1.service /etc/systemd/system/chatwoot-worker.1.service
cp /home/chatwoot/chatwoot/deployment/chatwoot.target /etc/systemd/system/chatwoot.target
# Reload systemd files
systemctl daemon-reload
# Restart the chatwoot server
systemctl restart chatwoot.target
Running Rails Console
Note If you have UniLink CLI(
cwctl
) installed, usecwctl -c
.
# Login as UniLink user
sudo -i -u chatwoot
# Navigate to the UniLink directory
cd chatwoot
# start rails console
RAILS_ENV=production bundle exec rails c
Viewing Logs
Note If you have UniLink CLI(
cwctl
) installed, usecwctl -l web
orcwctl -l worker
.
Run the following commands in your ubuntu shell
# logs from the rails server
journalctl -u chatwoot-web.1.service -f
# logs from sidekiq
journalctl -u chatwoot-worker.1.service -f
Install or Upgrade UniLink CLI
If you used an older version of install script(<2.0), you will not have cwctl
in your PATH. To install/upgrade UniLink CLI,
wget https://get.chatwoot.app/linux/install.sh -O /usr/local/bin/cwctl && chmod +x /usr/local/bin/cwctl
cwctl --help
Note: The above command requires root access to install
cwctl
to/usr/local/bin
.
Troubleshooting
If precompile fails
If the asset precompilation step fails with ActionView::Template::Error (Webpacker can't find application.css in /home/chatwoot/chatwoot/public/packs/manifest.json)
or if you face issues while restarting the server, try the following command and restart the server.
RAILS_ENV=production rake assets:clean assets:clobber assets:precompile
This command would clear the existing compiled assets and would recompile all the assets. Read more about it here