# 📦 Guia de Instalação ZuckZapGo Private Guia completo de instalação do ZuckZapGo 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/guilhermejansen/zuckzapgo-private/releases/latest/download/zuckzapgo-private-linux-amd64.tar.gz # Extrair tar -xzf zuckzapgo-private-linux-amd64.tar.gz cd linux-amd64 # Verificar conteúdo ls -la # Você verá: # - zuckzapgo (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/zuckzapgo.db # PostgreSQL (recomendado para produção) DATABASE_URL=postgresql://user:password@localhost:5432/zuckzapgo?sslmode=require # MySQL/MariaDB DATABASE_URL=mysql://user:password@localhost:3306/zuckzapgo # Token Admin (para gerenciar usuários via API) ZUCKZAPGO_ADMIN_TOKEN=seu-token-secreto-aqui # License Key LICENSE_KEY=ZUCKZAPGO-BASIC-C231653DD4F34B20 # URL Base (para webhooks) ZUCKZAPGO_ADDRESS=https://api.seudominio.com # Porta ZUCKZAPGO_PORT=8080 ``` ### Executar ```bash # Tornar executável (se necessário) chmod +x zuckzapgo # Testar execução ./zuckzapgo --help # Executar servidor ./zuckzapgo --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 zuckzapgo /usr/local/bin/ sudo chmod +x /usr/local/bin/zuckzapgo # 2. Criar diretório de instalação sudo mkdir -p /opt/zuckzapgo sudo cp -r static/ /opt/zuckzapgo/ sudo cp .env /opt/zuckzapgo/ # 3. Criar diretórios de dados e logs sudo mkdir -p /opt/zuckzapgo/data sudo mkdir -p /opt/zuckzapgo/logs sudo mkdir -p /opt/zuckzapgo/buffer # 4. Copiar arquivo de serviço sudo cp zuckzapgo.service /etc/systemd/system/ # 5. Recarregar systemd sudo systemctl daemon-reload # 6. Habilitar e iniciar serviço sudo systemctl enable zuckzapgo sudo systemctl start zuckzapgo # 7. Verificar status sudo systemctl status zuckzapgo # 8. Ver logs em tempo real sudo journalctl -u zuckzapgo -f # Comandos úteis: # Parar: sudo systemctl stop zuckzapgo # Reiniciar: sudo systemctl restart zuckzapgo # Ver logs: sudo journalctl -u zuckzapgo -n 100 ``` --- ## 🪟 Windows (PowerShell) ### Instalação Rápida ```powershell # Baixar última versão Invoke-WebRequest -Uri "https://github.com/guilhermejansen/zuckzapgo-private/releases/latest/download/zuckzapgo-private-windows-amd64.zip" -OutFile zuckzapgo.zip # Extrair Expand-Archive -Path zuckzapgo.zip -DestinationPath . # Entrar no diretório cd windows-amd64 # Verificar conteúdo dir # Você verá: # - zuckzapgo-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:/zuckzapgo/data/db.sqlite # PostgreSQL DATABASE_URL=postgresql://user:pass@localhost:5432/zuckzapgo # MySQL DATABASE_URL=mysql://user:pass@localhost:3306/zuckzapgo # Token Admin ZUCKZAPGO_ADMIN_TOKEN=seu-token-secreto # License Key LICENSE_KEY=ZUCKZAPGO-BASIC-C231653DD4F34B20 # Porta ZUCKZAPGO_PORT=8080 ``` ### Executar ```powershell # Executar servidor .\zuckzapgo-private-windows-amd64.exe --help .\zuckzapgo-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 ZuckZapGo como serviço Windows. ```powershell # 1. Baixar NSSM # https://nssm.cc/download # Extrair nssm.exe para C:\Windows\System32\ # 2. Mover ZuckZapGo para C:\zuckzapgo New-Item -Path "C:\zuckzapgo" -ItemType Directory -Force Copy-Item -Path ".\zuckzapgo-private-windows-amd64.exe" -Destination "C:\zuckzapgo\" Copy-Item -Path ".\static" -Destination "C:\zuckzapgo\" -Recurse Copy-Item -Path ".\.env" -Destination "C:\zuckzapgo\" # 3. Instalar serviço com NSSM nssm install ZuckZapGo "C:\zuckzapgo\zuckzapgo-private-windows-amd64.exe" # 4. Configurar serviço nssm set ZuckZapGo AppDirectory "C:\zuckzapgo" nssm set ZuckZapGo AppParameters "--address=0.0.0.0 --port=8080 --logtype=json" nssm set ZuckZapGo DisplayName "ZuckZapGo WhatsApp API" nssm set ZuckZapGo Description "WhatsApp Business API Gateway" nssm set ZuckZapGo Start SERVICE_AUTO_START nssm set ZuckZapGo ObjectName LocalSystem # 5. Configurar logs nssm set ZuckZapGo AppStdout "C:\zuckzapgo\logs\stdout.log" nssm set ZuckZapGo AppStderr "C:\zuckzapgo\logs\stderr.log" # 6. Iniciar serviço nssm start ZuckZapGo # 7. Verificar status nssm status ZuckZapGo sc query ZuckZapGo # Comandos úteis: # Parar: nssm stop ZuckZapGo # Reiniciar: nssm restart ZuckZapGo # Remover: nssm remove ZuckZapGo confirm # Editar: nssm edit ZuckZapGo ``` ### Alternativa: Task Scheduler (sem NSSM) ```powershell # Criar tarefa agendada que inicia com o Windows $action = New-ScheduledTaskAction -Execute "C:\zuckzapgo\zuckzapgo-private-windows-amd64.exe" -Argument "--address=0.0.0.0 --port=8080" -WorkingDirectory "C:\zuckzapgo" $trigger = New-ScheduledTaskTrigger -AtStartup $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable Register-ScheduledTask -TaskName "ZuckZapGo" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "ZuckZapGo WhatsApp API Gateway" # Iniciar manualmente Start-ScheduledTask -TaskName "ZuckZapGo" # Ver status Get-ScheduledTask -TaskName "ZuckZapGo" ``` --- ## 🍎 macOS (Intel e Apple Silicon) ### Download **macOS Intel (x86_64)**: ```bash curl -LO https://github.com/guilhermejansen/zuckzapgo-private/releases/latest/download/zuckzapgo-private-darwin-amd64.tar.gz tar -xzf zuckzapgo-private-darwin-amd64.tar.gz cd darwin-amd64 ``` **macOS Apple Silicon (M1/M2/M3)**: ```bash curl -LO https://github.com/guilhermejansen/zuckzapgo-private/releases/latest/download/zuckzapgo-private-darwin-arm64.tar.gz tar -xzf zuckzapgo-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 zuckzapgo chmod +x zuckzapgo # Verificar ./zuckzapgo --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/zuckzapgo.db # ou em ~/Library/Application Support/ DATABASE_URL=sqlite:$HOME/Library/Application\ Support/zuckzapgo/db.sqlite # PostgreSQL (via Homebrew: brew install postgresql) DATABASE_URL=postgresql://user:pass@localhost:5432/zuckzapgo # MySQL (via Homebrew: brew install mysql) DATABASE_URL=mysql://user:pass@localhost:3306/zuckzapgo # Token Admin ZUCKZAPGO_ADMIN_TOKEN=seu-token-secreto # License Key LICENSE_KEY=ZUCKZAPGO-BASIC-C231653DD4F34B20 # Porta ZUCKZAPGO_PORT=8080 ``` ### Executar ```bash ./zuckzapgo --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 zuckzapgo /usr/local/bin/ sudo chmod +x /usr/local/bin/zuckzapgo # 2. Criar diretório de instalação sudo mkdir -p /opt/zuckzapgo sudo cp -r static/ /opt/zuckzapgo/ sudo cp .env /opt/zuckzapgo/ # 3. Criar diretórios necessários sudo mkdir -p /opt/zuckzapgo/data sudo mkdir -p /opt/zuckzapgo/logs sudo mkdir -p /opt/zuckzapgo/buffer # 4. Criar arquivo plist (copiar do pacote) sudo cp com.zuckzapgo.plist /Library/LaunchDaemons/ # Ou criar manualmente: sudo tee /Library/LaunchDaemons/com.zuckzapgo.plist << EOF Label com.zuckzapgo ProgramArguments /usr/local/bin/zuckzapgo --address=0.0.0.0 --port=8080 --logtype=json WorkingDirectory /opt/zuckzapgo RunAtLoad KeepAlive StandardOutPath /opt/zuckzapgo/logs/stdout.log StandardErrorPath /opt/zuckzapgo/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.zuckzapgo.plist sudo chmod 644 /Library/LaunchDaemons/com.zuckzapgo.plist # 6. Carregar e iniciar serviço sudo launchctl load /Library/LaunchDaemons/com.zuckzapgo.plist sudo launchctl start com.zuckzapgo # 7. Verificar status sudo launchctl list | grep zuckzapgo # Comandos úteis: # Parar: sudo launchctl stop com.zuckzapgo # Descarregar: sudo launchctl unload /Library/LaunchDaemons/com.zuckzapgo.plist # Ver logs: tail -f /opt/zuckzapgo/logs/stdout.log ``` --- ## 🐳 Docker (Todas Plataformas) ### Docker Hub ```bash # Usar versão específica docker pull setupautomatizado/zuckzapgo-private:v1.17.1 docker run -d -p 8080:8080 \ -e DATABASE_URL=sqlite:/app/data/db.sqlite \ -v zuckzapgo-data:/app/data \ --name zuckzapgo \ setupautomatizado/zuckzapgo-private:v1.17.1 # Ou usar latest docker pull setupautomatizado/zuckzapgo-private:latest docker run -d -p 8080:8080 \ -v zuckzapgo-data:/app/data \ setupautomatizado/zuckzapgo-private:latest ``` ### Docker Compose (Recomendado) ```bash # Baixar docker-compose.yml do repositório curl -LO https://raw.githubusercontent.com/guilhermejansen/zuckzapgo-private/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: zuckzapgo: image: setupautomatizado/zuckzapgo-private:latest container_name: zuckzapgo ports: - "8080:8080" environment: - DATABASE_URL=postgresql://zuckzapgo:senha@postgres:5432/zuckzapgo - ZUCKZAPGO_ADMIN_TOKEN=seu-token-secreto - LICENSE_KEY=ZUCKZAPGO-BASIC-C231653DD4F34B20 - TZ=America/Sao_Paulo volumes: - zuckzapgo-data:/app/data - zuckzapgo-logs:/app/logs restart: unless-stopped depends_on: - postgres postgres: image: postgres:15-alpine container_name: zuckzapgo-postgres environment: - POSTGRES_DB=zuckzapgo - POSTGRES_USER=zuckzapgo - POSTGRES_PASSWORD=senha volumes: - postgres-data:/var/lib/postgresql/data restart: unless-stopped volumes: zuckzapgo-data: zuckzapgo-logs: postgres-data: ``` --- ## ❓ Troubleshooting ### "Permission Denied" ao executar binário **Linux/macOS**: ```bash chmod +x zuckzapgo ``` **macOS (quarentena)**: ```bash xattr -d com.apple.quarantine zuckzapgo ``` ### "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: ./zuckzapgo --port=8090 # Ou via ENV: ZUCKZAPGO_PORT=8090 ./zuckzapgo ``` ### 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/zuckzapgo-linux-amd64 ./zuckzapgo # 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: ZUCKZAPGO_LOG_LEVEL=debug # ou info, warn, error ./zuckzapgo --loglevel=debug # Verificar tipo de log (console vs json) LOG_TYPE=console LOG_COLOR=true # Ver logs do serviço: # Linux: sudo journalctl -u zuckzapgo -f # macOS: tail -f /opt/zuckzapgo/logs/stdout.log # Windows: type C:\zuckzapgo\logs\stdout.log ``` ### WhatsApp não conecta (QR code não aparece) ```bash # Verificar logs do WhatsApp ZUCKZAPGO_DEBUG=DEBUG ./zuckzapgo # 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@setupautomatizado.com.br - **GitHub Issues**: https://github.com/guilhermejansen/zuckzapgo-private/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/guilhermejansen/zuckzapgo-private/issues) 4. Entre em contato: suporte@setupautomatizado.com.br --- **Versão do Guia**: 1.0 **Última Atualização**: 2025-11-07