v0.2 — オープンソース · MITライセンス

どこにでも埋め込めるファイルマネージャー

PHP ≥ 8.1 + Flysystem 3。Alpine.js UI。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 を1つのUIで
FluxFiles managing a remote VPS deploy directory over SFTP, same UI as the S3 bucket
SFTP でリモート VPS を管理 — 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
バケットドクター — 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・コンプライアンス・企業調達に最適。

  • 保存時はデータも認証情報もゼロ

    バケットの認証情報は JWT 内で AES-256-GCM 暗号化され、実行時のみ復号——データベースやログには一切書き込みません。

  • ストレージコストはゼロまでスケール

    ストレージと転送量は各顧客に課金され、あなたには課金されません。ユーザー増加で膨らむ請求はありません。

  • ステートレスで埋め込み可能

    中央データベース不要。iframe か SDK でピッカーを任意のアプリに埋め込み、あなたのバックエンドがスコープ付きの短命トークンを発行します。

あなたの SaaS アプリ
スコープ付き JWT(暗号化資格情報)
FluxFiles
実行時のみ復号
テナント A
自分のバケット
テナント B
自分のバケット
テナント C
自分のバケット

仕組み:アプリがテナントのバケット認証情報を短命の JWT(HKDF-SHA256 + AES-256-GCM)に暗号化。FluxFiles は要求された操作の実行時のみ復号します。

マルチテナント

テナントごとに1つのトークン — それぞれ独自のルール

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・マルチテナントアプリ

各顧客に自分のバケット上のファイルマネージャーを提供。テナント単位のトークン制限とデータ主権を標準装備。

代理店・フリーランス

プロジェクトごとにストレージ基盤を立てずに、洗練されたメディアライブラリを各クライアントへ。

CMS・エディタ連携

iframe SDK で CKEditor、TinyMCE、Summernote、または自作エディタにメディアピッカーを追加。

社内ツール・ダッシュボード

管理画面にアップロード・プレビュー・監査付きファイル操作を半日で追加。

機能

モダンなファイルマネージャーに必要なすべて

柔軟性を求める開発者のために構築。

マルチストレージ

ローカル、AWS S3、Cloudflare R2, SFTP — Flysystem v3経由。設定で切替、コード変更不要。

どこにでも埋め込み

iframe + postMessage SDK。スタンドアロンUIはAlpine.js(ビルド不要)。どのフレームワークでも可。

JWT認証 + スコーピング

ユーザーごとのパスプレフィックス、権限、ディスクホワイトリスト、owner-onlyモード。

AI自動タグ

Claude / OpenAI vision — altテキスト、タイトル、タグを自動生成。

画像クロップ

アスペクト比プリセット付きインラインクロップツール。

画像最適化

WebPバリアント自動生成 — サムネイル、中、大。

署名付きアップロード

ブラウザからS3/R2に直接アップロード — サーバー帯域ゼロ。

チャンクアップロード

10MB超ファイル向けS3マルチパート。

全文検索

ファイル名・タイトル・タグを索引検索 — ファイルベースでデータベース不要。

一括操作

複数選択して移動、コピー、削除、ダウンロード。

クロスディスク転送

ローカル ↔ S3 ↔ R2間のコピー/移動。

ゴミ箱

復元可能な削除、自動パージ。

SEOメタデータ

タイトル、alt、キャプション、タグ — クラウドはS3オブジェクトメタデータ、ローカルはsidecar JSON。全文検索。

ダークモード

UIとSDKでライト/ダーク/自動。

16言語

デフォルトは英語。SDK、URL (?locale=)、またはFLUXFILES_LOCALEで指定。アラビア語はRTL。

監査ログ

すべての書き込み操作を記録。

レート制限

ユーザーごとのトークンバケット。

ストレージクォータ

JWTクレームによるユーザーごとの制限。

BYOBバケット

ユーザー自身のS3/R2 — 認証情報はJWT内で暗号化(AES-256-GCM)。

重複検出

SHA-256一致で冗長アップロードをスキップ(強制上書き除く)。

SDKトークン更新

401時にonTokenRefresh — 更新の集約、再試行、updateToken()で事前更新。

バケットドクター

任意の S3/R2 ディスクを診断——認証情報、読み/書き/削除、署名付き URL、CORS、マルチパート——貼り付けるだけの IAM・CORS 修正付き。BYOB バケットを数分で導入。

Node トークン SDK

@fluxfiles/node で任意の JS バックエンド(Express、Next.js、Nuxt)から FluxFiles トークンを発行——PHP コアとバイト互換。トークン発行に PHP 不要。

SFTP ディスク

S3/R2 に次ぐ3つ目のドライバー。あらゆる VPS や共有ホストをファイル管理に。

コード / 設定エディタ

設定・テキストファイル(wp-config.php、.env など)をブラウザで編集(cPanel風)。

Zip と展開

選択をzipでダウンロード、またはその場で展開。zip-slip・爆弾対策済み。

ウォーターマーク

プレビュー保護のため文字やロゴの透かしを動的に付与。元ファイルは無変更。

オンデマンド WebP + AVIF

1つの URL で任意サイズの画像をキャッシュ済み AVIF/WebP として配信(Accept ネゴシエーション)、レスポンシブ srcset 付き。

SFTP 権限

cPanel風ダイアログでSFTPディスクのUnix権限(chmod)を変更。

使用状況ダッシュボード

