Comunidade ZDG

Correções e Status das Libs atualizados.

Status

Editado: 2026-07-10 04:00:00

# TOP ERROR

. estável

# NEWS

. Z-Pró V4 docker

. Processamento do Backend em Modo Cluster

. TechProvider para transformar seu Whatsapp em Oficial (Instagram e Facebook Messenger ).

. Integração Woocommerce, OLX, MercadoLivre e outros.

. hubWABA gratuito

# FIQUE TRANQUILO

Mantemos seu sistema sempre ativo!

. Suporte preferencial via whatsapp;
. Atualizações recorrentes quando disponíveis;
. Backup externo diário;
. Correções de bugs e assessoria técnica;
. Monitoramento uptime da sua VPS.

Consulte-nos


Z-Pró Versão HOMOLOG
4.0.2.0

+estável
Z-Pró Versão HOTFIX
4.0.2.3

Lib / API Estabilidade Facilidade na Implantação Escalabilidade Perfil Ideal
CloudApi (waba) Alta ⭐⭐⭐ Estabilidade
COEXISTENCE (waba) Alta ⭐⭐ ⭐⭐⭐ Estabilidade 
DIALOG360 (waba)Alta⭐⭐⭐Estabilidade 
Z-Api Alta ⭐⭐ ⭐⭐ Negócio local
UAzapi Alta ⭐⭐ ⭐⭐⭐ Escala
Meow / Wuzapi Média ⭐⭐ ⭐⭐⭐ Projetos médios
wwbjs Baixa ⭐⭐⭐ Projetos médios
Baileys Baixa ⭐⭐⭐ ⭐⭐ Negócio / Dev / Automação
Evolution API Média ⭐⭐ ⭐⭐⭐ Negócio / Dev / Automação
hubNotificame ( insta/face/email ) Alta ⭐⭐ ⭐⭐ Projetos médios
Instagran (WABA) Alta ⭐⭐ ⭐⭐⭐ Estabilidade
Facebook (WABA) Alta ⭐⭐ ⭐⭐⭐ Estabilidade
E-mailsAlta⭐⭐⭐⭐⭐Estabilidade
gupshup Alta Estabilidade


Comandos

top
Mostra consumo de memória, livre e total, e uso de CPU.
Alternativa: htop

top
# ou
sudo apt install htop
htop


pm2 monit
Exibe consumo dos processos ativos e logs em tempo real.

pm2 monit


Limpar cache npm

sudo npm cache clean --force


Update global do npm

sudo npm i -g npm


Corrigir peer dependencies

npm install --save-dev "outro-pacote"


Instalar módulo extra

cd /pasta/app
npm i nome-pacote --force


Reinstalar pacotes forçado

rm -rf node_modules package-lock.json
npm install -g --unsafe-perm=true --allow-root


Instalar Node.js

sudo apt update && sudo apt upgrade
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs


Remover Node.js (método 1)

sudo apt purge npm nodejs
node --version
npm --version


Remover Node.js (método 2)

sudo apt-get remove nodejs
sudo apt-get remove --purge nodejs
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/lib/node_modules/npm


Instalar várias versões do Node com NVM

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm ls-remote
nvm install 14.21.3
nvm use 14.21.3


Listar todos os domínios do Nginx

