O gerenciador de arquivos que funciona em qualquer lugar
PHP ≥ 8.1 + Flysystem 3. Interface Alpine.js. Local, S3, Cloudflare R2, SFTP. Embute com poucas linhas de JavaScript.
Veja em ação
Os arquivos dos seus clientes ficam nos buckets dos seus clientes
O FluxFiles é o gerenciador de arquivos incorporável em que cada inquilino conecta o próprio bucket S3/R2 — e você nunca armazena os dados nem as credenciais dele.
-
Soberania de dados
Os arquivos ficam na conta de nuvem e na região do próprio cliente — feito para LGPD/GDPR, conformidade e compras corporativas.
-
Zero dados, zero credenciais em repouso
As credenciais do bucket são criptografadas com AES-256-GCM dentro do JWT e descriptografadas apenas em tempo de execução — nunca gravadas em banco ou log.
-
Custo de armazenamento que tende a zero
Armazenamento e egress são cobrados de cada cliente, não de você. Sem conta que cresce com sua base de usuários.
-
Sem estado e incorporável
Sem banco de dados central. Incorpore o seletor em qualquer app por iframe ou SDK; seu backend emite um token restrito e de curta duração.
Como funciona: seu app criptografa as credenciais do bucket do inquilino em um JWT de curta duração (HKDF-SHA256 + AES-256-GCM). O FluxFiles só as descriptografa para executar a operação solicitada.
Um token por inquilino — cada um com suas regras
O FluxFiles é stateless: o JWT que seu backend emite é a configuração do inquilino. Caminho de armazenamento, tamanho máximo por arquivo, cota, número de arquivos, tipos permitidos, permissões — tudo aplicado no servidor. Sem arquivos de configuração por inquilino, sem reinícios.
// Your backend, per request — the token IS the tenant's config.
import { createToken } from '@fluxfiles/node';
const claims = tenant.plan === 'pro'
// 100 MB/file · any type · 50 GB · unlimited files · own bucket
? { disks: ['s3'], maxUploadMb: 100, allowedExt: null,
maxStorageMb: 51200, maxFiles: 0 }
// 5 MB/file · images only · 500 MB · 200 files
: { disks: ['local'], maxUploadMb: 5, allowedExt: ['jpg','png','webp'],
maxStorageMb: 500, maxFiles: 200 };
const token = createToken({
secret: process.env.FLUXFILES_SECRET,
userId: tenant.id,
prefix: `tenant_${tenant.id}/`, // isolates each tenant's files
perms: ['read', 'write', 'delete'],
...claims,
}); Combine com BYOB para colocar cada inquilino no próprio bucket.
Feito para equipes que entregam recursos de arquivos
Se o seu produto precisa de uploads, o FluxFiles se encaixa — sem fazer de você o guardião dos dados dos seus clientes.
SaaS e apps multi-tenant
Dê a cada cliente um gerenciador de arquivos no próprio bucket. Escopo de token por tenant e soberania de dados inclusos.
Agências e freelancers
Entregue uma biblioteca de mídia caprichada a cada cliente sem montar infraestrutura de armazenamento por projeto.
Integrações de CMS e editores
Coloque um seletor de mídia no CKEditor, TinyMCE, Summernote ou no seu próprio editor via SDK por iframe.
Ferramentas internas e dashboards
Adicione uploads, prévias e operações de arquivo auditadas a painéis de admin em uma tarde.
Tudo que um gerenciador de arquivos moderno precisa
Feito para desenvolvedores que precisam de flexibilidade.
Multi-armazenamento
Local, AWS S3, Cloudflare R2, SFTP via Flysystem v3 — troque na config, sem mudar código.
Incorpore em qualquer lugar
iframe + SDK postMessage. UI standalone usa Alpine.js (sem build). Funciona com qualquer framework.
Auth JWT + escopo
Prefixo de caminho por usuário, permissões, whitelist de discos, modo somente proprietário.
AI auto-tag
Claude / OpenAI vision — alt text, título, tags automáticos.
Recorte de imagem
Ferramenta de recorte com proporções predefinidas.
Otimização de imagem
Variantes WebP automáticas — thumb, médio, grande.
Uploads pré-assinados
Navegador faz upload direto para S3/R2 — zero bandwidth no seu servidor.
Upload em partes
S3 multipart para arquivos > 10MB.
Busca em texto completo
Busca indexada por nomes, títulos, tags — baseada em arquivos, sem banco de dados.
Operações em massa
Seleção múltipla: mover, copiar, excluir, baixar.
Transferência cross-disk
Copiar/mover entre Local ↔ S3 ↔ R2.
Lixeira
Exclusão recuperável com limpeza automática.
Metadados SEO
Título, alt, legenda, tags — metadados de objeto S3 (nuvem) ou JSON sidecar (local). Busca em texto completo.
Modo escuro
Claro / escuro / auto na UI e SDK.
16 idiomas
Inglês por padrão. Defina locale via SDK, URL (?locale=) ou FLUXFILES_LOCALE. RTL para árabe.
Log de auditoria
Todas as ações de escrita registradas.
Limitação de taxa
Token bucket por usuário para proteção da API.
Cota de armazenamento
Limites por usuário via JWT claims.
Buckets BYOB
Usuários trazem seu próprio S3/R2 — credenciais criptografadas no JWT (AES-256-GCM).
Detecção de duplicatas
Correspondência SHA-256 pula uploads redundantes exceto sobrescrita forçada.
Atualização de token SDK
onTokenRefresh em 401 — refresh coalescido, retry e updateToken() para rotação proativa.
Bucket Doctor
Diagnostica qualquer disco S3/R2 — credenciais, leitura/escrita/exclusão, presign, CORS, multipart — com correções de IAM e CORS prontas para colar. Faça onboarding de buckets BYOB em minutos.
SDK de tokens Node
Emita tokens do FluxFiles a partir de qualquer backend JS (Express, Next.js, Nuxt) com @fluxfiles/node — compatível byte a byte com o core PHP. Sem PHP para emitir tokens.
Disco SFTP
Um 3º driver após S3/R2 — transforme qualquer VPS ou hospedagem em gerenciador.
Editor de código / config
Edite arquivos de texto e config (wp-config.php, .env) no navegador, estilo cPanel.
Zip e Extrair
Baixe uma seleção como zip ou extraia um arquivo — protegido contra zip-slip e bombas.
Marca d'água
Aplique marca d'água de texto ou logo on-the-fly — o arquivo original não é alterado.
WebP + AVIF sob demanda
Sirva qualquer tamanho de imagem como AVIF/WebP em cache por uma URL (negociada por Accept), com srcset responsivo pronto.
Permissões SFTP
Altere permissões Unix (chmod) em discos SFTP com um diálogo estilo cPanel.
Painel de uso
Veja o armazenamento num relance — cota e detalhamento por tipo e pasta.
Pré-visualização de mídia
Prévia inline de imagem, vídeo, áudio e PDF; mídia local privada com streaming seguro.
Funcionando em 2 minutos
composer require fluxfiles/fluxfiles
cp .env.example .env
# .env
FLUXFILES_SECRET=your-random-32-char-secret
FLUXFILES_ALLOWED_ORIGINS=https://yourapp.com
require_once 'vendor/autoload.php';
$token = fluxfiles_token(
userId: 'user-123',
perms: ['read', 'write', 'delete'],
disks: ['local', 's3', 'r2'],
prefix: 'user-123/',
maxUploadMb: 10,
allowedExt: null,
ttl: 3600
); composer require fluxfiles/laravel
php artisan vendor:publish --tag=fluxfiles-config
# .env — point the adapter at your FluxFiles server
FLUXFILES_ENDPOINT=https://fm.yourdomain.com
FLUXFILES_SECRET=your-secret-min-32-chars
# Optional: match CORS on the FluxFiles host
# FLUXFILES_ALLOWED_ORIGINS=https://yourapp.com
# Config: config/fluxfiles.php npm install @fluxfiles/node
// Express / Next.js route — mint a token from your JS backend (no PHP)
import { createToken } from '@fluxfiles/node';
app.get('/fluxfiles-token', (req, res) => {
const token = createToken({
secret: process.env.FLUXFILES_SECRET, // >= 32 bytes
userId: req.user.id,
perms: ['read', 'write', 'delete'],
prefix: `users/${req.user.id}`,
ttl: 3600,
});
res.json({ token });
}); <!-- Demo: unpkg. In production, serve fluxfiles.js from your FluxFiles host -->
<script src="https://unpkg.com/fluxfiles@latest/fluxfiles.js"></script>
<script>
FluxFiles.open({
endpoint: 'https://your-api.com',
token: 'eyJhbGci...',
disk: 'local',
mode: 'picker',
container: '#file-picker',
onSelect: function(file) {
console.log('Selected:', file.url);
},
async onTokenRefresh() {
const r = await fetch('/api/auth/refresh-fluxfiles-token');
const { token } = await r.json();
return token;
}
});
</script> npm install @fluxfiles/react
import { FluxFilesModal } from '@fluxfiles/react';
<FluxFilesModal
open={open}
endpoint="https://your-api.com"
token={token}
onSelect={(file) => console.log(file)}
onClose={() => setOpen(false)}
/> npm install @fluxfiles/vue
<script setup>
import { FluxFilesModal } from '@fluxfiles/vue';
</script>
<FluxFilesModal
v-model:open="open"
endpoint="https://your-api.com"
:token="token"
@select="onSelect"
@close="open = false"
/> git clone https://github.com/thai-pc/fluxfiles.git
docker build -f fluxfiles/docker/Dockerfile.prod -t fluxfiles fluxfiles
docker run -p 8080:80 \\
-e FLUXFILES_SECRET=your-random-32-char-secret \\
fluxfiles
# UI: http://localhost:8080/public/index.html git clone https://github.com/thai-pc/fluxfiles.git
cd fluxfiles
composer install -d packages/core
cp .env.example .env
cd packages/core
php -S localhost:8080 router.php
# UI: http://localhost:8080/public/index.html
# API: http://localhost:8080/api/fm/list?disk=local&path= Funciona com
Integrações
Adaptadores plug-and-play para a sua stack
Os adaptadores oficiais incorporam o FluxFiles nativamente nos frameworks e editores que você já usa.
Incorporar
Incorpore em poucas linhas
Carregue o fluxfiles.js, passe um JWT emitido no servidor e coloque um gerenciador de arquivos completo — ou um modal de seleção — em qualquer página.
<script src="https://fm.example.com/fluxfiles.js"></script>
FluxFiles.open({
endpoint: 'https://fm.example.com',
token: 'eyJhbGci...', // JWT from your backend
disk: 'local',
mode: 'picker', // select & close
theme: 'auto',
onSelect(file) {
// { url, key, name, size, disk, meta, variants }
document.querySelector("#img").src = file.url;
},
}); <div id="fm" style="height:600px"></div>
FluxFiles.open({
endpoint: 'https://fm.example.com',
token: 'eyJhbGci...',
mode: 'browser', // full manager, stays open
container: '#fm', // omit for a modal overlay
disks: ['local', 's3', 'r2'],
});
FluxFiles.on('FM_EVENT', (e) => console.log(e.event));
FluxFiles.navigate('/photos/2024'); import { FluxFilesModal } from '@fluxfiles/react';
function Picker({ open, setOpen, token }) {
return (
<FluxFilesModal
open={open}
endpoint="https://fm.example.com"
token={token}
onSelect={(file) => console.log(file.url)}
onClose={() => setOpen(false)}
/>
);
} Os tokens são emitidos no servidor — nunca envie seu segredo para o navegador.
Feito para o que os outros esqueceram
| Recurso | FluxFiles | elFinder | Laravel-FM | RichFilemanager | Responsive FM |
|---|---|---|---|---|---|
| S3 + R2 + Local + SFTP | ✓ | ⚠ | ⚠ | ⚠ | ✗ |
| Incorporar em qualquer framework | ✓ | ⚠ | ✗ | ⚠ | ✗ |
| Auth JWT + escopo | ✓ | ✗ | ✗ | ✗ | ✗ |
| Metadados SEO | ✓ | ✗ | ✗ | ✗ | ✗ |
| AI auto-tag | ✓ | ✗ | ✗ | ✗ | ✗ |
| Recorte de imagem | ✓ | ✓ | ✗ | ✗ | ✗ |
| Upload em partes | ✓ | ✗ | ✗ | ✗ | ✗ |
| Busca em texto | ✓ | ✗ | ✗ | ✗ | ✗ |
| Modo escuro | ✓ | ✗ | ⚠ | ✗ | ✗ |
| 16 idiomas | ✓ | ✓ | ✗ | ✗ | ✗ |
| PHP ≥ 8.1 | ✓ | ✓ | ✗ | ✓ | ✓ |
| Mantido ativamente | ✓ | ✓ | ⚠ | ✗ | ✗ |
| UI moderna | ✓ | ✗ | ⚠ | ✗ | ✗ |
Auto-hospedado e incorporável — não mais um SaaS de upload
APIs de arquivos hospedadas são ótimas, mas armazenam seus dados e cobram por uso. O FluxFiles roda na sua stack, cada inquilino no próprio bucket.
| Recurso | FluxFiles | Filestack | Uploadcare | Cloudinary | Supabase Storage |
|---|---|---|---|---|---|
| Auto-hospedado (roda na sua infra) | ✓ | ✗ | ✗ | ✗ | ⚠ |
| BYOB — o bucket próprio de cada cliente | ✓ | ⚠ | ⚠ | ✗ | ✗ |
| UI de gerenciador de arquivos incorporável | ✓ | ✓ | ✓ | ⚠ | ✗ |
| Código aberto (MIT) | ✓ | ✗ | ✗ | ✗ | ✓ |
| Sem taxas de SaaS por armazenamento / upload | ✓ | ✗ | ✗ | ✗ | ⚠ |
| Multi-armazenamento (S3 / R2 / local) | ✓ | ⚠ | ✗ | ✗ | ✗ |
| Escopo de token por inquilino nativo | ✓ | ⚠ | ⚠ | ⚠ | ⚠ |
A comparação reflete as ofertas padrão típicas; cada produto se destaca na sua área. O nicho do FluxFiles é a combinação incorporável, auto-hospedado e bring-your-own-bucket.
Produtos vendáveis
Mais que gerenciar arquivos — venda e receba
O núcleo grátis embute um gerenciador de arquivos. Os módulos pagos o transformam em produtos pelos quais seus clientes pagam.
Branded Share
Envie um link autosserviço com sua marca para qualquer arquivo ou pasta — com expiração, senha, limite de download e analytics. Seu logo, seu domínio.
- Links com expiração / protegidos por senha
- Limites de download + analytics
- Token restrito — sem conta para o destinatário
Upload Portals
Uma página pública «envie-nos seus arquivos» que cai direto no seu armazenamento. Perfeito para agências, fotógrafos e onboarding de clientes — sem conta para quem envia.
- Portal público → seu bucket
- Limites de tamanho / tipo / expiração por portal
- Envio anônimo, restrito ao dono
Compliance bundle
Antivírus, proveniência de conteúdo C2PA e retenção de auditoria — para implantações reguladas e corporativas.
WordPress
Um plugin em vez de três
No WordPress, o FluxFiles é ao mesmo tempo um portal de arquivos para clientes E um gerenciador de mídia — substituindo plugins separados de pastas, nuvem e offload.
| Recurso | FluxFiles | FileBird | WP Media Folder | WP Offload |
|---|---|---|---|---|
| Pastas de mídia | — | |||
| Armazenamento S3 / R2 / SFTP | — | |||
| Offload + reescrita de URL | — | — | ||
| Portais de envio de clientes | — | — | — | |
| Links de compartilhamento com marca | — | — | — | |
| Preço típico | Uma licença | US$49/ano | US$69/ano | pago |
Pastas + nuvem + offload + portais de clientes em um só — em vez de pagar FileBird e WP Media Folder e WP Offload separadamente.
Preços
Núcleo grátis. Pague só pelos módulos pagos.
O núcleo MIT é grátis para sempre. Faça upgrade para os dois produtos principais — Compartilhamento com marca + Portais de envio — e além.
Grátis (Núcleo)
O gerenciador de arquivos MIT completo, auto-hospedado.
Começar- Armazenamento Local / S3 / R2 / SFTP, escopo JWT
- WebP + AVIF sob demanda + otimização de imagem/PDF
- Marca d'água, hook de versões, painel de uso, autotag por IA
- 7 adaptadores + BYO-embed terminal / PDF / office / assinatura eletrônica
Pro
Envie e receba arquivos com seus clientes.
Em breveEm breve- Tudo do grátis
- Compartilhamento com marca — links com expiração / senha / limite / analytics
- Portais de envio — «envie-nos arquivos» público, sem conta
- Suporte prioritário + atualizações
Studio
Construa um produto sobre o FluxFiles.
Em breveEm breve- Tudo do Pro
- Versionamento + Webhooks (Zapier/Make/n8n)
- IA Visão + OCR (sua chave)
- Níveis multi-inquilino + marca branca
Enterprise
Conformidade, em escala.
Falar com vendas- Tudo do Studio
- Antivírus + proveniência C2PA + retenção de auditoria
- Ponte SSO + onboarding sob medida
- SLA + roteiro prioritário
Preço fixo, sites ilimitados — sem cobrança por arquivo/chamada. O anual economiza ~2 meses; opção vitalícia disponível. Reembolso em 14 dias. IVA do comprador tratado no checkout.
Perguntas frequentes
Perguntas frequentes
O FluxFiles é gratuito e open source?
Onde meus arquivos ficam armazenados?
Como funciona a autenticação?
Meus usuários precisam de uma conta no FluxFiles?
Posso incorporá-lo no meu app ou editor atual?
O que preciso para executá-lo?
O que os planos pagos incluem?
Como ativo uma licença?
Pagamento único ou assinatura?
Pronto para incorporar o FluxFiles?
Adicione um gerenciador de arquivos pronto para produção ao seu app em minutos — sem dependência de framework, licença MIT.