Este guia mostra como fazer o deploy da aplicação WhatsApp API SaaS em um servidor VPS (Ubuntu/Debian).
ssh root@seu-ip-do-servidor
# ou
ssh usuario@seu-ip-do-servidor
sudo apt update && sudo apt upgrade -y
# Instalar Node.js 18.x
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# Verificar instalação
node --version
npm --version
sudo npm install -g pm2
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo apt install certbot python3-certbot-nginx -y
# Criar diretório para a aplicação
sudo mkdir -p /var/www/whatsapp-api
sudo chown -R $USER:$USER /var/www/whatsapp-api
# Navegar para o diretório
cd /var/www/whatsapp-api
Opção A: Via Git (Recomendado)
# Instalar Git
sudo apt install git -y
# Clonar repositório (se tiver)
git clone seu-repositorio.git .
# Ou fazer upload via SCP do seu computador local:
# scp -r /caminho/local/projeto/* usuario@servidor:/var/www/whatsapp-api/
Opção B: Via SCP (do seu computador local)
# No seu computador local
scp -r /caminho/do/projeto/* root@seu-ip:/var/www/whatsapp-api/
cd /var/www/whatsapp-api
npm install --production
# Criar arquivo .env
nano .env
Adicione as seguintes variáveis:
# Porta da aplicação (use uma porta interna, Nginx fará proxy)
PORT=3000
# URL base do webhook (seu domínio)
BASE_WEBHOOK_URL=https://seu-dominio.com/webhook
# Chave secreta JWT (GERE UMA CHAVE FORTE)
JWT_SECRET=SUA_CHAVE_SECRETA_AQUI_GERE_UMA_FORTE
# Chave de admin
ADMIN_API_KEY=SUA_CHAVE_ADMIN_FORTE_AQUI
# API Key global (opcional, para compatibilidade)
API_KEY=SUA_API_KEY_GLOBAL
# Configurações de sessão
SESSIONS_PATH=./sessions
SET_MESSAGES_AS_SEEN=TRUE
MAX_ATTACHMENT_SIZE=10000000
# Swagger
ENABLE_SWAGGER_ENDPOINT=TRUE
# Recuperação de sessões
RECOVER_SESSIONS=TRUE
# Chrome/Chromium (se necessário)
# CHROME_BIN=/usr/bin/chromium-browser
Gerar chaves seguras:
# Gerar JWT_SECRET
openssl rand -base64 32
# Gerar ADMIN_API_KEY
openssl rand -base64 24
# Instalar dependências do Chromium
sudo apt install -y \
chromium-browser \
chromium-chromedriver \
fonts-liberation \
libappindicator3-1 \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libcups2 \
libdbus-1-3 \
libdrm2 \
libgbm1 \
libgtk-3-0 \
libnspr4 \
libnss3 \
libx11-xcb1 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
xdg-utils
# Adicionar ao .env
echo "CHROME_BIN=/usr/bin/chromium-browser" >> .env
# Iniciar aplicação com PM2
pm2 start server.js --name whatsapp-api
# Salvar configuração do PM2
pm2 save
# Configurar PM2 para iniciar no boot
pm2 startup
# Execute o comando que aparecer (algo como: sudo env PATH=...)
# Criar configuração do Nginx
sudo nano /etc/nginx/sites-available/whatsapp-api
Adicione:
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
# Tamanho máximo de upload
client_max_body_size 50M;
# Proxy para aplicação Node.js
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# Timeouts para WebSocket (se necessário)
proxy_read_timeout 86400;
}
# Logs
access_log /var/log/nginx/whatsapp-api-access.log;
error_log /var/log/nginx/whatsapp-api-error.log;
}
Ativar configuração:
# Criar link simbólico
sudo ln -s /etc/nginx/sites-available/whatsapp-api /etc/nginx/sites-enabled/
# Remover configuração padrão (opcional)
sudo rm /etc/nginx/sites-enabled/default
# Testar configuração
sudo nginx -t
# Reiniciar Nginx
sudo systemctl restart nginx
# Obter certificado SSL
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
# Renovação automática (já configurado automaticamente)
sudo certbot renew --dry-run
# Instalar UFW (se não estiver instalado)
sudo apt install ufw -y
# Permitir SSH
sudo ufw allow 22/tcp
# Permitir HTTP e HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Ativar firewall
sudo ufw enable
# Verificar status
sudo ufw status
# Criar diretório de sessões
mkdir -p /var/www/whatsapp-api/sessions
chmod 755 /var/www/whatsapp-api/sessions
# Criar diretório de logs (se necessário)
mkdir -p /var/www/whatsapp-api/logs
# Verificar status do PM2
pm2 status
# Ver logs
pm2 logs whatsapp-api
# Verificar Nginx
sudo systemctl status nginx
# Testar aplicação
curl http://localhost:3000/ping
# Reiniciar aplicação
pm2 restart whatsapp-api
# Parar aplicação
pm2 stop whatsapp-api
# Ver logs em tempo real
pm2 logs whatsapp-api
# Monitorar recursos
pm2 monit
# Reiniciar Nginx
sudo systemctl restart nginx
# Ver logs do Nginx
sudo tail -f /var/log/nginx/whatsapp-api-error.log
# Criar script de backup
nano /usr/local/bin/backup-whatsapp-api.sh
Adicione:
#!/bin/bash
BACKUP_DIR="/backup/whatsapp-api"
DATE=$(date +%Y%m%d_%H%M%S)
SOURCE_DIR="/var/www/whatsapp-api"
mkdir -p $BACKUP_DIR
# Backup do banco de dados
cp $SOURCE_DIR/database.db $BACKUP_DIR/database_$DATE.db
# Backup das sessões
tar -czf $BACKUP_DIR/sessions_$DATE.tar.gz $SOURCE_DIR/sessions/
# Manter apenas últimos 7 dias
find $BACKUP_DIR -type f -mtime +7 -delete
echo "Backup concluído: $DATE"
Tornar executável:
chmod +x /usr/local/bin/backup-whatsapp-api.sh
# Adicionar ao crontab (backup diário às 2h)
crontab -e
# Adicionar linha:
0 2 * * * /usr/local/bin/backup-whatsapp-api.sh
# Instalar PM2 monitoring (opcional)
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
# Verificar logs
pm2 logs whatsapp-api --lines 50
# Verificar se a porta está em uso
sudo netstat -tulpn | grep 3000
# Verificar permissões
ls -la /var/www/whatsapp-api
# Verificar se Chromium está instalado
which chromium-browser
# Testar Chromium
chromium-browser --version
# Verificar configuração
sudo nginx -t
# Ver logs de erro
sudo tail -f /var/log/nginx/error.log
# Verificar certificado
sudo certbot certificates
# Renovar manualmente
sudo certbot renew
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Sua aplicação WhatsApp API SaaS está no ar! Acesse via https://seu-dominio.com