Skip to content

Storage e Arquivos

Sistema de armazenamento de arquivos no Cloudflare R2.

Cloudflare R2

S3-compatible object storage da Cloudflare.

Vantagens

  • Sem custos de egress
  • Alta performance global
  • API compatível com S3
  • Integração com CDN

Estrutura de Diretórios

YYYY/MM/DD/file-name/
├── file-name.pdf
├── file-name-pg-1.webp
├── file-name-pg-2.webp
└── file-name-pg-N.webp

Exemplo Real

2026/01/14/relatorio-anual/
├── relatorio-anual.pdf (2.5 MB)
├── relatorio-anual-pg-1.webp (245 KB)
├── relatorio-anual-pg-2.webp (238 KB)
└── relatorio-anual-pg-3.webp (256 KB)

Upload Direto

Cliente faz upload direto para R2 usando presigned URLs.

Fluxo

  1. Cliente requisita URL (backend)
  2. Backend gera presigned URL (15 min)
  3. Cliente faz PUT para R2
  4. Cliente confirma (backend)
  5. Backend processa em background

Benefícios

  • Reduz carga no servidor
  • Upload mais rápido
  • Escalável

Processamento de PDF

Pipeline

  1. Download: Worker baixa PDF do R2
  2. Extração: pdftoppm gera PNGs
  3. Conversão: Sharp converte PNG → WebP
  4. Upload: Páginas WebP enviadas para R2
  5. Registro: Metadados salvos no banco

Configurações

  • WebP Quality: 85%
  • WebP Effort: 6 (máxima compressão)
  • Formato: PNG → WebP
  • Nomeação: {file}-pg-{N}.webp

Backup Externo

Rclone para NAS

Sincronização opcional com storage externo.

bash
# Configurar remote
rclone config

# Sincronizar
rclone sync r2:arqsystem-storage /mnt/nas/backup

Política de Backup

  • Frequência: Diária (cron)
  • Retenção: 30 dias
  • Tipo: Incremental

Segurança

Presigned URLs

  • Upload: 15 minutos de validade
  • Download: 1 hora de validade
  • Permissões: Read ou Write específico

Acesso Privado

  • Bucket privado por padrão
  • Acesso apenas via presigned URLs
  • CORS configurado para domínio específico

Performance

  • CDN: Cloudflare global network
  • Cache: Edge caching automático
  • Compressão: WebP reduz 70-80% vs JPEG

Sistema de Gestão de Arquivos Digitais