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
- Instalação docker
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'
- Preparar banco de dados
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
- Levantando o serviço
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
- /iniciar
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
Sobre o Autor