v0.2 — مفتوح المصدر · رخصة MIT

مدير الملفات القابل للتضمين في أي مكان

PHP ≥ 8.1 + Flysystem 3. واجهة Alpine.js. Local، S3، Cloudflare R2، SFTP. ضمِّنه بأسطر قليلة من JavaScript.

PHP ≥ 8.1
لا يحتاج إطار عمل
~3 KB
حجم SDK
MIT
رخصة مفتوحة المصدر
16
لغات مدعومة
معاينة مباشرة

شاهده أثناء العمل

Creating a FluxFiles share link with an expiry, a password and a download limit
مشاركة ملف — انتهاء وكلمة مرور وحد للتنزيل
Creating a FluxFiles upload portal with a file limit, size cap and allowed file types
بوابات الرفع — استلام بلا حساب
FluxFiles links panel listing shared links with views, downloads and revoke
أدر كل رابط وأبطله في أي وقت
FluxFiles desktop file manager with image thumbnails
عرض شبكي مع صور مصغّرة WebP فورية
FluxFiles browsing an S3 / R2 bucket with the local, S3 and SFTP disk switcher
متعدد السحابات — S3 / R2 / SFTP بواجهة واحدة
FluxFiles managing a remote VPS deploy directory over SFTP, same UI as the S3 bucket
خادم VPS بعيد عبر SFTP — بدون عميل FTP
Editing an nginx config file inside FluxFiles with syntax highlighting
حرّر ملفات الإعداد في مكانها — بلا SSH أو FTP
FluxFiles previewing a video inline in the detail panel
معاينة الفيديو والصوت وPDF دون تنزيل
FluxFiles Bucket Doctor health checks for an S3 bucket with CORS and IAM remediation
Bucket Doctor — فحوص S3/R2 + إصلاحات
FluxFiles activity log of file operations
سجل النشاط — محفوظ في حاويتك الخاصة
FluxFiles trash with restore and delete forever
المهملات — استعادة أو حذف نهائي
FluxFiles responsive mobile file manager
متجاوب على الجوال
الميزة التنافسية · BYOB

ملفات عملائك تبقى في حاويات عملائك

FluxFiles هو مدير الملفات القابل للتضمين حيث يربط كل مستأجر حاوية S3/R2 الخاصة به — ولا تخزّن أنت بياناتهم ولا بيانات اعتمادهم.

  • سيادة البيانات

    تُخزَّن الملفات في حساب العميل السحابي ومنطقته — مصمَّم لـ GDPR والامتثال والمشتريات المؤسسية.

  • لا بيانات ولا مفاتيح في حالة السكون

    تُشفَّر بيانات اعتماد الحاوية بـ AES-256-GCM داخل الـ JWT وتُفكّ فقط أثناء التشغيل — ولا تُكتب أبدًا في قاعدة بيانات أو سجل.

  • تكلفة تخزين تتقلّص إلى الصفر

    يُحتسب التخزين والنقل على كل عميل، لا عليك. لا فاتورة تخزين تنمو مع قاعدة مستخدميك.

  • بلا حالة وقابل للتضمين

    لا قاعدة بيانات مركزية. أدرج المُنتقي في أي تطبيق عبر iframe أو SDK؛ ويُصدر خادمك رمزًا محدود النطاق وقصير العمر.

تطبيق SaaS الخاص بك
JWT محدود النطاق (اعتمادات مشفّرة)
FluxFiles
يفكّ التشفير وقت التشغيل فقط
مستأجر A
حاوية خاصة
مستأجر B
حاوية خاصة
مستأجر C
حاوية خاصة

كيف يعمل: يُشفّر تطبيقك بيانات اعتماد حاوية المستأجر داخل JWT قصير العمر (HKDF-SHA256 + AES-256-GCM). يفكّ FluxFiles تشفيرها فقط لتنفيذ العملية المطلوبة.

متعدد المستأجرين

