Evolution API com PostgreSQL e Redis: sessões que sobrevivem a um reinício

Uma instalação da Evolution API que perde as sessões a cada reinício é uma instalação sem volume persistente. A base de dados guarda as instâncias e as mensagens; o Redis, que muitos guias juntam, serve de apoio; e os volumes do Docker garantem que nada disto desaparece quando o contentor é recriado. Este artigo mostra como estas peças se encaixam e como provar que as sessões sobrevivem.

O papel de cada peça

Peça Para que serve Se faltar
A Evolution API Recebe os pedidos e fala com o WhatsApp. Nada funciona.
PostgreSQL ou MySQL Guarda as instâncias e os dados, segundo a documentação do projecto. A API não arranca, ou arranca sem memória do que existia.
Redis Muitos guias usam-no como apoio. A documentação diz o que a sua versão exige. Conforme a configuração, o serviço queixa-se ou funciona com menos apoio.
Volumes do Docker Guardam em disco o que não pode desaparecer. Cada reinício apaga as sessões e obriga a ler os QR outra vez.

As duas bases de dados são suportadas. O PostgreSQL é o que mais guias mostram, mas o MySQL ou o MariaDB servem se for o que já conhece. Se hesita, veja PostgreSQL ou MySQL: qual para o seu projecto.

Montar para sobreviver

1 Ponha a base de dados num serviço do compose com um volume com nome para os seus dados. O volume é o que fica quando o contentor desaparece. Para o desenho, veja Docker Compose com base de dados.
2 Dê um volume também às instâncias da API, como o ficheiro de exemplo do projecto indica.
3 Faça os serviços falar pelo nome. Na mesma rede do Compose, o endereço da base de dados é o nome do serviço, não localhost. Palavra-passe e utilizador têm de ser iguais nos dois lados.
4 Não publique as portas da base de dados nem do Redis. Só a API precisa de lhes chegar, por dentro da rede do Docker.
5 Defina a política de reinício para os serviços voltarem sozinhos depois de um reinício do servidor. O compose tem uma opção para isso, e o exemplo do projecto costuma trazê-la.

Provar que funciona

1 Ligue uma instância de teste e confirme que envia.
2 Reinicie os serviços com docker compose restart. A instância deve voltar ligada, sem pedir QR.
3 Pare e recrie: docker compose down e depois docker compose up -d. Isto apaga os contentores mas não os volumes. A instância continua a existir.
4 Reinicie o próprio VPS uma vez, num momento calmo, e veja se tudo volta sozinho.
O volume não é uma cópia de segurança. Protege contra o reinício, não contra um disco que avaria, um apagão do contentor por engano ou um docker compose down -v. Faça cópias da base de dados (veja cópias com mysqldump e pg_dump) e guarde-as fora do servidor.
Veja de vez em quando o espaço que os volumes e os registos ocupam. Uma base de dados cheia derruba tudo de uma vez: Docker a encher o disco. E para actualizar sem perder nada, actualizar e fazer cópias da Evolution API.

Precisa de mais disco para a base de dados? Veja os planos de VPS.

Ver servidores VPS

VEJA TAMBÉM

Docker Compose com base de dados

Cópias com mysqldump e pg_dump

Actualizar e fazer cópias da Evolution API

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5,94 €/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?