Chatwoot não inicia: erros comuns e como resolver
Quando o Chatwoot não inicia, as causas mais frequentes são: Redis não pronto quando o Rails sobe, SECRET_KEY_BASE não definida, migração de banco pendente ou PostgreSQL com senha incorreta. O log do container revela a causa em quase todos os casos — veja como diagnosticar e corrigir cada uma.
Verificar os logs primeiro
Antes de qualquer correção, leia o que o container está reportando. O erro é sempre registrado nas primeiras linhas do log ao tentar iniciar:
# Logs do container Chatwoot (Rails)
docker compose logs chatwoot_rails --tail=50
# Logs do worker Sidekiq
docker compose logs chatwoot_sidekiq --tail=30
# Status de todos os containers do stack
docker compose psCausa 1: SECRET_KEY_BASE não configurada
O Rails exige uma chave secreta para assinar cookies e tokens. Sem ela o Chatwoot recusa iniciar com "ArgumentError: secret_key_base is blank":
# Gerar uma chave segura
openssl rand -hex 64
# Adicionar ao .env do docker-compose
SECRET_KEY_BASE=sua_chave_gerada_acima
# Confirmar que o arquivo .env está sendo lido
docker compose config | grep SECRET_KEY_BASECausa 2: Redis não está pronto
O Chatwoot usa Redis para ActionCable (websockets) e fila de jobs (Sidekiq). Se o Redis sobe depois do Rails, o Chatwoot falha com "Redis::CannotConnectError". Adicione depends_on com healthcheck:
services:
redis:
image: redis:7-alpine
restart: always
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
rails:
image: chatwoot/chatwoot:latest
restart: always
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthyCausa 3: migração de banco pendente
Após atualizar a imagem do Chatwoot, o banco pode ter migrações pendentes. O Rails para com "ActiveRecord::PendingMigrationError". Execute as migrações manualmente:
# Rodar migrações pendentes
docker compose exec rails bundle exec rails db:migrate
# Verificar status das migrações
docker compose exec rails bundle exec rails db:migrate:status
# Em caso de primeiro deploy (banco vazio)
docker compose exec rails bundle exec rails db:create db:migrate db:seedCausa 4: URL ou porta incorreta no FRONTEND_URL
O Chatwoot precisa que FRONTEND_URL seja a URL pública e acessível. Uma URL incorreta causa falha no WebSocket e no carregamento do painel:
# No .env, definir a URL pública (sem barra no final)
FRONTEND_URL=https://chat.seudominio.com.br
# Reconstruir o container após alterar variáveis
docker compose down
docker compose up -d
# Verificar se o painel carrega
curl -I https://chat.seudominio.com.br$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o Chatwoot em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.