# 📦 Guia de Instalação wazmeow Private Guia completo de instalação do wazmeow Private em diferentes sistemas operacionais. --- ## 🐧 Linux (Ubuntu/Debian/CentOS/Fedora/RHEL) ### Instalação Rápida ```bash # Baixar última versão (AMD64) wget https://github.com/conversalabs/wazmeow/releases/latest/download/wazmeow-private-linux-amd64.tar.gz # Extrair tar -xzf wazmeow-private-linux-amd64.tar.gz cd linux-amd64 # Verificar conteúdo ls -la # Você verá: # - wazmeow (binário executável) # - static/ (assets web completos) # - .env.sample (template de configuração) # - README.md, LICENSE, etc. ``` ### Configuração ```bash # Copiar template de configuração cp .env.sample .env # Editar configuração nano .env # ou vim .env ``` **Configurações essenciais no `.env`**: ```bash # Banco de Dados (escolha uma opção): # SQLite (padrão, zero configuração, recomendado para desenvolvimento) DATABASE_URL=sqlite:./data/wazmeow.db # PostgreSQL (recomendado para produção) DATABASE_URL=postgresql://user:password@localhost:5432/wazmeow?sslmode=require # MySQL/MariaDB DATABASE_URL=mysql://user:password@localhost:3306/wazmeow # Token Admin (para gerenciar usuários via API) WAZMEOW_ADMIN_TOKEN=seu-token-secreto-aqui # License Key LICENSE_KEY=WAZMEOW-BASIC-C231653DD4F34B20 # URL Base (para webhooks) WAZMEOW_ADDRESS=https://api.seudominio.com # Porta WAZMEOW_PORT=8080 ``` ### Executar ```bash # Tornar executável (se necessário) chmod +x wazmeow # Testar execução ./wazmeow --help # Executar servidor ./wazmeow --address=0.0.0.0 --port=8080 # Acessar interface web # http://localhost:8080 ``` ### Instalação como Serviço Systemd (Produção) ```bash # 1. Copiar binário para /usr/local/bin sudo cp wazmeow /usr/local/bin/ sudo chmod +x /usr/local/bin/wazmeow # 2. Criar diretório de instalação sudo mkdir -p /opt/wazmeow sudo cp -r static/ /opt/wazmeow/ sudo cp .env /opt/wazmeow/ # 3. Criar diretórios de dados e logs sudo mkdir -p /opt/wazmeow/data sudo mkdir -p /opt/wazmeow/logs sudo mkdir -p /opt/wazmeow/buffer # 4. Copiar arquivo de serviço sudo cp wazmeow.service /etc/systemd/system/ # 5. Recarregar systemd sudo systemctl daemon-reload # 6. Habilitar e iniciar serviço sudo systemctl enable wazmeow sudo systemctl start wazmeow # 7. Verificar status sudo systemctl status wazmeow # 8. Ver logs em tempo real sudo journalctl -u wazmeow -f # Comandos úteis: # Parar: sudo systemctl stop wazmeow # Reiniciar: sudo systemctl restart wazmeow # Ver logs: sudo journalctl -u wazmeow -n 100 ``` --- ## 🪟 Windows (PowerShell) ### Instalação Rápida ```powershell # Baixar última versão Invoke-WebRequest -Uri "https://github.com/conversalabs/wazmeow/releases/latest/download/wazmeow-private-windows-amd64.zip" -OutFile wazmeow.zip # Extrair Expand-Archive -Path wazmeow.zip -DestinationPath . # Entrar no diretório cd windows-amd64 # Verificar conteúdo dir # Você verá: # - wazmeow-private-windows-amd64.exe # - static\ # - .env.sample # - README.md, LICENSE, etc. ``` ### Configuração ```powershell # Copiar template de configuração Copy-Item .env.sample .env # Editar com Notepad notepad .env ``` **Configurações essenciais no `.env` (Windows)**: ```bash # Banco de Dados (caminhos Windows): # SQLite (padrão, recomendado) DATABASE_URL=sqlite:C:/wazmeow/data/db.sqlite # PostgreSQL DATABASE_URL=postgresql://user:pass@localhost:5432/wazmeow # MySQL DATABASE_URL=mysql://user:pass@localhost:3306/wazmeow # Token Admin WAZMEOW_ADMIN_TOKEN=seu-token-secreto # License Key LICENSE_KEY=WAZMEOW-BASIC-C231653DD4F34B20 # Porta WAZMEOW_PORT=8080 ``` ### Executar ```powershell # Executar servidor .\wazmeow-private-windows-amd64.exe --help .\wazmeow-private-windows-amd64.exe --address=0.0.0.0 --port=8080 # Acessar interface web # http://localhost:8080 ``` ### Instalação como Serviço Windows (NSSM) **NSSM (Non-Sucking Service Manager)** permite rodar wazmeow como serviço Windows. ```powershell # 1. Baixar NSSM # https://nssm.cc/download # Extrair nssm.exe para C:\Windows\System32\ # 2. Mover wazmeow para C:\wazmeow New-Item -Path "C:\wazmeow" -ItemType Directory -Force Copy-Item -Path ".\wazmeow-private-windows-amd64.exe" -Destination "C:\wazmeow\" Copy-Item -Path ".\static" -Destination "C:\wazmeow\" -Recurse Copy-Item -Path ".\.env" -Destination "C:\wazmeow\" # 3. Instalar serviço com NSSM nssm install wazmeow "C:\wazmeow\wazmeow-private-windows-amd64.exe" # 4. Configurar serviço nssm set wazmeow AppDirectory "C:\wazmeow" nssm set wazmeow AppParameters "--address=0.0.0.0 --port=8080 --logtype=json" nssm set wazmeow DisplayName "wazmeow WhatsApp API" nssm set wazmeow Description "WhatsApp Business API Gateway" nssm set wazmeow Start SERVICE_AUTO_START nssm set wazmeow ObjectName LocalSystem # 5. Configurar logs nssm set wazmeow AppStdout "C:\wazmeow\logs\stdout.log" nssm set wazmeow AppStderr "C:\wazmeow\logs\stderr.log" # 6. Iniciar serviço nssm start wazmeow # 7. Verificar status nssm status wazmeow sc query wazmeow # Comandos úteis: # Parar: nssm stop wazmeow # Reiniciar: nssm restart wazmeow # Remover: nssm remove wazmeow confirm # Editar: nssm edit wazmeow ``` ### Alternativa: Task Scheduler (sem NSSM) ```powershell # Criar tarefa agendada que inicia com o Windows $action = New-ScheduledTaskAction -Execute "C:\wazmeow\wazmeow-private-windows-amd64.exe" -Argument "--address=0.0.0.0 --port=8080" -WorkingDirectory "C:\wazmeow" $trigger = New-ScheduledTaskTrigger -AtStartup $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable Register-ScheduledTask -TaskName "wazmeow" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "wazmeow WhatsApp API Gateway" # Iniciar manualmente Start-ScheduledTask -TaskName "wazmeow" # Ver status Get-ScheduledTask -TaskName "wazmeow" ``` --- ## 🍎 macOS (Intel e Apple Silicon) ### Download **macOS Intel (x86_64)**: ```bash curl -LO https://github.com/conversalabs/wazmeow/releases/latest/download/wazmeow-private-darwin-amd64.tar.gz tar -xzf wazmeow-private-darwin-amd64.tar.gz cd darwin-amd64 ``` **macOS Apple Silicon (M1/M2/M3)**: ```bash curl -LO https://github.com/conversalabs/wazmeow/releases/latest/download/wazmeow-private-darwin-arm64.tar.gz tar -xzf wazmeow-private-darwin-arm64.tar.gz cd darwin-arm64 ``` ### Remover Quarentena (Gatekeeper) ```bash # Permitir execução de aplicativo de desenvolvedor não identificado xattr -d com.apple.quarantine wazmeow chmod +x wazmeow # Verificar ./wazmeow --version ``` ### Configuração ```bash # Copiar template cp .env.sample .env # Editar vim .env # ou nano .env, ou code .env ``` **Configurações essenciais no `.env` (macOS)**: ```bash # Banco de Dados (caminhos macOS): # SQLite (padrão) DATABASE_URL=sqlite:./data/wazmeow.db # ou em ~/Library/Application Support/ DATABASE_URL=sqlite:$HOME/Library/Application\ Support/wazmeow/db.sqlite # PostgreSQL (via Homebrew: brew install postgresql) DATABASE_URL=postgresql://user:pass@localhost:5432/wazmeow # MySQL (via Homebrew: brew install mysql) DATABASE_URL=mysql://user:pass@localhost:3306/wazmeow # Token Admin WAZMEOW_ADMIN_TOKEN=seu-token-secreto # License Key LICENSE_KEY=WAZMEOW-BASIC-C231653DD4F34B20 # Porta WAZMEOW_PORT=8080 ``` ### Executar ```bash ./wazmeow --address=0.0.0.0 --port=8080 # Acessar: http://localhost:8080 ``` ### Instalação como LaunchDaemon (Produção) ```bash # 1. Copiar binário para /usr/local/bin sudo cp wazmeow /usr/local/bin/ sudo chmod +x /usr/local/bin/wazmeow # 2. Criar diretório de instalação sudo mkdir -p /opt/wazmeow sudo cp -r static/ /opt/wazmeow/ sudo cp .env /opt/wazmeow/ # 3. Criar diretórios necessários sudo mkdir -p /opt/wazmeow/data sudo mkdir -p /opt/wazmeow/logs sudo mkdir -p /opt/wazmeow/buffer # 4. Criar arquivo plist (copiar do pacote) sudo cp com.wazmeow.plist /Library/LaunchDaemons/ # Ou criar manualmente: sudo tee /Library/LaunchDaemons/com.wazmeow.plist << EOF Label com.wazmeow ProgramArguments /usr/local/bin/wazmeow --address=0.0.0.0 --port=8080 --logtype=json WorkingDirectory /opt/wazmeow RunAtLoad KeepAlive StandardOutPath /opt/wazmeow/logs/stdout.log StandardErrorPath /opt/wazmeow/logs/stderr.log EnvironmentVariables PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin EOF # 5. Ajustar permissões sudo chown root:wheel /Library/LaunchDaemons/com.wazmeow.plist sudo chmod 644 /Library/LaunchDaemons/com.wazmeow.plist # 6. Carregar e iniciar serviço sudo launchctl load /Library/LaunchDaemons/com.wazmeow.plist sudo launchctl start com.wazmeow # 7. Verificar status sudo launchctl list | grep wazmeow # Comandos úteis: # Parar: sudo launchctl stop com.wazmeow # Descarregar: sudo launchctl unload /Library/LaunchDaemons/com.wazmeow.plist # Ver logs: tail -f /opt/wazmeow/logs/stdout.log ``` --- ## 🐳 Docker (Todas Plataformas) ### Docker Hub ```bash # Usar versão específica docker pull ghcr.io/conversalabs/wazmeow:v1.15.0 docker run -d -p 8080:8080 \ -e DATABASE_URL=sqlite:/app/data/db.sqlite \ -v wazmeow-data:/app/data \ --name wazmeow \ ghcr.io/conversalabs/wazmeow:v1.15.0 # Ou usar latest docker pull ghcr.io/conversalabs/wazmeow:latest docker run -d -p 8080:8080 \ -v wazmeow-data:/app/data \ ghcr.io/conversalabs/wazmeow:latest ``` ### Docker Compose (Recomendado) ```bash # Baixar docker-compose.yml do repositório curl -LO https://raw.githubusercontent.com/conversalabs/wazmeow/main/docker-compose.yml # Editar configurações nano docker-compose.yml # Iniciar docker-compose up -d # Ver logs docker-compose logs -f # Parar docker-compose down ``` **Exemplo `docker-compose.yml`**: ```yaml version: '3.8' services: wazmeow: image: ghcr.io/conversalabs/wazmeow:latest container_name: wazmeow ports: - "8080:8080" environment: - DATABASE_URL=postgresql://wazmeow:senha@postgres:5432/wazmeow - WAZMEOW_ADMIN_TOKEN=seu-token-secreto - LICENSE_KEY=WAZMEOW-BASIC-C231653DD4F34B20 - TZ=America/Sao_Paulo volumes: - wazmeow-data:/app/data - wazmeow-logs:/app/logs restart: unless-stopped depends_on: - postgres postgres: image: postgres:15-alpine container_name: wazmeow-postgres environment: - POSTGRES_DB=wazmeow - POSTGRES_USER=wazmeow - POSTGRES_PASSWORD=senha volumes: - postgres-data:/var/lib/postgresql/data restart: unless-stopped volumes: wazmeow-data: wazmeow-logs: postgres-data: ``` --- ## ❓ Troubleshooting ### "Permission Denied" ao executar binário **Linux/macOS**: ```bash chmod +x wazmeow ``` **macOS (quarentena)**: ```bash xattr -d com.apple.quarantine wazmeow ``` ### "Failed to connect to database" ```bash # Verificar DATABASE_URL no .env cat .env | grep DATABASE_URL # SQLite (não precisa de servidor, cria automaticamente): DATABASE_URL=sqlite:./data/db.sqlite # PostgreSQL/MySQL precisam estar rodando # Testar conexão: psql $DATABASE_URL # PostgreSQL mysql --uri=$DATABASE_URL # MySQL # Verificar se porta está acessível: telnet localhost 5432 # PostgreSQL telnet localhost 3306 # MySQL ``` ### Porta 8080 já em uso ```bash # Verificar o que está usando a porta # Linux: sudo netstat -tlnp | grep 8080 sudo lsof -i :8080 # macOS: lsof -i :8080 # Windows: netstat -ano | findstr :8080 # Mudar porta via flag: ./wazmeow --port=8090 # Ou via ENV: WAZMEOW_PORT=8090 ./wazmeow ``` ### Static files não encontrados ```bash # Verificar que static/ está no diretório correto ls -la static/ # Se executar de outro diretório, usar caminho absoluto ou # cd para o diretório do binário: cd /caminho/para/wazmeow-linux-amd64 ./wazmeow # Ou setar working directory no systemd/launchd ``` ### "Database connection pool exhausted" ```bash # Aumentar pool de conexões (PostgreSQL/MySQL) # Editar .env ou ENV vars: # DB_MAX_OPEN_CONNS=100 # DB_MAX_IDLE_CONNS=10 # Ou usar SQLite para instâncias pequenas DATABASE_URL=sqlite:./data/db.sqlite ``` ### Logs não aparecem ```bash # Verificar nível de log # .env ou flags: WAZMEOW_LOG_LEVEL=debug # ou info, warn, error ./wazmeow --loglevel=debug # Verificar tipo de log (console vs json) LOG_TYPE=console LOG_COLOR=true # Ver logs do serviço: # Linux: sudo journalctl -u wazmeow -f # macOS: tail -f /opt/wazmeow/logs/stdout.log # Windows: type C:\wazmeow\logs\stdout.log ``` ### WhatsApp não conecta (QR code não aparece) ```bash # Verificar logs do WhatsApp WAZMEOW_DEBUG=DEBUG ./wazmeow # Verificar proxy (se atrás de firewall) # .env: WA_PROXY=http://proxy.empresa.com:8080 # Limpar sessão antiga e tentar novamente # DELETE FROM devices WHERE user_id = 'SEU_USER_ID'; ``` --- ## 📚 Recursos Adicionais - **Documentação Completa**: [README.md](../README.md) - **Configuração Detalhada**: [CONFIGURATION.md](./CONFIGURATION.md) - **API Swagger**: `http://localhost:8080/api/docs` - **Changelog**: [CHANGELOG.md](../CHANGELOG.md) - **Suporte**: suporte@conversalabs.com.br - **GitHub Issues**: https://github.com/conversalabs/wazmeow/issues --- ## 🆘 Suporte Se encontrar problemas: 1. Consulte a seção **Troubleshooting** acima 2. Veja logs detalhados com `--loglevel=debug` 3. Verifique [Issues no GitHub](https://github.com/conversalabs/wazmeow/issues) 4. Entre em contato: suporte@conversalabs.com.br --- **Versão do Guia**: 1.0 **Última Atualização**: 2025-11-07