# 🚀 cPanel Deployment Guide - Integration Hub

## Informações do Servidor

```
Host:         ftp.eunecto.com.br
Port SFTP:    1157
User:         eune6179
Domain:       nucleoapi.eunecto.com.br
Database:     eune6179_nucleo
DB User:      eune6179_nucleo
```

---

## 📋 Pré-requisitos

Antes de fazer o deploy, verifique:

- ✅ PHP 8.3+ instalado no servidor
- ✅ MySQL 8.0+ disponível
- ✅ Composer instalado
- ✅ SSH/SFTP access habilitado
- ✅ cPanel access com privilégios

---

## 🚀 Opção 1: Upload Automático (RECOMENDADO)

### Windows com WinSCP

1. **Instale WinSCP**
   ```
   https://winscp.net/eng/download.php
   ```

2. **Execute o script PowerShell**
   ```powershell
   cd c:\Users\vitor\OneDrive\Documentos\Vitor\Projetos\Nucleo
   powershell -ExecutionPolicy Bypass -File deploy.ps1
   ```

3. **Script fará o upload automático**

### Windows com Python

1. **Instale dependência**
   ```powershell
   pip install paramiko
   ```

2. **Execute o script**
   ```powershell
   python deploy_sftp.py
   ```

### Linux/Mac

1. **Execute o script Python**
   ```bash
   python3 deploy_sftp.py
   ```

---

## 🚀 Opção 2: Upload Manual (FileZilla)

### 1. Instale FileZilla
```
https://filezilla-project.org/
```

### 2. Configure conexão
```
Protocolo:  SFTP
Host:       ftp.eunecto.com.br
Porta:      1157
Usuário:    eune6179
Senha:      [sua senha]
```

### 3. Upload do projeto
- Na esquerda: navegue para `c:\Users\vitor\OneDrive\Documentos\Vitor\Projetos\Nucleo`
- Na direita: navegue para `nucleoapi.eunecto.com.br`
- Upload de todos os arquivos

**Ignore estas pastas:**
```
.git
.vscode
docker
node_modules
.DS_Store
```

---

## 🚀 Opção 3: Upload via SSH (Terminal)

### 1. Conecte-se ao servidor
```bash
ssh eune6179@ftp.eunecto.com.br -p 1157
```

### 2. Navegue até o diretório
```bash
cd ~/nucleoapi.eunecto.com.br
```

### 3. Clone o repositório (se disponível)
```bash
git clone <repo-url> .
composer install --no-dev
```

Ou copie via SCP:
```bash
scp -r -P 1157 . eune6179@ftp.eunecto.com.br:~/nucleoapi.eunecto.com.br/
```

---

## ⚙️ Setup Inicial no Servidor

Após upload dos arquivos, execute:

### Via SSH Terminal

```bash
# 1. Conecte ao servidor
ssh eune6179@ftp.eunecto.com.br -p 1157

# 2. Navegue até o projeto
cd ~/nucleoapi.eunecto.com.br

# 3. Execute o script de deploy
bash deploy.sh
```

### Via cPanel File Manager

1. Acesse cPanel → File Manager
2. Navegue para: `public_html/nucleoapi.eunecto.com.br`
3. Clique com botão direito → Edit File
4. Abra `deploy.sh`
5. Copie todo o conteúdo
6. Crie um arquivo `run_deploy.php`
7. Cole este código:

```php
<?php
shell_exec('bash ' . __DIR__ . '/deploy.sh');
echo "Deploy iniciado. Verifique os logs.";
?>
```

8. Acesse: `https://nucleoapi.eunecto.com.br/run_deploy.php`

---

## 🗄️ Criar Banco de Dados (cPanel)

Se o banco não foi criado automaticamente:

### 1. Acesse cPanel
```
https://seu-host:2083
Usuário: eune6179
```

### 2. MySQL Databases
- Clique em: **MySQL Databases**
- Database Name: `eune6179_nucleo`
- Username: `eune6179_nucleo`
- Password: `*V0k3@eunecto`
- Clique em: **Create Database**

