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