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:
pg_dump -U noovichat noovichat > /var/lib/postgresql/data/backup_$(date +%Y%m%d_%H%M).sqlGuarde 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.
| Volume | O que contém | Pode apagar? |
|---|---|---|
| noovichat_storage | Arquivos enviados nas conversas — imagens, vídeos, documentos, áudios | Não apagar |
| noovichat_postgres | Todo o banco de dados — conversas, contatos, configurações, histórico | Não apagar |
| noovichat_redis | Cache 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.
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.
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.
# 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.0Veja as versões disponíveis no Docker Hub — o suporte NooviAI informa a tag correta a cada nova versão.
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.
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.
Rode a migração do banco de dados
Com o console aberto, execute:
bundle exec rails db:migrateVocê verá as migrations sendo aplicadas linha por linha. Quando parar de rodar e retornar ao prompt, o processo terminou. Feche o console.
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:
services:
app:
image: nooviai/noovichat:3.12.0 # <-- troque aqui
sidekiq:
image: nooviai/noovichat:3.12.0 # <-- e aqui tambémSempre 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:
# Mostra o status de cada migration
# "up" = aplicada | "down" = pendente
bundle exec rails db:migrate:statusE 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:migrateAplica as migrations pendentes. Rode sempre após atualizar a imagem.
bundle exec rails db:migrate:statusMostra o status de cada migration — "up" (aplicada) ou "down" (pendente).
bundle exec rails db:rollbackDesfaz a última migration. Use com cuidado — apenas em caso de erro logo após a atualização.
bundle exec rails db:rollback STEP=3Desfaz as últimas 3 migrations.
bundle exec rails db:versionMostra 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.