### 3. Privilégios
- Vá para **MySQL Users**
- Associe `eune6179_nucleo` ao banco `eune6179_nucleo`
- Marque todos os privilégios

---

## 🧪 Testes Pós-Deploy

### 1. Health Check
```bash
curl https://nucleoapi.eunecto.com.br/api/health
```

Esperado:
```json
{"status":"ok","timestamp":"2024-05-27T..."}
```

### 2. Login
```bash
curl -X POST https://nucleoapi.eunecto.com.br/api/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "admin@integration-hub.local",
    "password": "senha123"
  }'
```

Esperado: Token JWT

### 3. Verificar Permissões
```bash
curl -H "Authorization: Bearer TOKEN" \
  https://nucleoapi.eunecto.com.br/api/user
```

---

## 🔒 Segurança Pós-Deploy

### 1. Mudança de Senhas Padrão
```bash
# Via API
POST /api/users/1/password
{
  "current_password": "senha123",
  "password": "sua_nova_senha_forte",
  "password_confirmation": "sua_nova_senha_forte"
}
```

### 2. Variáveis de Ambiente
Verifique `.env`:
```
APP_DEBUG=false          ✅
APP_ENV=production       ✅
HTTPS=on                 ✅
SESSION_SECURE_COOKIES=true  ✅
```

### 3. Permissions de Arquivos
```bash
chmod 755 public
chmod 755 storage bootstrap/cache
chmod 644 public/.htaccess
```

### 4. Desabilitar Directory Listing
```bash
# Adicione ao .htaccess:
Options -Indexes
```

---

## 📊 Monitoramento

### 1. Logs da Aplicação
```bash
tail -f storage/logs/laravel.log
```

### 2. Erros PHP
```bash
tail -f /var/log/php-errors.log
```

### 3. Acesso cPanel
- Verifique estatísticas em **Raw Access Logs**

---

## 🆘 Troubleshooting

### Erro: "Class not found"
```bash
cd nucleoapi.eunecto.com.br
composer dump-autoload -o
php artisan cache:clear
```

### Erro: "SQLSTATE[HY000]"
```bash
# Verifique conexão DB
php artisan tinker
>>> DB::connection()->getPdo()
```

### Erro: "Permission denied"
```bash
chmod -R 777 storage bootstrap/cache
chmod -R 777 public/uploads
```

### Erro: "The specified key was too long"
```bash
# No MySQL execute:
SET GLOBAL innodb_file_format=barracuda;
SET GLOBAL innodb_file_per_table=ON;
SET GLOBAL innodb_large_prefix=ON;
```

### API não responde
```bash
# Verifique .htaccess
# Verifique se rewrite_module está ativo:
a2enmod rewrite
systemctl restart apache2
```

---

## 📈 Próximos Passos

### 1. Criar primeiras integrações
```
POST /api/integrations
```

### 2. Configurar webhooks
```
POST /api/webhooks
```

### 3. Criar regras
```
POST /api/rules
```

### 4. Configurar backup automático
```bash
# Cron diário
0 2 * * * /home/eune6179/backup-db.sh
```

---

## 📞 Suporte

Se encontrar problemas:

1. Verifique logs: `storage/logs/laravel.log`
2. Teste via cPanel Terminal
3. Contate o suporte do host

---

## ✅ Checklist Final

- [ ] Projeto uploadado completamente
- [ ] Banco de dados criado
- [ ] deploy.sh executado
- [ ] JWT secret gerado
- [ ] Migrations rodadas
- [ ] Seeders executados
- [ ] Health check funcionando
- [ ] Login funcionando
- [ ] Senhas padrão alteradas
- [ ] Logs being monitored
- [ ] Backup configurado

---

**Deployment Date**: 27 de Maio de 2024  
**Status**: 🟢 READY FOR DEPLOYMENT  
**Estimated Time**: 15-20 minutos
