O suporte ao cliente moderno exige velocidade, organização e a capacidade de atender o usuário onde ele está. O Chatwoot se destaca como uma poderosa solução software open source que permite centralizar mensagens de WhatsApp, Instagram, Facebook, Telegram, site web e e-mail em uma única interface. Para empresas que valorizam a privacidade dos dados e a personalização profunda, a opção de um helpdesk self-hosted é frequentemente a escolha ideal. Neste tutorial, explicaremos como instalar chatwoot vps utilizando Docker, garantindo uma infraestrutura robusta e escalável.
Pré-requisitos e Preparação do Ambiente
Antes de iniciarmos o processo de instalação, é fundamental garantir que seu servidor esteja preparado. O Chatwoot é uma aplicação Ruby on Rails que depende fortemente de serviços externos para funcionar corretamente, como banco de dados, armazenamento de filas e cache. Para uma instalação estável em produção, recomendamos os seguintes requisitos mínimos:
- Sistema Operacional: Ubuntu 20.04 ou 22.04 LTS (recomendado para compatibilidade com Docker).
- Processador: Mínimo de 2 vCPUs.
- Memória RAM: Pelo menos 4GB (8GB é o ideal para evitar problemas de memória durante picos de uso).
- Armazenamento: 40GB SSD ou superior, dependendo do volume de mídia que você pretende armazenar.
- Docker e Docker Compose: Versões atualizadas instaladas no servidor.
- Dominio Configurado: Um domínio apontando para o IP da sua VPS, com registros DNS A configurados corretamente.
O primeiro passo lógico é conectar-se ao seu servidor via SSH. Utilize um cliente de terminal ou o console web da sua provedora de hospedagem para acessar a máquina como usuário root ou um usuário com privilégios sudo.
ssh user@seu-ip-vps
Instalando Docker e Docker Compose
A instalação do Chatwoot Linux via Docker simplifica drasticamente o gerenciamento de dependências. O Docker encapsula a aplicação e todas as suas bibliotecas necessárias, evitando conflitos de versão comuns em instalações tradicionais.
Comece atualizando o índice dos pacotes do sistema:
apt update && apt upgrade -y
Em seguida, instale os pré-requisitos para adicionar o repositório oficial do Docker:
apt install ca-certificates curl gnupg lsb-release -y
Crie o diretório de chaves GPG se ele não existir e adicione a chave oficial do Docker:
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Agora, adicione o repositório do Docker ao seu sistema. Certifique-se de que a variável $ARCH e $CODENAME correspondam à sua arquitetura e versão do Ubuntu:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
Atualize o índice novamente e instale o Docker Engine:
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Verifique se a instalação foi bem-sucedida executando o comando hello-world:
docker run hello-world
Se você vir uma mensagem confirmando que a instalação está correta, o Docker está pronto. O docker-compose-plugin já deve estar disponível como um subcomando do docker.
Estruturando os Arquivos de Configuração
Agora que a infraestrutura virtualizada está pronta, precisamos criar a estrutura de diretórios para o projeto Chatwoot. Criaremos uma pasta dedicada em /opt/chatwoot para manter a organização.
mkdir -p /opt/chatwoot/{config,db,data,redis}
cd /opt/chatwoot
A criação de um arquivo docker-compose.yml é o coração da nossa instalação. Este arquivo define os serviços necessários: a aplicação Chatwoot em si, o banco de dados PostgreSQL, o Redis para filas e cache, e o Nginx como proxy reverso.
Crie o arquivo utilizando um editor de texto como o nano:
nano docker-compose.yml
Insira a seguinte configuração. Note que substituímos as variáveis sensíveis por placeholders que você deve alterar antes de salvar:
version: '3'
services:
chatwoot:
image: chatwoot/chatwoot:latest
restart: always
ports:
- "3000:3000"
depends_on:
- postgres
- redis
environment:
- RAILS_ENV=production
- SECRET_KEY_BASE=SEU_SEGUNDO_CHAVE_AQUI
- DB_ADAPTER=postgresql
- DB_HOST=postgres
- DB_NAME=chatwoot
- DB_USER=chatwoot_user
- DB_PASS=SENHA_FORTE_POSTGRES
- REDIS_URL=redis://redis:6379
- RAILS_MAX_THREADS=5
- RAILS_MIN_THREADS=5
- REGENERATE_DOCUMENT_UPLOADS_PATH=false
volumes:
- ./data:/app/data
postgres:
image: postgres:14-alpine
restart: always
command: ["postgres", "-c", "max_connections=200"]
environment:
- POSTGRES_DB=chatwoot
- POSTGRES_USER=chatwoot_user
- POSTGRES_PASSWORD=SENHA_FORTE_POSTGRES
volumes:
- ./db:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: always
command: ["redis-server", "--appendonly", "yes"]
volumes:
- ./redis:/data
Atenção Crítica: Você deve gerar uma chave secreta forte para a variável SECRET_KEY_BASE. No terminal, execute:
openssl rand -hex 64
Copie o resultado e substitua SEU_SEGUNDO_CHAVE_AQUI. Além disso, defina uma senha complexa para SENHA_FORTE_POSTGRES. Salve o arquivo (Ctrl+O, Enter) e saia (Ctrl+X).
Configurando o Proxy Reverso com Nginx
Embora possamos acessar a aplicação pela porta 3000, para produção é essencial usar HTTPS e um proxy reverso. Isso permite que você utilize portas padrão (80 e 443) e gerencie certificados SSL via Let's Encrypt.
No diretório /opt/chatwoot, crie um arquivo de configuração do Nginx:
nano nginx.conf
Cole a seguinte configuração, substituindo chat.seudominio.com pelo seu domínio real:
upstream chatwoot {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name chat.seudominio.com;
location /cable {
proxy_pass http://chatwoot;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
location / {
proxy_pass http://chatwoot;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Para automatizar a obtenção de certificados SSL, instalaremos o Certbot:
apt install certbot python3-certbot-nginx -y
Iniciando os Contêineres e Executando Migrações
Com os arquivos prontos, podemos iniciar os serviços. O Docker Compose baixará as imagens necessárias e iniciará os contêineres.
docker compose up -d
O processo pode levar alguns minutos dependendo da velocidade da sua internet. Você pode acompanhar o status com:
docker compose logs -f
Após os contêineres estarem rodando, é necessário inicializar o banco de dados e executar as migrações da aplicação. Isso deve ser feito dentro do contêiner do Chatwoot:
docker compose exec chatwoot bundle exec rails db:setup
Este comando criará o banco de dados, os usuários padrão e carregará as configurações iniciais. Se tudo correr bem, você verá mensagens de sucesso no terminal.
Habilitando HTTPS com Certbot
Agora que a aplicação está acessível na porta 80 via Nginx (se você configurou o DNS corretamente), vamos garantir a segurança SSL.
certbot --nginx -d chat.seudominio.com
O Certbot irá detectar sua configuração do Nginx e perguntar se deseja redirecionar todo o tráfego HTTP para HTTPS. Selecione a opção 2 (Redirecionar). O certificado será baixado e configurado automaticamente.
Configurando Webhooks e Integrações
Agora que seu helpdesk self-hosted está no ar, você pode começar a configurar os canais de comunicação. Acesse https://chat.seudominio.com e faça login com as credenciais criadas durante o processo de setup (geralmente admin@seudominio.com e a senha gerada).
Para ativar a automação atendimento, vá em Configurações > Canal > WhatsApp. Você precisará do número de telefone e do ID da API do Facebook Business para integrar o WhatsApp Business API. Para canais como Telegram e Instagram, o processo é mais simples, bastando fornecer os tokens fornecidos pelas respectivas plataformas.
Backup Automatizado
Em qualquer instalação de software open source, o backup é primordial. Como estamos usando Docker, precisamos garantir que os dados do banco e os arquivos enviados pelos usuários sejam preservados.
Crie um script simples de backup no diretório /opt/chatwoot:
nano backup.sh
Insira o seguinte conteúdo:
#!/bin/bash
BACKUP_DIR="/opt/chatwoot/backups"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
# Backup do Banco de Dados
docker compose exec postgres pg_dump -U chatwoot_user chatwoot > $BACKUP_DIR/db_$DATE.sql
# Backup dos Arquivos
tar -czf $BACKUP_DIR/files_$DATE.tar.gz ./data ./db ./redis
# Remover backups antigos (mais de 7 dias)
find $BACKUP_DIR -type f -mtime +7 -delete
Torne o script executável e agende-o via Crontab:
chmod +x backup.sh
crontab -e
Adicione a linha para rodar diariamente à meia-noite:
0 0 * * * /opt/chatwoot/backup.sh
Considerações Finais sobre Escalabilidade e Manutenção
A instalação via Docker oferece uma base sólida para o Chatwoot Linux. No entanto, conforme sua operação de suporte cresce, você pode precisar ajustar os recursos alocados. Monitore o uso de memória e CPU através do comando docker stats.
Se você planeja adicionar mais instâncias da aplicação para lidar com alto volume de mensagens, pode escalar horizontalmente adicionando mais contêineres chatwoot no arquivo docker-compose.yml:
chatwoot:
deploy:
replicas: 2
Lembre-se de que, em configurações multi-instância, o Redis e o Banco de Dados devem ser configurados para aceitar múltiplas conexões simultâneas, ajustando os parâmetros max_connections no PostgreSQL.
Manter o sistema atualizado é parte essencial da administração. Para atualizar o Chatwoot para a versão mais recente:
cd /opt/chatwoot
docker compose pull
docker compose up -d
docker compose exec chatwoot bundle exec rails db:migrate
Seguindo este guia, você não apenas instala chatwoot vps, mas estabelece uma plataforma de omnichannel segura, controlada e pronta para impulsionar a satisfação dos seus clientes. A flexibilidade do helpdesk self-hosted permite que você adapte cada detalhe da ferramenta às necessidades específicas do seu negócio, sem as limitações de plataformas SaaS genéricas.