grep server_name /etc/nginx/sites-enabled/* -RiI


Instalar Google Chrome

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb


Verificar config do Nginx

sudo nginx -t


Encerrar processo em porta específica

sudo lsof -nP -iTCP -sTCP:LISTEN
lsof -i :80
kill -9 PID


Exportar Backup MySQL

mysqldump -u usuario -p --single-transaction --routines --triggers nomedabase > /backups/nomedabase.sql
mysql -u usuario -p nomedabase < /backups/nomedabase.sql


Exportar Backup PostgreSQL

pg_dump -U postgres nomebanco > /home/nomebanco.sql


Firewall básico UFW

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable


Checar espaço em disco

df -h
sudo du -sh *



Permitir acesso root ao deployzdg total sem senha

sudo visudo
# insere ao final do arquivo e pronto
deployzdg ALL=(ALL) NOPASSWD:ALL



Docker . Reiniciar Todas as Aplicações

docker stop $(docker ps -q)
docker start $(docker ps -aq)



Login CMD Windows Automático
4. Configurações técnicas > Acessando o Banco de Dados
ssh-keygen -t ed25519 -C "dev@ndnw.com.br"
type C:\Users\User\.ssh\id_ed25519.pub
as5d4a6sd4
ssh root@46.202.147.209
# yes | root password | enter | enter



Alterar Senha da Base de Dados postgres

# Faça o snapshot da sua vps. Acesse via terminal e execute:
docker exec -it postgres bash -lc "psql -U postgres -c \"ALTER USER zpro WITH PASSWORD 'OutraSenha123';\""
# Depois no arquivo .env do seu backend
nano /home/deployzdg/zpro.io/backend/.env
# Substitui pela senha nova e reinicie o backend



Atualizar VPS

sudo apt update && sudo apt upgrade -y
sudo npm install -g npm@latest
#logar como deployzdg e rodar dentro de zpro/frontend e de zpro/backend
npx update-browserslist-db@latest



Comandos para build do frontend/

 a. sudo su deployzdg
 b. cd /home/deployzdg/zpro.io/frontend
 c. export NODE_OPTIONS=--openssl-legacy-provider
 d. npx quasar build -P -m pwa
 e. pm2 stop all
 f. pm2 flush
 g. pm2 start all


Alterar Senha Postgres

#gerar hash
openssl rand -base64 48

#executar alteracao
docker ps -a
docker exec -it postgresql psql -U zpro
ALTER USER zpro WITH PASSWORD 'NOVA_SENHA_AQUI';
\du
\q





Erros

Erro: ENOENT (index.html não encontrado)
Caminho: /home/deployzdg/zpro.io/frontend/dist/pwa/index.html
Correção: Não executou o build corretamente → refaça o build do frontend.


incoming prekey bundle
Correção: Excesso de conexões na base. Reinicie o backend. Normalmente causado pelo Baileys.


Error: Evaluation failed: b
Correção: Travamento no wwebjs (Chrome travado em ação). Reinicie o backend.


Error: Queue not found (63-SendMessages)
Correção: Fila de disparos travada ou inexistente. Reinicie a ZPRO ou recrie o canal id referenciado.


ERR_BIG_MAC
Correção: Excesso de reconexões. Reinicie o backend (geralmente Baileys).


ERR_NO_DEF_WHATSAPP_FOUND
Correção: Adicione um canal como padrão (opção aparece só no modo expandido da tela de canais).


ERR_WHATSAPP_NOT_CONECTED
Correção: Canal deslogado ou aguardando conexão. Reconectar o canal pelo ID.


ERR_NO_PERMISSION_CONNECTIONS_LIMIT
Correção: Tenant atingiu limite de canais permitidos. Verifique configuração de permissões.


Erro: Could not load "sharp" module (Unsupported CPU)
Correção: VPS com processador incompatível (ARM64 não funciona). É necessário VPS com CPU AMD/Intel x64.


Erro no Postgres: could not open file "pg_filenode.map"
Correção 1: Ajustar permissões e reiniciar PostgreSQL:

docker container restart postgresql
docker exec -it postgresql bash
chown -R postgres:postgres /var/lib/postgresql

Correção 2: Se não resolver: backup → excluir container → recriar novo → restaurar dump.


ERROR: checkMessages (id undefined)
Correção: Alguma mensagem sem ID de canal. Validar dados na base.


Erro: Adicionar contato gera "undefined"
Correção: Definir canal principal como padrão na tenant.


Error: rate-overlimit (erro 500 baileys)
Correção: Limitação que o whatsapp coloca na baileys, no uso do grupo, não tem como burlar. Use wwebjs


stream errored out e Connection Update close Stream Errored (conflict)
Correção: Reinciar a zpro e ler novamente o qrCode


stream errored out e Connection Update close Stream Errored (timeout)
Correção:  algo bloqueando a conexão até o whatsapp (firewall) ou ele mesmo


error 5
erro webhook


error 11
webhook do n8n


ASAAS: Request failed with status code 401
Problema com o Token... refazer o Token asaas


prekey bundle
Esse erro é dowload da midia da baileys em loop.
Deve desmarcar na configurações gerais PERSISTIR DOWLOAD DE MIDIAS(BAILEYS)
E dá um restart no pm2




Otimização De VPS

############################################
# ???? OTIMIZAÇÃO DE VPS — ROTINAS DIÁRIAS E PREVENTIVAS
############################################

# ✔️ 1.- Remove recursos Docker não utilizados há mais de 24 horas
0 1 * * * timeout 20m docker system prune -af --filter "until=24h" >/dev/null 2>&1

# ✔️ 2. Reinicia containers que continuam unhealthy
30 1 * * * docker ps -q --filter "health=unhealthy" | xargs -r docker restart >/dev/null 2>&1

# ✔️ 3. Limpeza de arquivos antigos (mais de 15 dias)
# 10 1 * * * find /home/deployzdg/zpro.io/backend/public/ -type f -mtime +15 -delete

# ✔️ 4. Backup (arquivo op1)
# 0 3 * * * pg_dump -U zpro -h localhost postgres > /home/deployzdg/backups/db-$(date +\%F).sql

# ✔️ 5. Backup (executa dump + rsync externo op2)
0 3 * * * /root/backups/backup_postgres.sh >> /root/backups/backup.log 2>&1

# ✔️ 6. Renovação automática do SSL
0 2 1 * * certbot renew --quiet

# ✔️ 7. validação nginx
5 2 1 * * nginx -t && systemctl reload nginx

# ✔️ 8. Liberação de cache de memória
# 10 1 1 * * sync && echo 3 > /proc/sys/vm/drop_caches

# ✔️ 9. atualizar vps
15 2 1 * * apt update

# ✔️ 10. limpeza de logs antigos do sistema
20 2 1 * * journalctl --vacuum-time=7d

# ✔️ 11. limpeza de cache do sistema
25 2 1 * * find /home/deployzdg/.cache -mtime +7 -delete
30 2 1 * * find /home/deployzdg/.npm -mtime +7 -delete

---- usuario deployzdg

# ✔️ 1. Reinício automático dos serviços PM2 (5h10 e 19h10)
10 5 * * * pm2 stop all; pm2 start all
10 19 * * * pm2 stop all; pm2 start all


13. Altera o uso padrão de memória pm2 ( problemas de lentidão )
# Start o back usando mais memória v8 e colocando um restart a cada  3 horas no back
2. exemplo, se o servidor tem 32gb de ram, ele pode usar até 14gb...
pm2 start dist/server.js --name zpro-backend --node-args="--max-old-space-size=14000"
1. se tiver 16gb, pode usar ate 7gb...
pm2 start dist/server.js --name zpro-backend --node-args="--max-old-space-size=7000




Limite de Conexões nGinx

# acompanha conexoes socks

tail -f /var/log/nginx/error.log
watch -n1 "ss -s"

o problema:

768 worker_connections are not enough

Isso significa que o NGINX atingiu o limite máximo de conexões simultâneas por worker.
Como você está usando Socket.IO / WebSocket, cada cliente mantém uma conexão aberta, então o limite padrão estoura rápido.

Isso explica perfeitamente:

  • erros CORS falsos

  • erros 500

  • instabilidade

  • algumas VPS funcionando e outras não (dependendo do tráfego)


???? Correção

Edite:

Bash
sudo nano /etc/nginx/nginx.conf

Procure:

Nginx
events {
worker_connections 768;
}

Troque para algo mais alto:

Nginx
events {
worker_connections 8192;
multi_accept on;
}

???? Ajuste adicional recomendado (produção)

worker_rlimit_nofile 200000; no topo

Ainda no mesmo arquivo, dentro do bloco http {}:

Nginx
http {

keepalive_timeout 65;

}

???? Ajustar limite de arquivos do sistema

Execute:

Bash
ulimit -n

Se retornar algo baixo (ex: 1024), aumente.

Edite:

Bash
sudo nano /etc/security/limits.conf

Adicione no final:

* soft nofile 200000
* hard nofile 200000

???? Reinicie NGINX

Bash
sudo nginx -t
sudo systemctl restart nginx

???? Capacidade depois do ajuste

Se sua VPS tem:

worker_processes auto
worker_connections 8192

E 16 workers (como seu log mostrou), o servidor suporta aproximadamente:

8192 x 16 ≈ 131k conexões simultâneas

Mais que suficiente para Socket.IO + CRM + Webhooks.


???? Dica importante para Socket.IO

Sempre use:

Nginx
worker_processes auto;

no topo do nginx.conf.


Conclusão:
Seu problema não era CORS nem Node, era simplesmente limite de conexões do NGINX estourando.

Exemplo como seria correto

worker_rlimit_nofile 200000;

events {
worker_connections 8192;
multi_accept on;
}

http {

keepalive_timeout 65;

}


Instruções Práticas

# AULAS

Assista a aula 4. Configurações técnicas > Acessando o Banco de Dados

Assista a aula 4. Configurações técnicas > Gerando Logs

Assista a aula 6. Conexões e Integrações > Conectar API não oficial: Wpp Web + Proxy

Verifica propagação de DNS:
https://dnschecker.org/#A/sub.dominio.com.br

Downtime WhatsApp:
https://downdetector.com.br/fora-do-ar/whatsapp/


# LIB

Lib não é a zpro. A zpro apenas integra as libs que são disponíveis para se conectar ao whatsapp.

Libs diferentes oferecem tecnologias diferentes e comportamentos também.

Se estiver recebendo comportamento indesejado, troque a versão ou tecnologia.


# Atualizar Baileys versão alternativa

# https://github.com/wppconnect-team/wa-version/tree/main/html

sudo su deployzdg
cd /home/deployzdg/zpro.io/backend/
nano .env
# adicione a flag no final do arquivo, salve e feche
BAILEYS_VERSION=2.3000.1026933896
# após salvar e fechar o documento reinicie a zpro
pm2 stop all
pm2 flush
pm2 start all
pm2 log
# faça um novo teste
----- ou remova a versão alternativa e... ------
sudo su deployzdg
cd /home/deployzdg/zpro.io/backend/
pm2 stop all
npm r @whiskeysockets/baileys
npm i @whiskeysockets/baileys
pm2 flush
pm2 start all
pm2 log
----- ou ainda deinfiindo especifica e... ------
No arquivo /home/deployzdg/zpro.io/backend/package.json, altere a versão da baileys da seguinte maneira:
"@whiskeysockets/baileys": "github:pedroherpeto/WSocketBaileys",
Após salvar e fecha-lo, rode a instalação da nova versão
sudo su deployzdg
cd home/deployzdg/zpro.io/backend/
npm i -f
pm2 stop all
pm2 flush
pm2 start all
pm2 log


# Atualizar wweb.js

# https://github.com/pedroslopez/whatsapp-web.js/releases

sudo su deployzdg
cd /home/deployzdg/zpro.io/backend/
pm2 stop all
rm -rf .wwebjs_auth
rm -rf .wwebjs_cache
npm r whatsapp-web.js
npm i whatsapp-web.js
pm2 flush
pm2 start all
pm2 log


# WuZapi / Meow

# Como Fazer

https://zpro.passaportezdg.com.br/central-do-assinante/recursos-tecnicos/ferramentas-terceiras/instalacao-wuzapi-meow

# Após instalar, reforça que foi atualizada
go get -u go.mau.fi/whatsmeow@latest
go mod tidy
go build .
# reiniciar a meow


# Evolution API

O endereço url para baixar: https://github.com/EvolutionAPI/evolution-api

https://www.youtube.com/watch?v=ibXm0HHbhhs

- não orientamos esta instalação pois é uma lib externa e fica fora do escopo de suporte à plataforma zpró.


# WEBCHAT

Apenas repassando..

> Instalar e configurar webchat através do autoinstalador

> Você ativa a integração no menu Configurações

> Em seguida cria um novo canal no menu Canais para webchat e conecta

> Retorna ao menu Configurações e gera um app

Agora, pela parte da zpró desative temporariamente firewall
sudo ufw disable
sudo su deployzdg
cd /home/deployzdg/zpro.io/backend
nano .env
# adicione a flag abaixo ao documento .env:
SECURE_URL=*
# confirme também se está definido corretamente porta e dominio do chat no mesmo arquivo:
WSS_URL=https://webchat.seusiteaqui.com.br
WSS_PORT=NUMERO_DA_PORTA
# salve o documento, feche e reinicie o sistema
pm2 stop all
pm2 flush
pm2 start all
# faça um novo teste


# Integração ZAPI ou integração UAzapi

Apenas revisando...

url
https://api.z-api.io

Chave global
Criou dentro segurança

Depois criou uma instancia dentro da Zapi

No zpro criou o canal e incluiu o id e o token da instancia da Zapi.

Se sim então refaça o token.

Irei mandar uma live do Pedrinho que é bem completa e pode ajudar
https://youtube.com/live/YPqliPPUPfs?feature=share


# Definir timezone VPS

timedatectl list-timezones | grep Sao_Paulo
sudo timedatectl set-timezone America/Sao_Paulo


# DEFINIR HORÁRIO CONTAINER

# liste os containers para capturar o ID dele
docker ps -a

# Ver horário Postgres
docker exec ID date

# Para alterar a data Postgres
docker exec CONTAINER ID ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

------------------ ou -----------
# Como root
docker ps
# pega o docker Postgress
docker exec -it  psql -U  SET timezone = 'America/Sao_Paulo';
exit
docker restart 


# Iniciar z-pro no pm2 list

sudo su deployzdg
cd /home/deployzdg/zpro.io/backend
pm2 start dist/server.js --name zpro-backend
cd /home/deployzdg/zpro.io/frontend
pm2 start server.js --name zpro-frontend
pm2 save
pm2 startup
pm2 log


# gmail smtp configuração

echo "=== SERVER INFO + Gmail SMTP CHECK ==="; echo "HOSTNAME: $(hostname)"; echo "DATE: $(date -u)"; echo ""; echo "PUBLIC IP:"; curl -s ifconfig.me || curl -s httpbin.org/ip; echo ""; echo "ORG / ASN:"; curl -s https://ipinfo.io/org || curl -s https://ipapi.co/org; echo ""; echo "WHOIS (resumo):"; whois $(curl -s ifconfig.me) 2>/dev/null | egrep -i "orgname|org-name|netname|netrange|origin|aut-num|descr" | sed '/^$/d' | sed -n '1,6p'; echo ""; echo "PTR / Reverse DNS:"; dig +short -x $(curl -s ifconfig.me) || host $(curl -s ifconfig.me); echo ""; echo "Distro / Kernel:"; (lsb_release -a 2>/dev/null || cat /etc/os-release) 2>/dev/null | sed -n '1,4p'; uname -sr; echo ""; echo "Virtualization:"; systemd-detect-virt || echo "none detected"; echo ""; echo "Hardware vendor:"; sudo cat /sys/class/dmi/id/sys_vendor 2>/dev/null || sudo dmidecode -s system-manufacturer 2>/dev/null || echo "unknown"; echo ""; echo "Gmail SMTP ports check:"; for p in 465 587; do timeout 5 bash -c "echo > /dev/tcp/smtp.gmail.com/$p" 2>/dev/null && echo "smtp.gmail.com:$p -> open" || echo "smtp.gmail.com:$p -> closed/blocked"; done; echo "=== END ==="


# Transferência de pastas e arquivos entre servidores

# gera um arquivo zipado da pasta local
tar -czf node_modules.tar.gz node_modules

# transfere para outro servidor
scp node_modules.tar.gz root@IP-OUTRO-SERVIDOR:/home/deployzdg/zpro.io/frontend/

# extrai arquivos
tar -xzf node_modules.tar.gz


# Limpeza VPS

# lista espaço
df -h

# limpa logs antigos do sistema
journalctl --vacuum-time=7d

# cache
apt clean

# cache pacotes
apt autoremove -y

# cache npm
npm cache clean --force

##-- Docker

# lista 20 maiores arquivos da VPS
sudo du -ah / 2>/dev/null | sort -hr | head -20

# lista 20 maiores arquivos no docker . busca de logs
sudo du -ah / 2>/dev/null | sort -hr | head -20

# Ver o arquivo de log desse container
ls -lh /var/lib/docker/containers/825d143a1617d442bcd574463651d40d84b357af383b8729c508984488c5e913/

# Confirmar tamanho do log
du -sh /var/lib/docker/containers/825d143a*/825d143a*-json.log

