Pular para o conteúdo

Como atualizar a NooviChat pelo Portainer

Guia completo para atualizar a NooviChat usando o Portainer — incluindo os cuidados essenciais com volumes de dados para não perder mensagens, arquivos ou histórico de conversas.

Antes de começar

Antes de qualquer atualização, execute o backup do banco de dados. Se algo der errado durante o processo, o backup garante que você pode restaurar tudo do ponto anterior.

Faça backup antes de atualizar

Acesse o console do serviço postgres no Portainer e rode:

bash
pg_dump -U noovichat noovichat > /var/lib/postgresql/data/backup_$(date +%Y%m%d_%H%M).sql

Guarde o arquivo em um local seguro fora do servidor (S3, Google Drive, etc.).

Volumes: o que apagar?

Esta é a parte mais importante da atualização. A regra é simples: só apague volumes se tiver recebendo instrução explícita para isso — em atualizações de rotina, não é necessário apagar nenhum volume.

VolumeO que contémPode apagar?
noovichat_storageArquivos enviados nas conversas — imagens, vídeos, documentos, áudiosNão apagar
noovichat_postgresTodo o banco de dados — conversas, contatos, configurações, históricoNão apagar
noovichat_redisCache e filas de tarefas (temporário, regenerado automaticamente)Só se solicitado

✓ Se você usa MinIO ou S3

Os arquivos de conversas (imagens, vídeos, documentos) estão salvos no bucket — o volume noovichat_storage é apenas um cache local e pode ser removido com segurança se for solicitado. Mesmo assim, prefira não remover sem necessidade.

✗ Se você NÃO usa MinIO nem S3

Todos os arquivos enviados nas conversas — imagens, vídeos, documentos, áudios — ficam salvos dentro do volume noovichat_storage. Apagar este volume significa perda permanente e irreversível de todo esse conteúdo. Não há como recuperar depois.

Passo a passo da atualização

Siga os passos em ordem. Tempo estimado: 5 a 10 minutos.

1

Pause a stack

No Portainer, acesse Stacks, clique na sua stack da NooviChat e clique em Stop. Aguarde todos os serviços pararem completamente.

Avise os usuários

A NooviChat ficará indisponível durante o processo. Recomendamos fazer a atualização fora do horário de pico de atendimento.

2

Atualize a tag da imagem

Na edição da stack, localize os serviços app e sidekiq e atualize a imagem para a nova versão. Se estiver usando :latest, o Portainer vai baixar a versão mais recente automaticamente no redeploy.

yaml
# Usando a tag latest (sempre pega a versão mais recente)
image: nooviai/noovichat:latest

# Ou usando uma versão específica
image: nooviai/noovichat:3.12.0

Veja as versões disponíveis no Docker Hub — o suporte NooviAI informa a tag correta a cada nova versão.

3

Clique em "Prune Services" e depois em "Redeploy"

Na parte inferior da página da stack, clique primeiro em Prune Services(remove serviços antigos) e depois em Redeploy.

Quanto tempo demora?

O download da nova imagem leva de 2 a 5 minutos dependendo da velocidade do servidor. Aguarde o serviço app aparecer com status running antes de continuar.

4

Acesse o console do serviço app

Na lista de serviços da stack, clique no ícone de Console ao lado do serviço app. Na tela que abrir, selecione sh e mantenha o usuário como root. Clique em Connect.

5

Rode a migração do banco de dados

Com o console aberto, execute:

bash
bundle exec rails db:migrate

Você verá as migrations sendo aplicadas linha por linha. Quando parar de rodar e retornar ao prompt, o processo terminou. Feche o console.

6

Verifique a atualização

Acesse a URL da NooviChat no navegador e confirme que está funcionando. Para verificar a versão instalada, acesse: https://chat.seudominio.com/auth/sign_in e veja o rodapé da tela de login.

Tudo certo?

Se a tela abrir normalmente e os usuários conseguirem fazer login, a atualização foi concluída com sucesso.

Trocar para uma versão específica

Se você recebeu do suporte NooviAI uma tag específica (ex: 3.12.0 ou uma tag de staging como staging-20250301), edite a imagem dos dois serviços na stack:

yaml
services:
  app:
    image: nooviai/noovichat:3.12.0   # <-- troque aqui

  sidekiq:
    image: nooviai/noovichat:3.12.0   # <-- e aqui também

Sempre atualize os dois serviços

O app e o sidekiq precisam estar sempre na mesma versão. Versões diferentes entre os dois causam erros imprevisíveis no processamento de mensagens e webhooks.

Entendendo o db:migrate

O comando bundle exec rails db:migrate aplica as mudanças estruturais no banco de dados que acompanham a nova versão — novas tabelas, colunas, índices. Ele não apaga dados existentes.

Para verificar se as migrations foram aplicadas corretamente, use:

bash
# Mostra o status de cada migration
# "up" = aplicada   |   "down" = pendente
bundle exec rails db:migrate:status

E se aparecer erro durante o migrate?

Erros do tipo relation already exists podem ser ignorados — significam que a migration já foi aplicada anteriormente. Erros diferentes (ex: column not found) devem ser reportados ao suporte NooviAI antes de continuar.

Comandos úteis no console

bundle exec rails db:migrate

Aplica as migrations pendentes. Rode sempre após atualizar a imagem.

bundle exec rails db:migrate:status

Mostra o status de cada migration — "up" (aplicada) ou "down" (pendente).

bundle exec rails db:rollback

Desfaz a última migration. Use com cuidado — apenas em caso de erro logo após a atualização.

bundle exec rails db:rollback STEP=3

Desfaz as últimas 3 migrations.

bundle exec rails db:version

Mostra o número da última migration aplicada. Útil para confirmar qual versão do banco está ativa.

Problemas comuns

A versão não mudou após o redeploy

Se estiver usando :latest, o Docker pode ter usado o cache da imagem anterior. Na edição da stack, clique em "Pull latest image" antes de fazer o redeploy. Outra opção é especificar a tag exata da versão nova em vez de usar :latest.

Status "rejected" ou "failed" no serviço após o redeploy

Em 90% dos casos o nome da imagem está errado (espaço extra, tag incorreta). Verifique se app e sidekiq estão com a mesma imagem e tag. Confira os logs do serviço no Portainer para ver a mensagem de erro exata.

NooviChat abre mas fica em tela branca ou com erro 500

As migrations provavelmente não foram rodadas. Acesse o console do serviço app e execute bundle exec rails db:migrate. Depois verifique os logs do serviço sidekiq.

Erro "PG::UndefinedTable" nos logs

Confirma que o db:migrate foi executado. Se já rodou e o erro persiste, rode db:migrate:status para ver se há migrations com status "down" e reporte ao suporte NooviAI.

Não consigo acessar o console do serviço no Portainer

O serviço precisa estar com status running. Se estiver em outro estado (starting, failed), aguarde ou reinicie o serviço. Caso o problema persista, use o método de atualização via CLI.