رمز واحد لكل مستأجر — لكلٍّ قواعده

FluxFiles بلا حالة: الـ JWT الذي يصدره خادمك هو إعداد ذلك المستأجر. مسار التخزين، حد حجم الملف، الحصة، عدد الملفات، الأنواع المسموح بها، الصلاحيات — كلها مُطبّقة على الخادم. لا ملفات إعداد لكل مستأجر، ولا إعادة تشغيل.

// 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,
});
prefix disks / BYOB max_upload max_storage max_files allowed_ext perms

اقرنه بـ BYOB لوضع كل مستأجر في حاويته الخاصة.

لمن هذا

مبني للفرق التي تطلق ميزات الملفات

إذا كان منتجك يحتاج إلى رفع الملفات، فإن FluxFiles يندمج بسهولة — دون أن يجعلك حارسًا لبيانات عملائك.

تطبيقات SaaS ومتعددة المستأجرين

امنح كل عميل مدير ملفات على حاويته الخاصة. تحديد نطاق الرمز لكل مستأجر وسيادة البيانات مدمجان.

الوكالات والمستقلون

سلّم لكل عميل مكتبة وسائط أنيقة دون إقامة بنية تخزين لكل مشروع.

تكاملات أنظمة إدارة المحتوى والمحررات

أضف مُنتقي وسائط إلى CKEditor أو TinyMCE أو Summernote أو محررك الخاص عبر iframe SDK.

الأدوات الداخلية ولوحات التحكم

أضف الرفع والمعاينات وعمليات الملفات المدققة إلى لوحات الإدارة في فترة بعد الظهر.

الميزات

كل ما يحتاجه مدير ملفات حديث

مصمم للمطورين الذين يحتاجون المرونة.

تخزين متعدد

محلي، AWS S3، Cloudflare R2, SFTP عبر Flysystem v3 — التبديل بالإعداد دون تغيير الكود.

تضمين في أي مكان

iframe + SDK postMessage. الواجهة المستقلة Alpine.js (بدون بناء). يعمل مع أي إطار.

مصادقة JWT + نطاقات

بادئة مسار لكل مستخدم، صلاحيات، قائمة أقراص، وضع المالك فقط.

وسم AI تلقائي

Claude / OpenAI vision — نص بديل وعنوان ووسوم تلقائية.

اقتصاص الصور

أداة اقتصاص مع نسب أبعاد مسبقة.

تحسين الصور

متغيرات WebP تلقائية — مصغّرة ومتوسطة وكبيرة.

رفع بتوقيع مسبق

المتصفح يرفع مباشرة إلى S3/R2 — صفر استهلاك على خادمك.

رفع مجزّأ

S3 multipart للملفات > 10 ميجابايت.

بحث نصي كامل

بحث مفهرس في الأسماء والعناوين والوسوم — قائم على الملفات، بلا قاعدة بيانات.

عمليات جماعية

تحديد متعدد للنقل والنسخ والحذف والتحميل.

نقل عبر الأقراص

نسخ/نقل بين محلي ↔ S3 ↔ R2.

سلة المحذوفات

حذف قابل للاسترداد مع تنظيف تلقائي.

بيانات SEO الوصفية

عنوان، alt، تعليق، وسوم — بيانات وصفية S3 (سحابة) أو JSON جانبي (محلي). بحث نصي كامل.

الوضع الداكن

فاتح / داكن / تلقائي في الواجهة وSDK.

16 لغة

الإنجليزية افتراضياً. عيّن اللغة عبر SDK أو URL (?locale=) أو FLUXFILES_LOCALE. RTL للعربية.

سجل التدقيق

جميع إجراءات الكتابة مسجّلة.

تحديد المعدل

Token bucket لكل مستخدم لحماية API.

حصة التخزين

حدود لكل مستخدم عبر JWT claims.

دلاء BYOB

المستخدمون يضيفون S3/R2 الخاص — بيانات الاعتماد مشفّرة في JWT (AES-256-GCM).

