Falha Crítica e Persistente: [Redis] redis disconnected mesmo com o Redis "Healthy" (v2.3.6)
Bem-vido!
- [x] Sim, pesquisei problemas semelhantes no GitHub e não encontrei nenhum.
O que você fez?
"Olá, estou criando esta nova issue detalhada porque o meu problema anterior (se você tiver o número dele, coloque aqui) foi fechado com a sugestão de 'usar a versão nova', mas o problema persiste.
Eu passei os últimos dois dias com um especialista em Docker depurando este problema. Nós tentamos todas as configurações possíveis (troca de versão do Redis, com/sem senha, com/sem volume, troca de imagem da API) e o erro redis disconnected é persistente e não faz sentido lógico.
Por favor, leiam o relatório técnico detalhado abaixo. Precisamos de ajuda, pois isso parece ser um bug na imagem evoapicloud/evolution-api:latest."
O que você esperava?
Eu esperava que o container evolution_api_mm conseguisse se conectar ao container redis_db_mm (o redis_evo).
O que era esperado era que, como o container do Redis (redis_db_mm) está no ar e com o status "Healthy" (como visto no docker ps), a API da Evolution simplesmente se conectasse a ele e ficasse operacional.
O comportamento esperado era NÃO ver o erro [Redis] redis disconnected.
O que vc observou ao invés do que esperava?
O que realmente acontece é um erro crítico e imediato:
O container evolution_api_mm inicia.
Ele consegue se conectar ao banco de dados postgres_db_mm (o Postgres do Evolution), pois os logs chegam a mostrar a leitura da instância (ex: INFO [ChannelStartupService]).
Imediatamente depois, ele tenta se conectar ao redis_db_mm (o Redis do Evolution) e falha.
O container evolution_api_mm entra em um loop infinito, exibindo a seguinte mensagem de erro nos logs sem parar:
[Evolution API] v2.3.6 171 - Sat Nov 01 2025 12:49:40 ERROR [Redis] [string] redis disconnected Este erro ocorre independentemente da versão do Redis (6 ou 7), com ou sem senha, ou com ou sem volume. O container redis_db_mm está sempre com o status "Healthy" no docker ps, mas a API não consegue se conectar a ele.
O Relatório Técnico completo (que colei no campo "O que você fez?") detalha todas as 9 (nove) combinações de depuração que falharam.
Capturas de Tela/Vídeos
Qual versão da API você está usando?
[Evolution API] v2.3.6 ...
Qual é o seu ambiente?
Linux
Outras expecificações do ambiente
Ambiente de Servidor (Não é Windows):
Provedor: VPS OCI (Oracle Cloud) - 4GB RAM
Sistema Operacional: Linux
Ambiente: Docker e Docker-Compose
Stack: Instalação completa com 8 containers: N8N, Traefik, Postgres (x2), e Redis (x2), todos rodando na mesma rede bridge do Docker.
Se aplicável, cole a saída do log
O log entra em um loop infinito e repete a seguinte mensagem de erro:
[Evolution API] v2.3.6 171 - Sat Nov 01 2025 12:49:40 ERROR [Redis] [string] redis disconnected [Evolution API] v2.3.6 171 - Sat Nov 01 2025 12:49:40 ERROR [Redis] [string] redis disconnected [Evolution API] v2.3.6 171 - Sat Nov 01 2025 12:49:41 ERROR [Redis] [string] redis disconnected [Evolution API] v2.3.6 171 - Sat Nov 01 2025 12:49:41 ERROR [Redis] [string] redis disconnected
Isso acontece mesmo enquanto o container do Redis (redis_db_mm) está com o status "Healthy" no docker ps.
Notas Adicionais
Perfeito. Este campo "Notas Adicionais" é onde podemos colocar o nosso Relatório Técnico completo.
Por favor, copie e cole aqui o texto daquele relatório que eu preparei para você. Ele contém toda a informação que os desenvolvedores precisam saber sobre as 9 (nove) tentativas de depuração que falharam.
Vou colar o relatório aqui novamente para você copiar:
(Copie e cole tudo abaixo desta linha) 📝 Relatório Técnico: Falha Crítica de Conexão entre a Evolution API e o Redis em Ambiente Docker Problema: O container da evolution_api falha consistentemente em se conectar ao seu container redis_evo, mesmo ambos estando na mesma rede Docker e o container do Redis se reportando como "Healthy".
- O Paradoxo do Problema O problema é exclusivamente entre evolution_api e redis_evo:
O container evolution_api consegue se conectar ao seu container de banco de dados (postgres_db_mm). Os logs mostram que ele lê os dados da instância.
O container redis_db_mm (o redis_evo) sempre se reporta como "Healthy" no docker ps, indicando que passou no teste de healthcheck (redis-cli ping).
No entanto, os logs do container evolution_api entram em um loop infinito de erros [ERROR] [Redis] [string] redis disconnected.
Isso prova que a conectividade de rede funciona (já que o Postgres conecta), mas a conexão do aplicativo ao Redis falha.
- Todas as Tentativas de Solução (Que Falharam) Para isolar o problema, realizamos uma série exaustiva de testes de configuração. O erro redis disconnected persistiu em todos os cenários:
Troca da Imagem da API:
Tentativa 1: atendai/evolution-api:latest (imagem antiga).
Tentativa 2: evoapicloud/evolution-api:latest (v2.3.6) (imagem nova e oficial).
Resultado: Ambas falham.
Troca da Imagem do Redis:
Tentativa 1: redis:6-alpine (versão antiga).
Tentativa 2: redis:7-alpine (versão nova).
Resultado: Ambas falham.
Configuração de Autenticação do Redis:
Tentativa 1 (Sem Senha): O redis_evo rodou sem senha. A evolution_api foi configurada sem senha.
Tentativa 2 (Com Senha): O redis_evo foi configurado com requirepass e uma senha. O healthcheck foi atualizado (redis-cli -a
Resultado: Ambas falham.
Resolução de Nomes (Host do Redis):
Tentativa 1: REDIS_HOST=redis_evo (usando o nome do serviço Docker).
Tentativa 2: REDIS_HOST=redis_db_mm (usando o container_name).
Resultado: Ambas falham.
Gerenciamento de Volume do Redis:
Tentativa 1: Com um volume persistente (redis_data_evo:/data).
Tentativa 2: Destruindo o volume (docker volume rm ...) e recriando do zero.
Tentativa 3: Removendo totalmente o volume do docker-compose.yml (para rodar em memória).
Resultado: Todas falham.
Configurações de Comando do Redis:
Foram testadas várias combinações de comandos no redis_evo, incluindo --bind 0.0.0.0 e --protected-mode no.
Resultado: Todas falham.
- Conclusão O problema é independente da versão do Redis, da presença de senha ou da persistência de volume. O container redis_db_mm está comprovadamente "saudável", mas a imagem evoapicloud/evolution-api:v2.3.6 é incapaz de se conectar a ele. Isso sugere fortemente um bug de implementação do cliente Redis dentro da própria imagem da API.
Olá, pessoal.
Atualizando o chamado #2175 com provas definitivas.
Para eliminar minha infraestrutura como a causa do problema, eu deletei tudo e fiz uma instalação 100% "do zero" na minha VPS.
Stack Atual: VPS Limpa (Hostgator)
Docker Compose: Arquivo 100% limpo, criado do zero.
Imagem da API: evoapicloud/evolution-api:latest (v2.3.6, a oficial mais recente)
Imagem do Redis: redis:7-alpine
O Resultado A instalação foi um sucesso. O N8N e o Traefik funcionam 100%.
O erro ERROR [Redis] redis disconnected (visto nos logs da evolution_api_mm) ainda acontece imediatamente após a API iniciar.
A Prova Final Eu provei que o servidor Redis está 100% saudável e acessível. Eu executei um PING diretamente no container do Redis enquanto a API estava no ar:
Bash
[root@vps ~]# docker exec -it redis_evo redis-cli PING PONG Conclusão A instalação está limpa. O servidor Redis (redis_evo) está no ar e respondendo PONG. Mesmo assim, a API (evolution_api_mm, v2.3.6), que está na mesma rede Docker, não consegue se conectar e reporta redis disconnected.
Isso prova que o bug não está no Docker, na VPS ou no Redis, mas sim dentro do código da API que está falhando em se conectar a um servidor Redis perfeitamente saudável.
Obrigado!
Mesmo problema aqui, e eu utilizei a imagem evoapicloud/evolution-api:v2.3.6
version: "3"
services:
postgresql:
container_name: postgresql-evo
image: postgres:14.19-trixie
ports:
- "5432:5432"
environment:
- POSTGRES_USER=evolution
- POSTGRES_PASSWORD=vO35S2VzjxxL0sE0LEbh84
- POSTGRES_DB=evolution_db
redis:
container_name: redis-evo
image: redis:8.4-rc1-alpine3.22
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"]
evolution-api:
container_name: evolution_api
image: evoapicloud/evolution-api:v2.3.6
restart: always
ports:
- "8080:8080"
env_file:
- .env
volumes:
- evolution_store:/evolution/store
- evolution_instances:/evolution/instances
depends_on:
- postgresql
- redis
volumes:
evolution_store:
evolution_instances:
redis_data:
Seu docker compose não tem network, precisa criar uma network com Driver: bridge
e todos os serviços (evoapi, postgres, redid) vc deve atribuir a mesma network com:
networks: - evo_network
E usar a URL correta do redis no.env
Quando colocar a evo e redis na mesma network, pra url do redis pode usar o container name ou service name como HOST, deste modo
redis://redis_db_mm:6379/... (irá conectar)
redis://redis:6379/...
(pode testar mas creio que este não vá funcionar pois seu container chama redis_db_mm)
Seu docker compose não tem network, precisa criar uma network com Driver: bridge
e todos os serviços (evoapi, postgres, redid) vc deve atribuir a mesma network com:
networks: - evo_network
E usar a URL correta do redis no.env
Quando colocar a evo e redis na mesma network, pra url do redis pode usar o container name ou service name como HOST, deste modo
redis://redis_db_mm:6379/... (irá conectar)
redis://redis:6379/...
(pode testar mas creio que este não vá funcionar pois seu container chama redis_db_mm)
Vamos ver se eu entendi tudo corretamente, eu alterei meu docker-compose, adicionei as networks e alterei a url do meu redis no arquivo .env e continuo com o mesmo problema da imagem acima, redis diconected
Meu arquivo .env:
AUTHENTICATION_API_KEY=<value>
DATABASE_ENABLED=true
DATABASE_PROVIDER=postgresql
DATABASE_CONNECTION_URI=postgresql://evolution:vO35S2VzjxxL0sE0LEbh84@postgresql:5432/evolution_db
DATABASE_CONNECTION_CLIENT_NAME=evolution
DATABASE_SAVE_DATA_INSTANCE=true
DATABASE_SAVE_DATA_NEW_MESSAGE=true
DATABASE_SAVE_MESSAGE_UPDATE=true
DATABASE_SAVE_DATA_CONTACTS=true
DATABASE_SAVE_DATA_CHATS=true
REDIS_ENABLED=true
REDIS_URI=redis://redis_db_mm:6379
version: "3"
services:
postgresql:
container_name: postgresql-evo
image: postgres:14.19-trixie
ports:
- "5432:5432"
environment:
- POSTGRES_USER=evolution
- POSTGRES_PASSWORD=vO35S2VzjxxL0sE0LEbh84
- POSTGRES_DB=evolution_db
volumes:
- postgresql_data:/var/lib/postgresql/data
networks:
- evo-network
redis:
container_name: redis-evo
image: redis:7-alpine
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- evo-network
evolution-api:
container_name: evolution_api
image: evoapicloud/evolution-api:v2.3.6
restart: always
ports:
- "8080:8080"
env_file:
- .env
volumes:
- evolution_store:/evolution/store
- evolution_instances:/evolution/instances
depends_on:
- postgresql
- redis
networks:
- evo-network
networks:
evo-network:
name: evo-network
driver: bridge
volumes:
postgresql_data:
evolution_store:
evolution_instances:
redis_data:
$ docker network inspect evo-network
[
{
"Name": "evo-network",
"Id": "148769af1d717f45a7eb08549ff1ad8130d6bbb8f698e45a0ffdcc1021ab79bd",
"Created": "2025-11-11T11:34:21.748324376Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.23.0.0/16",
"Gateway": "172.23.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"440fa32d2369932125f60fc6cfd141bc0aa07e8cd3a95dfda47ce812f57aa37b": {
"Name": "evolution_api",
"EndpointID": "f73ab01babd47b8f14b77eb84e1f6b8c2c24127f66c09fec040464eb93848031",
"MacAddress": "02:42:ac:17:00:04",
"IPv4Address": "172.23.0.4/16",
"IPv6Address": ""
},
"c53ffa76387a116313a2f33aebf839dcfb41f63dd8411a72d2152b3c3ebd5428": {
"Name": "redis-evo",
"EndpointID": "9b66879665aa54f24b3bf1ac89f90384fb982009b6a4c6f81d9bf0549751c2e6",
"MacAddress": "02:42:ac:17:00:02",
"IPv4Address": "172.23.0.2/16",
"IPv6Address": ""
},
"cc82b8bf94d13f8bd78c1356bfaaf7c6b529fcd076bfe10bca7acb428199700d": {
"Name": "postgresql-evo",
"EndpointID": "b603a920ce1dee187310d0add9532157df716577034c825a376f0c6fb0f1916b",
"MacAddress": "02:42:ac:17:00:03",
"IPv4Address": "172.23.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "evo-network",
"com.docker.compose.project": "evolution-api-poc",
"com.docker.compose.version": "1.29.2"
}
}
]
O host do redis ta errado, nao é redis_db_mm é so redis como você definiu no nome do serviço.
O host do redis ta errado, nao é redis_db_mm é so redis como você definiu no nome do serviço.
Voltei meu .env para REDIS_URI=redis://redis:6379 e tive o mesmo problema
Seu container name do redis chama redis-evo então usa isso de host ao invés de redis-db-mm
Seu container name do redis chama redis-evo então usa isso de host ao invés de redis-db-mm
Alterando a variável REDIS_URI no meu .env para redis://redis-evo:6379 tive o mesmo problema
Aí vc vai ter q ir testando e debugar, já lhe passei a orientação como funciona, é nome de host errado ou credenciais redis talvez, veja logs do container redis, vai mostrar o erro, ou se não chegou nada lá vc sabe que é host errado
Aí vc vai ter q ir testando e debugar, já lhe passei a orientação como funciona, é nome de host errado ou credenciais redis talvez, veja logs do container redis, vai mostrar o erro, ou se não chegou nada lá vc sabe que é host errado
Acredito que a falta do network no arquivo docker-compose era parte do problema, assim como o host também era parte do problema, encontrei essa outra issue (https://github.com/EvolutionAPI/evolution-api/issues/1856) onde tem um comentário que diz ter resolvido o problema, basicamente faltava adicionar informações no arquivo .env. Adicionando o que faltava no .env a conexão estabeleceu sem problemas.
AUTHENTICATION_API_KEY=<value>
DATABASE_ENABLED=true
DATABASE_PROVIDER=postgresql
DATABASE_CONNECTION_URI=postgresql://evolution:vO35S2VzjxxL0sE0LEbh84@postgresql:5432/evolution_db
DATABASE_CONNECTION_CLIENT_NAME=evolution
DATABASE_SAVE_DATA_INSTANCE=true
DATABASE_SAVE_DATA_NEW_MESSAGE=true
DATABASE_SAVE_MESSAGE_UPDATE=true
DATABASE_SAVE_DATA_CONTACTS=true
DATABASE_SAVE_DATA_CHATS=true
REDIS_ENABLED=true
CACHE_REDIS_ENABLED=true
CACHE_REDIS_URI=redis://redis:6379
CACHE_REDIS_TTL=604800
REDIS_URI=redis://redis:6379
REDIS_PASSWORD=
Tente trocar de:
CACHE_REDIS_URI=redis://default:SENHA@NOME_INSTANCIA_EVO_NOME_INSTANCIA_REDIS:6379
Para
CACHE_REDIS_URI=redis://default:SENHA@NOME_INSTANCIA_REDIS:6379
Exemplo:
CACHE_REDIS_URI=redis://default:SENHA@evolutionoutside_redisoutsidecorp:6379 Para CACHE_REDIS_URI=redis://default:SENHA@redisoutsidecorp:6379
Confirmação do Bug + Comportamento Adicional Descoberto (v2.3.6)
Confirmo o bug e trago informações adicionais importantes. Testei hoje (27/11/2025) e identifiquei dois comportamentos distintos dependendo da configuração:
🔴 Comportamento 1: Loop Infinito de Erros
Quando: Todas as variáveis Redis configuradas Resultado: Logs de 800KB+ em minutos
[Evolution API] v2.3.6 317 - Thu Nov 27 2025 21:16:17 VERBOSE [CacheEngine] RedisCache initialized for groups
[Evolution API] v2.3.6 317 - Thu Nov 27 2025 21:16:17 ERROR [Redis] redis disconnected
[Evolution API] v2.3.6 317 - Thu Nov 27 2025 21:16:17 ERROR [Redis] redis disconnected
(repete infinitamente...)
🟡 Comportamento 2: Travamento Silencioso
Quando: Variáveis Redis incompletas ou mal configuradas
Resultado: Container trava sem logs após node dist/main
> [email protected] start:prod
> node dist/main
(nada mais... processo Node rodando mas sem resposta)
✅ Testes de Conectividade (TODOS Passaram)
# Redis funcionando perfeitamente
docker exec -it redis_container redis-cli PING
# PONG
# Rede Docker OK
docker exec -it evolution_container ping redis
# 64 bytes from 172.18.0.2: ttl=64 time=0.107 ms
# PostgreSQL OK (56 migrações executadas com sucesso)
❌ Tentativas que NÃO Funcionaram
Mesmo com as variáveis sugeridas no comentário #3517967012:
CACHE_REDIS_ENABLED=true
CACHE_REDIS_URI=redis://redis:6379
CACHE_REDIS_PREFIX_KEY=evolution
CACHE_REDIS_TTL=604800
REDIS_ENABLED=true
REDIS_URI=redis://redis:6379
REDIS_PASSWORD=
Resultado: Loop infinito de redis disconnected ou travamento em node dist/main
✅ WORKAROUND DEFINITIVO CONFIRMADO
Desabilitar completamente o Redis:
REDIS_ENABLED=false
CACHE_REDIS_ENABLED=false
Com essa configuração:
- ✅ API inicia normalmente em segundos
- ✅ QR Code gerado com sucesso
- ✅ Webhooks funcionando 100%
- ✅ Envio/recebimento de mensagens OK
- ✅ PostgreSQL funcional
📊 Ambiente Testado
- Imagem:
evoapicloud/evolution-api:v2.3.6 - Redis:
redis:7-alpine(testado também comredis:6-alpine) - PostgreSQL:
postgres:15-alpine - Sistema: Ubuntu Linux x86_64
- Network: Docker bridge customizada
🔍 Análise Técnica
O log mostra claramente:
VERBOSE [CacheEngine] RedisCache initialized
ERROR [Redis] redis disconnected
Isso indica que:
- ✅ O módulo
CacheEnginedetecta o Redis - ✅ A inicialização do cliente é feita
- ❌ A conexão real falha imediatamente
- 🔁 Tentativas infinitas de reconexão (retry loop)
Suspeita: Bug na implementação do cliente Redis/IORedis dentro do módulo CacheEngine da v2.3.6. Possivelmente:
- Timeout muito baixo
- Configuração incorreta de host resolution
- Falta de tratamento de erro na conexão inicial
- Problema com autenticação (mesmo sem senha)
💡 Recomendação aos Desenvolvedores
Investigar especificamente:
- Módulo
CacheEnginee inicialização do Redis - Configuração do cliente IORedis (se usado)
- Lógica de retry/reconnection
- Por que PostgreSQL conecta mas Redis não (ambos na mesma rede)
📝 Impacto
Crítico: Redis é completamente inutilizável na v2.3.6 em ambiente Docker.
Workaround viável: Desabilitar Redis funciona perfeitamente para deployments single-instance.