# Zerar o log (sem parar container)
truncate -s 0 /var/lib/docker/containers/825d143a*/825d143a*-json.log

# Fazer isso pra todos (rápido)
find /var/lib/docker/containers/ -name "*-json.log" -exec truncate -s 0 {} \;

# Conferir novamente
du -sh /var/lib/docker/containers/*

# Extra (identificar o container)
docker ps -a --no-trunc | grep 825d143a

#v???? 6. Limpar sem derrubar container
sudo truncate -s 0 arquivo.log

# ⚠️ 7. Ajusta para não ocorrer mais no Docker (/etc/docker/daemon.json):
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

# Depois:
sudo systemctl restart docker

# encontra arquivos grandes fora do padrao
find / -xdev -type f -size +500M 2>/dev/null | grep -E "docker|log"


# Limpar cache de registros npm ( se n estiver em cron )

rm -rf ~/.npm
npm cache clean --force
npm cache verify


# Verifica tabelas da base de dados

SELECT
    n.nspname AS schema,
    c.relname AS tabela,
    pg_size_pretty(pg_total_relation_size(c.oid)) AS tamanho,
    ROUND(pg_total_relation_size(c.oid) / 1024.0 / 1024 / 1024, 2) AS gb
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r'
  AND n.nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(c.oid) DESC;




Personalização do Layout

1. Esconder Menu Restrito Para Usuários

src/components/layout/sidebar.tsx

??



2. Mostrar apenas canais do supervisor

src/app/(dashboard)/sessoes/page.tsx

  const loadChannels = useCallback(async () => {
    try {
      const { data } = await fetchWhatsapps();

let list = Array.isArray(data) ? data : [];

if (user?.profile === 'super' && user?.phone) {
list = list.filter((ch) => ch.name === user.phone);
}

      setChannels(list);
      // Self-healing: gupshup/dialog360 sem profilePic ou com nome autogerado
      // → dispara enrich no backend (best-effort, não bloqueia).
      const stale = list.filter(
        (c: any) =>
          (c.type === "gupshup" || c.type === "dialog360") &&
          (!c.profilePic || /^(Gupshup|Dialog360)\s/.test(c.name || ""))
      );
      for (const c of stale) {
        api
          .post(`/bsp/enrich-profile/${c.id}`)
          .catch(() => {
            // silencioso — boot scan no backend cobre o caso de falha
          });
      }
    } catch {
      toast.error(t("errorLoadingChannels"));
    } finally {
      setLoading(false);
    }
  }, [t]);





Comandos Base de Dados

..


Novidade!

Precisando do Suporte ou Buscando Consultoria?

Entre em contato pelo whats: https://wa.me/5547992434350

Núcleo de Negócios WEB
Sua Empresa Grande Na Internet!

uptime
https://www.nucleodenegociosweb.com.br/servicos/atendimento-whatsapp/crm-para-whatsapp/