كشف التكرار

تطابق SHA-256 يتخطى الرفع الزائد ما لم يُفرض الاستبدال.

تجديد رمز SDK

onTokenRefresh عند 401 — تجديد مجمّع، إعادة محاولة، updateToken().

Bucket Doctor

شخّص أي قرص S3/R2 — بيانات الاعتماد، القراءة/الكتابة/الحذف، presign، CORS، multipart — مع إصلاحات IAM وCORS جاهزة للّصق. أضِف حاويات BYOB في دقائق.

Node token SDK

أصدر رموز FluxFiles من أي خادم JS (Express أو Next.js أو Nuxt) عبر @fluxfiles/node — متوافق بايتيًا مع نواة PHP. لا حاجة إلى PHP لإصدار الرموز.

قرص SFTP

محرّك ثالث بعد S3/R2 — حوّل أي VPS أو استضافة إلى مدير ملفات.

محرّر الكود / الإعدادات

حرّر الملفات النصية والإعدادات (wp-config.php، .env) من المتصفح بأسلوب cPanel.

ضغط وفك ضغط

نزّل تحديدًا كملف zip أو استخرج أرشيفًا — محمي ضد zip-slip والقنابل.

علامة مائية

أضف علامة مائية نصية أو شعارًا فوريًا لحماية المعاينة — دون المساس بالأصل.

WebP + AVIF عند الطلب

قدّم أي حجم صورة كـ AVIF/WebP مخزّن مؤقتاً عبر رابط واحد (متفاوَض عبر Accept)، مع srcset متجاوب جاهز.

أذونات SFTP

غيّر أذونات يونكس (chmod) على أقراص SFTP عبر نافذة بأسلوب cPanel.

لوحة الاستخدام

اطّلع على التخزين بنظرة — الحصة مع تفصيل حسب النوع والمجلد.

معاينة الوسائط

معاينة مدمجة للصور والفيديو والصوت وPDF؛ بث آمن للوسائط المحلية الخاصة.

تثبيت سريع

جاهز خلال دقيقتين

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=

يعمل مع

Laravel WordPress React / Next.js Vue / Nuxt CKEditor 4 TinyMCE Summernote Any framework

عمليات الدمج

محوّلات جاهزة للعمل مع منظومتك التقنية

تدمج المحوّلات الرسمية FluxFiles بشكل أصلي في أطر العمل والمحررات التي تستخدمها بالفعل.

Laravel
PHP
WordPress
Plugin
React
Component
Vue / Nuxt
Component
CKEditor 4
Plugin
TinyMCE
Plugin
Summernote
Plugin

التضمين

ضمّنه في بضعة أسطر

حمّل fluxfiles.js ومرّر رمز JWT صادرًا من الخادم، لتضع مدير ملفات كاملاً — أو نافذة اختيار ملفات — داخل أي صفحة.

<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)}
    />
  );
}

تُصدَر الرموز من جهة الخادم — لا تُرسل المفتاح السري إلى المتصفح أبدًا.

لماذا FluxFiles

مصمم لما نسيه الآخرون

اسحب للمقارنة
الميزة FluxFiles elFinder Laravel-FM RichFilemanager Responsive FM
S3 + R2 + محلي + SFTP
تضمين في أي إطار عمل
مصادقة JWT + نطاقات
بيانات SEO الوصفية
وسم AI تلقائي
اقتصاص الصور
رفع مجزّأ
بحث نصي كامل
الوضع الداكن
16 لغة
PHP ≥ 8.1
صيانة نشطة
واجهة حديثة
مقابل خدمات file-API

مُستضاف ذاتيًا وقابل للتضمين — وليس مجرد خدمة رفع أخرى

واجهات الملفات المُستضافة رائعة، لكنها تخزّن بياناتك وتحاسبك حسب الاستخدام. يعمل FluxFiles ضمن بنيتك، وكل مستأجر على حاويته الخاصة.