ストレージを一目で把握。容量に加え、種類別・フォルダ別の内訳。

メディアプレビュー

画像・動画・音声・PDFをインライン表示。非公開ローカルメディアも安全に配信。

クイックインストール

2分で起動

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 + Local + SFTP
あらゆるフレームワークに埋め込み
JWT認証 + スコーピング
SEOメタデータ
AI自動タグ
画像クロップ
チャンクアップロード
全文検索
ダークモード
16言語
PHP ≥ 8.1
積極的にメンテナンス中
モダンUI
ファイル API SaaS との比較

セルフホストで埋め込み可能——もう一つのアップロード SaaS ではない

ホスト型ファイル API も優れていますが、データを保存し従量課金です。FluxFiles はあなたのスタックで動作し、各テナントが自分のバケットを使います。

スワイプで比較
機能 FluxFiles Filestack Uploadcare Cloudinary Supabase Storage
セルフホスト(自社インフラで動作)
BYOB——各顧客が自分のバケット
埋め込み可能なファイルマネージャー UI
オープンソース(MIT)
ストレージ/アップロード課金の SaaS 料金なし
マルチストレージ(S3 / R2 / ローカル)
テナント単位のトークンスコープを標準装備

比較は一般的なデフォルト提供内容を反映しています。各製品はそれぞれの領域で優れています。FluxFiles のニッチは、埋め込み可能・セルフホスト・自前バケットの組み合わせです。

販売可能な製品

ファイル管理だけでなく——送受信も

無料コアはファイルマネージャーを埋め込む。有料モジュールはそれをクライアントが対価を払う製品に変える。

Pro

Branded Share

任意のファイルやフォルダへ、ブランド付きのセルフサービスリンクを送信——有効期限、パスワード、ダウンロード上限、閲覧分析付き。あなたのロゴ、あなたのドメイン。

  • 有効期限/パスワード保護リンク
  • ダウンロード上限 + 閲覧分析
  • スコープ付きトークン——受信者はアカウント不要
Pro

Upload Portals

公開の「ファイルを送って」ページがそのままストレージへ。代理店、写真家、クライアント導入に最適——アップロード者はアカウント不要。

  • 公開ポータル → あなたのバケット
  • ポータルごとのサイズ/種類/期限制限
  • 匿名アップロード、所有者スコープ
Enterprise

Compliance bundle

ウイルススキャン、C2PA コンテンツ来歴、監査保持——規制対象・エンタープライズ向け。

WordPress

3つの代わりに1つのプラグイン

WordPress では、FluxFiles はクライアントファイルポータルであり、メディアマネージャーでもある——個別のフォルダ・クラウド・オフロードプラグインを置き換える。

機能 FluxFiles FileBird WP Media Folder WP Offload
メディアフォルダ
S3 / R2 / SFTP ストレージ
オフロード + URL 書き換え
クライアントアップロードポータル
ブランド共有リンク
一般的な価格 1ライセンス $49/年 $69/年 有料

フォルダ + クラウド + オフロード + クライアントポータルを1つに——FileBird と WP Media Folder と WP Offload を別々に買う代わりに。

料金

コアは無料。有料モジュールにだけ課金。

MIT コアは永久無料。2つの主力製品——ブランド共有 + アップロードポータル——とその先へアップグレード。

無料(コア)

$0 永久

完全な MIT ファイルマネージャー、セルフホスト。

はじめる
  • Local / S3 / R2 / SFTP ストレージ、JWTスコープ
  • オンデマンド WebP + AVIF + 画像/PDF 最適化
  • 透かし、バージョンフック、使用状況ダッシュボード、AI自動タグ
  • 7つのアダプター + BYO-embed ターミナル / PDF / office / 電子署名
人気

Pro

$79 /年

クライアントとファイルを送受信。

近日公開近日公開
  • 無料版のすべて
  • ブランド共有——有効期限/パスワード/上限/分析付きリンク
  • アップロードポータル——公開の「ファイルを送って」、アカウント不要
  • 優先サポート + アップデート

Studio

$299 /年

FluxFiles 上で製品を構築。

近日公開近日公開
  • Pro のすべて
  • バージョン管理 + Webhooks(Zapier/Make/n8n)
  • AI ビジョン + OCR(自前キー)
  • マルチテナント権限階層 + ホワイトラベル

Enterprise

カスタム

コンプライアンス、大規模に。

営業に問い合わせ
  • Studio のすべて
  • ウイルススキャン + C2PA 来歴 + 監査保持
  • SSO ブリッジ + カスタム導入
  • SLA + 優先ロードマップ

定額・サイト無制限——ファイル/呼び出し課金なし。年額は約2か月分お得。買い切りも可能。14日間返金。購入者側のVATは決済時に処理。

FAQ

よくある質問

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、AIビジョン/OCR、コンプライアンス一式も。
ライセンスの有効化方法は?
購入後にライセンスキーを受け取ります。環境に FLUXFILES_LICENSE_KEY を設定すると有料モジュールが解放——オフライン検証(通信なし)でエアギャップ環境でも動作。
買い切りかサブスクか?
どちらも。低コミットで始める月額、お得な年額(約2か月無料)、または買い切りの永久版。期限切れでも現行バージョンは動作し続け、更新/サポートのみ停止。

FluxFiles を組み込む準備はできましたか?

本番対応のファイルマネージャーを数分でアプリに追加。フレームワークに縛られず、MIT ライセンス。