Il file manager integrabile ovunque
PHP ≥ 8.1 + Flysystem 3. Interfaccia Alpine.js. Local, S3, Cloudflare R2, SFTP. Integra con poche righe di JavaScript.
Guardalo in azione
I file dei tuoi clienti restano nei bucket dei tuoi clienti
FluxFiles è il file manager incorporabile in cui ogni tenant collega il proprio bucket S3/R2 — e tu non conservi né i loro dati né le loro credenziali.
-
Sovranità dei dati
I file risiedono nell'account cloud e nella regione del cliente — pensato per GDPR, compliance e procurement aziendale.
-
Zero dati, zero credenziali a riposo
Le credenziali del bucket sono cifrate con AES-256-GCM dentro il JWT e decifrate solo a runtime — mai scritte su database o log.
-
Costi di storage che scalano a zero
Storage ed egress sono fatturati a ogni cliente, non a te. Nessuna bolletta di storage che cresce con i tuoi utenti.
-
Stateless e incorporabile
Nessun database centrale. Inserisci il picker in qualsiasi app via iframe o SDK; il tuo backend emette un token con ambito e di breve durata.
Come funziona: la tua app cifra le credenziali del bucket del tenant in un JWT di breve durata (HKDF-SHA256 + AES-256-GCM). FluxFiles le decifra solo per eseguire l'operazione richiesta.
Un token per tenant — ognuno con le sue regole
FluxFiles è stateless: il JWT emesso dal tuo backend è la configurazione del tenant. Percorso di storage, dimensione massima per file, quota, numero di file, tipi consentiti, permessi — tutto applicato lato server. Nessun file di config per tenant, nessun riavvio.
// 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,
}); Abbinalo al BYOB per mettere ogni tenant sul proprio bucket.
Pensato per i team che rilasciano funzioni sui file
Se il tuo prodotto richiede upload, FluxFiles si integra — senza renderti il custode dei dati dei tuoi clienti.
SaaS e app multi-tenant
Dai a ogni cliente un file manager sul proprio bucket. Scoping del token per tenant e sovranità dei dati inclusi.
Agenzie e freelance
Consegna a ogni cliente una libreria multimediale curata senza allestire un'infrastruttura di storage per progetto.
Integrazioni CMS ed editor
Inserisci un selettore di media in CKEditor, TinyMCE, Summernote o nel tuo editor tramite l'SDK iframe.
Strumenti interni e dashboard
Aggiungi upload, anteprime e operazioni sui file con audit ai pannelli di amministrazione in un pomeriggio.
Tutto ciò che serve a un file manager moderno
Progettato per sviluppatori che necessitano di flessibilità.
Multi-storage
Locale, AWS S3, Cloudflare R2, SFTP tramite Flysystem v3 — cambia con la config, senza codice.
Integra ovunque
iframe + SDK postMessage. UI standalone con Alpine.js (zero build). Con qualsiasi framework.
Auth JWT + scoping
Prefisso percorso per utente, permessi, whitelist dischi, modalità solo proprietario.
AI auto-tag
Claude / OpenAI vision — alt text, titolo, tag automatici.
Ritaglio immagine
Strumento di ritaglio con proporzioni predefinite.
Ottimizzazione immagine
Varianti WebP automatiche — miniatura, medio, grande.
Upload pre-firmati
Il browser carica direttamente su S3/R2 — zero bandwidth sul tuo server.
Upload a blocchi
S3 multipart per file > 10MB.
Ricerca full-text
Ricerca indicizzata per nomi, titoli, tag — basata su file, senza database.
Operazioni in blocco
Selezione multipla: spostare, copiare, eliminare, scaricare.
Trasferimento cross-disk
Copia/sposta tra Locale ↔ S3 ↔ R2.
Cestino
Eliminazione recuperabile con pulizia automatica.
Metadati SEO
Titolo, alt, didascalia, tag — metadati oggetto S3 (cloud) o JSON sidecar (locale). Ricerca full-text.
Modalità scura
Chiaro / scuro / auto in UI e SDK.
16 lingue
Inglese predefinito. Imposta locale via SDK, URL (?locale=) o FLUXFILES_LOCALE. RTL per arabo.
Log di audit
Tutte le azioni di scrittura registrate.
Limitazione della velocità
Token bucket per utente per la protezione API.
Quota di archiviazione
Limiti per utente tramite JWT claims.
Bucket BYOB
Gli utenti portano il proprio S3/R2 — credenziali criptate nel JWT (AES-256-GCM).
Rilevamento duplicati
Match SHA-256 salta upload ridondanti salvo sovrascrittura forzata.
Refresh token SDK
onTokenRefresh su 401 — refresh coalescente, retry e updateToken().
Bucket Doctor
Diagnostica qualsiasi disco S3/R2 — credenziali, lettura/scrittura/eliminazione, presign, CORS, multipart — con correzioni IAM e CORS pronte da incollare. Onboarding dei bucket BYOB in pochi minuti.
Node token SDK
Genera token FluxFiles da qualsiasi backend JS (Express, Next.js, Nuxt) con @fluxfiles/node — compatibile byte per byte con il core PHP. Nessun PHP necessario per emettere i token.
Disco SFTP
Un 3° driver dopo S3/R2 — trasforma qualsiasi VPS o hosting in file manager.
Editor codice / config
Modifica file di testo e config (wp-config.php, .env) nel browser, stile cPanel.
Zip ed Estrai
Scarica una selezione come zip o estrai un archivio — protetto da zip-slip e bombe.
Filigrana
Applica una filigrana testo o logo al volo per la protezione — l'originale resta intatto.
WebP + AVIF on-demand
Servi qualsiasi dimensione d'immagine come AVIF/WebP in cache tramite un solo URL (negoziato da Accept), con srcset responsive pronto.
Permessi SFTP
Cambia i permessi Unix (chmod) sui dischi SFTP con un dialogo stile cPanel.
Dashboard di utilizzo
Vedi lo storage a colpo d'occhio — quota e suddivisione per tipo e cartella.
Anteprima media
Anteprima inline di immagini, video, audio e PDF; media locali privati in streaming sicuro.
Pronto in 2 minuti
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= Funziona con
Integrazioni
Adattatori pronti all'uso per il tuo stack
Gli adattatori ufficiali integrano FluxFiles in modo nativo nei framework e negli editor che usi già.
Incorpora
Incorporalo in poche righe
Carica fluxfiles.js, passa un JWT generato lato server e inserisci un file manager completo — o una finestra di selezione file — in qualsiasi pagina.
<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)}
/>
);
} I token vengono generati lato server — non inviare mai il tuo secret al browser.
Progettato per ciò che gli altri hanno dimenticato
| Funzionalità | FluxFiles | elFinder | Laravel-FM | RichFilemanager | Responsive FM |
|---|---|---|---|---|---|
| S3 + R2 + Locale + SFTP | ✓ | ⚠ | ⚠ | ⚠ | ✗ |
| Integra in qualsiasi framework | ✓ | ⚠ | ✗ | ⚠ | ✗ |
| Auth JWT + scoping | ✓ | ✗ | ✗ | ✗ | ✗ |
| Metadati SEO | ✓ | ✗ | ✗ | ✗ | ✗ |
| AI auto-tag | ✓ | ✗ | ✗ | ✗ | ✗ |
| Ritaglio immagine | ✓ | ✓ | ✗ | ✗ | ✗ |
| Upload a blocchi | ✓ | ✗ | ✗ | ✗ | ✗ |
| Ricerca full-text | ✓ | ✗ | ✗ | ✗ | ✗ |
| Modalità scura | ✓ | ✗ | ⚠ | ✗ | ✗ |
| 16 lingue | ✓ | ✓ | ✗ | ✗ | ✗ |
| PHP ≥ 8.1 | ✓ | ✓ | ✗ | ✓ | ✓ |
| Mantenuto attivamente | ✓ | ✓ | ⚠ | ✗ | ✗ |
| UI moderna | ✓ | ✗ | ⚠ | ✗ | ✗ |
Self-hosted e incorporabile — non l'ennesimo SaaS di upload
Le API di file gestite sono ottime, ma conservano i tuoi dati e fatturano a consumo. FluxFiles gira nel tuo stack, con ogni tenant sul proprio bucket.
| Capacità | FluxFiles | Filestack | Uploadcare | Cloudinary | Supabase Storage |
|---|---|---|---|---|---|
| Self-hosted (gira nella tua infrastruttura) | ✓ | ✗ | ✗ | ✗ | ⚠ |
| BYOB — bucket proprio di ogni cliente | ✓ | ⚠ | ⚠ | ✗ | ✗ |
| UI file manager incorporabile | ✓ | ✓ | ✓ | ⚠ | ✗ |
| Open source (MIT) | ✓ | ✗ | ✗ | ✗ | ✓ |
| Nessun costo SaaS per storage / per upload | ✓ | ✗ | ✗ | ✗ | ⚠ |
| Multi-storage (S3 / R2 / locale) | ✓ | ⚠ | ✗ | ✗ | ✗ |
| Scoping del token per tenant integrato | ✓ | ⚠ | ⚠ | ⚠ | ⚠ |
Il confronto riflette le offerte predefinite tipiche; ogni prodotto eccelle nel proprio ambito. La nicchia di FluxFiles è la combinazione incorporabile, self-hosted e bring-your-own-bucket.
Prodotti vendibili
Non solo gestire file — venderli e riceverli
Il core gratis integra un file manager. I moduli a pagamento lo trasformano in prodotti per cui i tuoi clienti pagano.
Branded Share
Invia un link self-service brandizzato a qualsiasi file o cartella — con scadenza, password, limite di download e analitiche. Il tuo logo, il tuo dominio.
- Link con scadenza / protetti da password
- Limiti di download + analitiche
- Token con ambito — nessun account per il destinatario
Upload Portals
Una pagina pubblica «inviaci i tuoi file» che finisce dritta nel tuo storage. Perfetta per agenzie, fotografi e onboarding clienti — nessun account per chi carica.
- Portale pubblico → il tuo bucket
- Limiti di dimensione / tipo / scadenza per portale
- Caricamento anonimo, con ambito proprietario
Compliance bundle
Antivirus, provenienza contenuti C2PA e conservazione audit — per deployment regolamentati ed enterprise.
WordPress
Un plugin invece di tre
Su WordPress, FluxFiles è sia un portale file per i clienti SIA un gestore multimediale — sostituendo plugin separati di cartelle, cloud e offload.
| Capacità | FluxFiles | FileBird | WP Media Folder | WP Offload |
|---|---|---|---|---|
| Cartelle media | — | |||
| Storage S3 / R2 / SFTP | — | |||
| Offload + riscrittura URL | — | — | ||
| Portali di caricamento clienti | — | — | — | |
| Link di condivisione brandizzati | — | — | — | |
| Prezzo tipico | Una licenza | 49 $/anno | 69 $/anno | a pagamento |
Cartelle + cloud + offload + portali clienti in uno — invece di pagare FileBird e WP Media Folder e WP Offload separatamente.
Prezzi
Core gratis. Paghi solo i moduli a pagamento.
Il core MIT è gratis per sempre. Passa ai due prodotti di punta — Condivisione brandizzata + Portali di caricamento — e oltre.
Gratis (Core)
Il file manager MIT completo, self-hosted.
Inizia- Storage Local / S3 / R2 / SFTP, scoping JWT
- WebP + AVIF on-demand + ottimizzazione immagini/PDF
- Filigrana, hook versioni, dashboard utilizzo, auto-tag IA
- 7 adattatori + BYO-embed terminale / PDF / office / firma elettronica
Pro
Invia e ricevi file con i clienti.
In arrivoIn arrivo- Tutto del gratis
- Condivisione brandizzata — link con scadenza / password / limite / analitiche
- Portali di caricamento — «inviaci file» pubblico, senza account
- Supporto prioritario + aggiornamenti
Studio
Costruisci un prodotto su FluxFiles.
In arrivoIn arrivo- Tutto del Pro
- Versionamento + Webhooks (Zapier/Make/n8n)
- IA Vision + OCR (chiave tua)
- Livelli multi-tenant + white-label
Enterprise
Conformità, su larga scala.
Contatta le vendite- Tutto dello Studio
- Antivirus + provenienza C2PA + conservazione audit
- Bridge SSO + onboarding su misura
- SLA + roadmap prioritaria
Tariffa fissa, siti illimitati — nessun addebito per file/chiamata. L'annuale fa risparmiare ~2 mesi; opzione a vita disponibile. Rimborso 14 giorni. IVA acquirente gestita al checkout.
FAQ
Domande frequenti
FluxFiles è gratuito e open source?
Dove vengono archiviati i miei file?
Come funziona l'autenticazione?
I miei utenti hanno bisogno di un account FluxFiles?
Posso incorporarlo nella mia app o nel mio editor esistente?
Cosa serve per eseguirlo?
Cosa includono i piani a pagamento?
Come attivo una licenza?
Pagamento unico o abbonamento?
Pronto a integrare FluxFiles?
Aggiungi un file manager pronto per la produzione alla tua app in pochi minuti — senza vincoli di framework, con licenza MIT.