اسحب للمقارنة
القدرة FluxFiles Filestack Uploadcare Cloudinary Supabase Storage
مُستضاف ذاتيًا (يعمل في بنيتك)
BYOB — حاوية خاصة لكل عميل
واجهة مدير ملفات قابلة للتضمين
مفتوح المصدر (MIT)
بلا رسوم SaaS لكل تخزين / لكل رفع
تخزين متعدد (S3 / R2 / محلي)
تحديد نطاق الرمز لكل مستأجر مدمج

تعكس المقارنة العروض الافتراضية المعتادة؛ كل منتج يتفوّق في مجاله. تخصّص FluxFiles هو الجمع بين القابلية للتضمين والاستضافة الذاتية وإحضار حاويتك الخاصة.

منتجات قابلة للبيع

أكثر من إدارة الملفات — بِعها واستقبلها

النواة المجانية تُضمِّن مدير ملفات. الوحدات المدفوعة تحوّله إلى منتجات يدفع مقابلها عملاؤك.

Pro

Branded Share

أرسل رابطاً ذاتي الخدمة بعلامتك إلى أي ملف أو مجلد — بانتهاء وكلمة مرور وحد تنزيل وتحليلات مشاهدة. شعارك، نطاقك.

  • روابط منتهية / محمية بكلمة مرور
  • حدود تنزيل + تحليلات مشاهدة
  • رمز مقيّد — لا حساب للمستلم
Pro

Upload Portals

صفحة عامة «أرسل لنا ملفاتك» تصل مباشرة إلى تخزينك. مثالية للوكالات والمصورين وإعداد العملاء — لا حساب لمن يرفع.

  • بوابة عامة → مخزنك
  • حدود الحجم / النوع / الانتهاء لكل بوابة
  • رفع مجهول، مقيّد بالمالك
Enterprise

Compliance bundle

فحص الفيروسات، مصدر محتوى C2PA وحفظ التدقيق — لعمليات النشر المنظَّمة والمؤسسية.

WordPress

إضافة واحدة بدل ثلاث

في WordPress، FluxFiles هو بوابة ملفات للعملاء ومدير وسائط معاً — يستبدل إضافات المجلدات والسحابة والإخلاء المنفصلة.

القدرة FluxFiles FileBird WP Media Folder WP Offload
مجلدات الوسائط
تخزين S3 / R2 / SFTP
إخلاء + إعادة كتابة الروابط
بوابات رفع العملاء
روابط مشاركة بعلامة
السعر المعتاد ترخيص واحد $49/سنة $69/سنة مدفوع

مجلدات + سحابة + إخلاء + بوابات عملاء في واحد — بدلاً من دفع FileBird وWP Media Folder وWP Offload بشكل منفصل.

الأسعار

النواة مجانية. ادفع فقط مقابل الوحدات المدفوعة.

نواة MIT مجانية للأبد. ترقَّ إلى المنتجَين الرئيسيَّين — المشاركة ذات العلامة + بوابات الرفع — وأكثر.

مجاني (النواة)

$0 للأبد

مدير ملفات MIT الكامل، مستضاف ذاتياً.

ابدأ
  • تخزين Local / S3 / R2 / SFTP، نطاق JWT
  • WebP + AVIF عند الطلب + تحسين الصور/PDF
  • علامة مائية، خطاف الإصدارات، لوحة الاستخدام، وسم آلي بالذكاء الاصطناعي
  • 7 محولات + BYO-embed طرفية / PDF / office / توقيع إلكتروني
الأكثر شيوعاً

Pro

$79 /سنة

أرسل واستقبل الملفات مع عملائك.

قريباًقريباً
  • كل ما في المجاني
  • المشاركة ذات العلامة — روابط بانتهاء / كلمة مرور / حد / تحليلات
  • بوابات الرفع — «أرسل لنا ملفات» عامة، بلا حساب
  • دعم أولوية + تحديثات

