# Como Corrigir Erro 500 no Teste de Conexão MinIO

## 🔍 Diagnóstico

Se você está recebendo erro 500 ao testar a conexão MinIO, siga estes passos:

### 1. Verificar se AWS SDK está instalado

```bash
cd /var/www/gestorstream/backend
composer show aws/aws-sdk-php
```

Se não estiver instalado:
```bash
composer require aws/aws-sdk-php
composer dump-autoload
```

### 2. Executar Script de Diagnóstico

Execute o script de diagnóstico no servidor:

```bash
cd /var/www/gestorstream/backend
php diagnostico-minio.php
```

Este script testará a conexão e indicará qual é o problema.

### 3. Verificar Logs

Verifique os logs do Laravel para mais detalhes:

```bash
tail -f /var/www/gestorstream/backend/storage/logs/laravel.log | grep -i "storage\|minio\|s3"
```

### 4. Configurações Comuns para MinIO

Com base na imagem fornecida, sua configuração deve ser:

- **Endpoint**: `https://minioapi.jf.eng.br` (sem barra no final)
- **Bucket**: `backupsqlsistens`
- **Access Key**: `1umAdXF2l27hPDaUjoGx`
- **Secret Key**: `1aMnmAeaKUMdFTDLKzqEQCdNlU9hb1F2JjQq5pd6`
- **Região**: `home01`
- **Usar Path Style Endpoint**: **TENTE MARCAR ESTA OPÇÃO** (muitas instalações MinIO precisam disso)

### 5. Problemas Comuns e Soluções

#### Erro: "Class 'Aws\S3\S3Client' not found"
**Solução**: Instale o AWS SDK:
```bash
cd /var/www/gestorstream/backend
composer require aws/aws-sdk-php
composer dump-autoload
php artisan config:clear
```

#### Erro: "Could not resolve host" ou "getaddrinfo failed"
**Solução**: 
- Verifique se o endpoint está correto
- Verifique se o servidor consegue acessar o endpoint:
  ```bash
  curl -I https://minioapi.jf.eng.br
  ```

#### Erro: "Access Denied" ou "403 Forbidden"
**Solução**:
- Verifique se as credenciais (Access Key e Secret Key) estão corretas
- Verifique se o usuário do MinIO tem permissão para acessar o bucket
- Verifique as políticas do bucket no MinIO

#### Erro: "NoSuchBucket" ou "404 Not Found"
**Solução**:
- Verifique se o nome do bucket está correto
- Verifique se o bucket existe no MinIO
- Tente criar o bucket manualmente no MinIO

#### Erro: "SSL certificate problem" ou "certificate verify failed"
**Solução**: 
- O sistema já está configurado para ignorar erros SSL (`'verify' => false`)
- Se ainda assim falhar, pode ser um problema de rede/firewall
- Verifique se o certificado SSL do MinIO está válido

#### Erro: "SignatureDoesNotMatch"
**Solução**:
- Verifique se a Secret Key está correta
- Tente marcar "Usar Path Style Endpoint"
- Verifique se a região está correta

### 6. Teste Manual via PHP

Crie um arquivo de teste temporário:

```bash
cd /var/www/gestorstream/backend
php diagnostico-minio.php
```

Ou crie um arquivo `test-minio.php`:

```php
<?php
require __DIR__ . '/vendor/autoload.php';

$config = [
    'version' => 'latest',
    'region' => 'home01',
    'credentials' => [
        'key' => '1umAdXF2l27hPDaUjoGx',
        'secret' => '1aMnmAeaKUMdFTDLKzqEQCdNlU9hb1F2JjQq5pd6',
    ],
    'endpoint' => 'https://minioapi.jf.eng.br',
    'use_path_style_endpoint' => true, // TENTE TRUE E FALSE
    'signature_version' => 'v4',
    'http' => [
        'verify' => false,
    ],
];

try {
    $s3 = new Aws\S3\S3Client($config);
    $result = $s3->listObjectsV2([
        'Bucket' => 'backupsqlsistens',
        'MaxKeys' => 1,
    ]);
    echo "✅ Sucesso!\n";
    print_r($result);
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
}
```

### 7. Verificar Permissões do Bucket no MinIO

No painel do MinIO, verifique:
1. Se o bucket `backupsqlsistens` existe
2. Se o usuário tem permissão de leitura/escrita no bucket
3. Se as políticas do bucket estão corretas

### 8. Após Corrigir

Após corrigir o problema:
1. Limpe o cache: `php artisan config:clear`
2. Teste novamente na interface
3. Se funcionar, salve a integração

## 📝 Notas Importantes

- O sistema agora tenta automaticamente com Path Style Endpoint se a primeira tentativa falhar
- Erros SSL são ignorados automaticamente (`verify => false`)
- Logs detalhados são salvos em `storage/logs/laravel.log`
- Mensagens de erro foram melhoradas para serem mais amigáveis

## 🆘 Se Nada Funcionar

1. Verifique os logs completos:
   ```bash
   tail -n 100 /var/www/gestorstream/backend/storage/logs/laravel.log
   ```

2. Teste a conectividade básica:
   ```bash
   curl -v https://minioapi.jf.eng.br
   ```

3. Verifique se o MinIO está acessível do servidor:
   ```bash
   telnet minioapi.jf.eng.br 443
   ```

4. Entre em contato com o suporte fornecendo:
   - Logs do Laravel
   - Resultado do `diagnostico-minio.php`
   - Configuração do MinIO (sem as credenciais)

