Passo 1 – Instalação Docker
- Remover possíveis versões anteriores
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
- Add Docker’s official GPG key
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
- Add the repository to Apt sources
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Passo 2 – Instalação do Chatwoot via Docker Compose
- Download the env file template
- Download the Docker compose template
- Rename .env file
cd /root
mkdir chatwoot
wget -O .env https://raw.githubusercontent.com/chatwoot/chatwoot/develop/.env.example
wget -O docker-compose.yaml https://raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yaml
- Ajustando o .env file
- Atenção para senha do postgres
Main
SECRET_KEY_BASE - criar senha segura
FRONTEND_URL=https://app.sacbr.com.br
DEFAULT_LOCALE=pt_BR
Postgres
POSTGRES_HOST=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=908AS7DF89ASIUAFSDAS89034K
RAILS_ENV=development
Mail
MAILER_SENDER_EMAIL=SacBR <app@sacbr.com.br>
SMTP_DOMAIN=smtp.gmail.com
SMTP_ADDRESS=smtp.gmail.com
SMTP_PORT=465
SMTP_USERNAME=sacbr{at}sacbr.com.br
SMTP_PASSWORD=Senha123
SMTP_AUTHENTICATION=plain
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_OPENSSL_VERIFY_MODE=peer
SMTP_SSL=true
- Ajustando o docker-compose.yml
- Atenção para senha do postgres
version: '3'
services:
base: &base
image: chatwoot/chatwoot:latest
env_file: .env ## Change this file for customized env variables
volumes:
- ./data/storage:/app/storage
rails:
<<: *base
depends_on:
- postgres
- redis
ports:
- '127.0.0.1:3000:3000'
environment:
- NODE_ENV=production
- RAILS_ENV=production
- INSTALLATION_ENV=docker
entrypoint: docker/entrypoints/rails.sh
command: ['bundle', 'exec', 'rails', 's', '-p', '3000', '-b', '0.0.0.0']
sidekiq:
<<: *base
depends_on:
- postgres
- redis
environment:
- NODE_ENV=production
- RAILS_ENV=production
- INSTALLATION_ENV=docker
command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']
postgres:
image: postgres:12
restart: always
ports:
- '5432:5432'
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_DB=chatwoot
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=SENHA SUPER SEGURA AQUI
redis:
image: redis:alpine
restart: always
command: ["sh", "-c", "redis-server --requirepass \"$REDIS_PASSWORD\""]
env_file: .env
volumes:
- ./data/redis:/data
ports:
- '127.0.0.1:6379:6379'
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
docker compose up -d
- Instalando Nginx e Configurando Proxy Reverso
sudo apt-get install nginx
cd /etc/nginx/sites-enabled
vim yourdomain.com.conf
- Configurando Virtual Host
- Em server name: chatwoot.minhaempresa.com.br
server {
server_name <yourdomain.com>;
# Point upstream to Chatwoot App Server
set $upstream 127.0.0.1:3000;
# Nginx strips out underscore in headers by default
# Chatwoot relies on underscore in headers for API
# Make sure that the config is set to on.
underscores_in_headers on;
location /.well-known {
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;
}
- Checando as configurações
nginx -t
systemctl reload nginx
- Instalando Certbot e gerando certififcado
apt install certbot
apt install python3-certbot-nginx
mkdir -p /var/www/ssl-proof/chatwoot/.well-known
certbot --webroot -w /var/www/ssl-proof/chatwoot/ -d yourdomain.com -i nginx
- Ao chegar nessa etapa do processo de instalação do Chatwoot deverá estar rodando na porta 3000.
- O nginx deverá estar rodando nas portas 80 e 443.
- Proxy reverso deverá estar funcional e buscando chatwoot no localhost.
- Crie sua conta.
- Faça Login para seguir adiante.
Passo 3 – Instalando NodeJS versão 16 (Obrigatório)
–> Adicionar repositório
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
–> Instalar versão 16
NODE_MAJOR=16
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
Passo 4 – Instalar Codechat
git clone https://github.com/w3nder/chatwoot-codechat.git
mv chatwoot-codechat/ codechat
cd codechat
mv .env.example .env
–> Pegar token do usuário dentro do Chatwoot e atualizar
–> Gerar uma chave particular e colocar no CODECHAT_API_KEY Ex: ” 301803677cd97069a55a79038fb0a2ebd4be1e49 ”
–> Se desejar assinar as mensagens como o nome de usuário mude para TOSIGN=true
–> Se desejar receber mensagens enviadas fora do chatwoot mude para IMPORT_MESSAGES_SENT=false
#################################### EXEMPLO ############################
PORT = 1234
CHATWOOT_TOKEN = wV7yJG7q28h3RdQY7m4sDzVM
CHATWOOT_BASE_URL = http://localhost:3000
CODECHAT_BASE_URL = http://localhost:8080
CODECHAT_API_KEY = 301803677cd97069a55a79038fb0a2ebd4be1e49
TOSIGN=true
IMPORT_MESSAGES_SENT=true
#################################### EXEMPLO ############################
Explicando em sequência:
- Instalar dependências
- Construir aplicação (bildar)
- Rodar aplicação, o prompt ficará preso, assim poderá acompanhar os logs.
npm install
npm run build
npm start
Passo 5 – Instalar API
- Baixando API
- Renomeando dev-env.yml para env.yml
cd
git clone https://github.com/code-chat-br/whatsapp-api.git
cd whatsapp-api
mv src/dev-env.yml src/env.yml
- Ajustar Server Port
- Ajustar Server URL
- Habilitar Webhook
- Ajustar Client
- Usar chave de acesso configurada no Codechat
vim src/env.yml
Server Port 8080 http
Webhook --> URL: Colocar o link da url webhook: http://0.0.0.0:1234/webhook/codechat
Webhook Enabled: True
Client: Sac BR
--> Autehtication ( PEGAR A CHAVE DO CODECHAT EM cat /root/codechat/.env )
-
Explicando em sequência:
- Instalar dependências
- Construir aplicação (bildar)
- Rodar aplicação, o prompt ficará preso, assim poderá acompanhar os logs.
npm install
npm run build
npm run start
Passo 6 – Instalar PM2
- Instalar PM2
- Configurar Codechat como Serviço
- Configurar API como Serviço
npm install pm2 -g
cd /root/codechat
pm2 start dist/app.js --name codechat
cd /root/whatsapp-api
pm2 start 'npm run start prod' --name whatsapp-api
Passo 7 – Criando caixa de entrada no Chatwoot
- Configurações
- Caixa de Entrada
- Adicionar Caixa de Entrada
- API
URL: http://192.168.0.254:1234/webhook/chatwoot
PS. Usar endereço IP do Host. Não Usar Localhost - Não Usar 127.0.0.1
- Criar contato para chamar o bot
- Contatos
- Novo Contato
- Nome: Bot
- Número: +123456
- Abrir contato
- Nova Mensagem
- Caixa de Entrada: Whatsapp
- Mensagem: /iniciar
- Comandos do Code Chat
- /iniciar
- Este comando irá criar uma nova instância e gerar um QR code
- /status
- Este comando irá verificar o status da instância
- /desconectar
- Este comando irá desconectar o WhatsApp da instância
Passo 7 – Liberando personalização do chatwoot
- Instalar PostgreSQL Client
apt install postgresql-client postgresql-client-common
- Logar no banco de dados
- Selecionar o chatwoot_production
- Atualizar update installation_configs set locked = false;
psql -U postgres -h localhost -w
\c chatwoot_production
update installation_configs set locked = false;
\q
Você precisa fazer login para comentar.