Studio

$299 /سنة

ابنِ منتجاً على FluxFiles.

قريباًقريباً
  • كل ما في Pro
  • إدارة الإصدارات + Webhooks (Zapier/Make/n8n)
  • رؤية الذكاء الاصطناعي + OCR (مفتاحك)
  • طبقات متعددة المستأجرين + علامة بيضاء

Enterprise

مخصص

الامتثال، على نطاق واسع.

تواصل مع المبيعات
  • كل ما في Studio
  • فحص الفيروسات + مصدر C2PA + حفظ التدقيق
  • جسر SSO + إعداد مخصص
  • SLA + خارطة طريق ذات أولوية

سعر ثابت، مواقع غير محدودة — بلا فوترة لكل ملف/طلب. السنوي يوفّر ~شهرين؛ يتوفر خيار مدى الحياة. استرداد خلال 14 يوماً. ضريبة المشتري تُعالَج عند الدفع.

الأسئلة الشائعة

الأسئلة المتكررة

هل FluxFiles مجاني ومفتوح المصدر؟
نعم — برخصة MIT، استضافة ذاتية مجانية، ومنشور على Composer و npm. لا فئات مدفوعة ولا حدود للاستخدام.
أين تُخزَّن ملفاتي؟
حيثما توجّهه: قرص محلي، أو AWS S3، أو Cloudflare R2، أو خادم بعيد عبر SFTP، كل ذلك عبر Flysystem. التخزين ملكك — لا شيء يمر عبر طرف ثالث.
كيف تعمل المصادقة؟
رمز JWT عديم الحالة (HS256): تُصدر الرمز من الخادم بمطالبات دقيقة (الصلاحيات، الأقراص، نطاق المسار، الحدود)، فلا يرى كل مستخدم إلا ما تسمح به.
هل يحتاج مستخدموي إلى حساب FluxFiles؟
لا. يثق FluxFiles برمز JWT الصادر من تطبيقك، فيتكامل مباشرة مع مصادقتك الحالية — دون نظام مستخدمين منفصل.
هل يمكنني تضمينه في تطبيقي أو محرّري الحالي؟
نعم — يعمل iframe و JS SDK في أي صفحة، مع محوّلات رسمية لـ Laravel و WordPress و React و Vue/Nuxt و CKEditor 4 و TinyMCE و Summernote.
ماذا أحتاج لتشغيله؟
PHP 8.1+ مع بعض الإضافات الشائعة و Composer. وجّهه إلى قرص، وعيّن مفتاحًا سريًا والمصادر المسموح بها، ثم شغّله — يعمل على VPS صغير.
ماذا تتضمن الباقات المدفوعة؟
النواة مجانية (MIT). الباقات المدفوعة تفتح وحدات البوابات: المشاركة ذات العلامة (روابط منتهية/بكلمة مرور) وبوابات الرفع («أرسل لنا ملفات» العامة)، إضافة إلى إدارة الإصدارات وWebhooks ورؤية الذكاء الاصطناعي/OCR وحزمة امتثال في الباقات الأعلى.
كيف أفعّل الترخيص؟
بعد الشراء تحصل على مفتاح ترخيص. عيّن FLUXFILES_LICENSE_KEY في بيئتك فتُفتح الوحدات — تحقق دون اتصال (بلا phone-home)، فيعمل حتى في البيئات المعزولة.
دفعة واحدة أم اشتراك؟
كلاهما. شهري لبداية بلا التزام، سنوي للتوفير (~شهران مجاناً)، أو مدى الحياة بدفعة واحدة. الترخيص المنتهي يواصل تشغيل نسختك؛ تتوقف التحديثات/الدعم فقط.

هل أنت مستعد لتضمين FluxFiles؟

أضف مدير ملفات جاهزًا للإنتاج إلى تطبيقك في دقائق — دون الارتباط بأي إطار عمل، وبرخصة MIT.