S3 互換ストレージのためのオープンソースなファイルホスティング。
Cloudflare Workers または Docker にデプロイ。オブジェクトストレージへ直接アップロード。
English · 简体中文 · 日本語 · 한국어 · Русский · Español · Português (BR)
ZPan は、S3 互換ストレージの上に構築された軽量なファイルホスティングプラットフォームです。ファイルは presigned URL を通じてクライアントから S3 へ直接アップロードされ、サーバーの帯域幅を完全に経由しません。サーバーはコントロールプレーンとして、認証、メタデータ、共有、クォータ、チーム、WebDAV、ツール連携、管理操作を担います。
製品としての境界は意図的に定めています。ZPan は S3 をバックエンドとする目的特化型のウェブドライブであり、あらゆるコンシューマー向けクラウドドライブをラップするものでも、フル機能のグループウェアスイートでもありません。あなたが S3 互換バケットを用意すれば、ZPan はそこに洗練されたウェブ UI、公開共有、画像ホスティング API、そして VPS や NAS を必要としないデプロイ手段を提供します。
主なユースケース:
- S3 ウェブドライブ — 自分のオブジェクトストレージ上で、ファイル、フォルダ、プレビュー、ゴミ箱、クォータ、チームワークスペースを管理
- 画像ホスティング — PicGo、PicList、uPic、ShareX、Flameshot、または API 経由でアップロードし、安定した URL を即座に取得
- ファイル共有 — パスワード、有効期限、ダウンロード回数制限、ダイレクトリンク、ドライブへの保存フローを備えた共有リンクを公開
- 個人ホームページ — 各ユーザーに、厳選した共有ファイルとフォルダ形式のブラウジングが可能な公開ページ
/u/usernameを提供 - 外部アクセス — WebDAV 経由でファイルをマウントし、リモートダウンロードワークフロー向けにダウンローダーワーカーを実行
設計として S3 のみ。 ZPan はあらゆるネットディスクプロバイダーを追いかけたり、クラウドドライブのネスト層を構築したりはしません。ストレージの契約はシンプルで永続的なものに保たれます。Cloudflare R2、AWS S3、Backblaze B2、MinIO、RustFS、Tigris、その他の S3 互換サービスといった S3 互換バケットです。
Cloudflare Workers ファースト。 ZPan は Cloudflare Workers、D1、Hono、そして Web 標準 API を中心に構築されており、Docker やその他のランタイムを追加のデプロイ先としています。VPS を所有したり、NAS を稼働させ続けたり、長時間稼働するサーバーを介してアップロードをプロキシしたりすることなく、本格的なファイルホスティングのコントロールプレーンを運用できます。
ダイレクトな転送経路。 アップロードとダウンロードは可能な限り presigned なオブジェクトストレージ URL を使用します。これによりサーバーの帯域幅を抑え、中央集約的なファイル転送のボトルネックを回避し、重い処理をオブジェクトストレージに任せられます。
実用的なファイルワークフロー。 ZPan は、ウェブファイルマネージャー、公開共有、画像ホスティング設定、API キー、WebDAV アクセス、チーム、クォータ、リモートダウンロードタスク、ファイルプレビュー、管理コントロールを備えており、プロバイダー集約型プラットフォームへと変貌することはありません。
デプロイ可能なダウンローダーワーカー。 リモートダウンロードは、必ずしも ZPan 本体のインスタンス内で実行する必要はありません。シンプルな構成のために ZPan と一緒にダウンローダーをデプロイすることも、ネットワークアクセスが良好でソースサイトの制限が少ない環境に別途配置することもでき、その後 ZPan に完了したファイルをオブジェクトストレージへ取り込ませることができます。
ZPan は次のようなニーズに適しています:
- ストレージプロバイダーの寄せ集めではなく、S3 をバックエンドとする目的特化型のウェブドライブが欲しい
- 自分自身のバケットを使った、セルフホスト型の画像ベッドとファイル共有アプリが欲しい
- VPS や NAS を維持せずに Cloudflare ネイティブなデプロイがしたい
- アプリサーバーによるファイルプロキシではなく、ブラウザから S3 への転送がしたい
- スクリーンショット、公開、WebDAV、リモートダウンロード、API 駆動ワークフローのためのツール連携が欲しい
ZPan が目指していないもの:
- Nextcloud Office のようなリアルタイムドキュメント共同編集スイート
- AList のような汎用クラウドドライブアグリゲーター
- File Browser のようなローカルサーバーディレクトリブラウザ
ほとんどのセルフホスト型ファイルプロジェクトは、サーバーファイル、デスクトップ同期、コラボレーション、あるいは多数のプロバイダー集約のいずれかから出発します。ZPan は S3 互換オブジェクトストレージと、Cloudflare Workers に適したコントロールプレーンから出発します。
| 機能 | ZPan | Cloudreve | AList | Nextcloud | Seafile | File Browser |
|---|---|---|---|---|---|---|
| S3 バックエンドへの製品的注力 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| S3 互換ストレージバックエンド | ✅ | ✅ | ✅ | ✅ | ❌ | |
| ブラウザからオブジェクトストレージへの直接経路 | ✅ | ❌ | ❌ | ❌ | ||
| Cloudflare Workers へのデプロイ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| VPS/NAS 不要 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| PicGo/ShareX 画像ホスティングワークフロー | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ユーザーごとの公開ファイルホームページ | ✅ | ❌ | ||||
| リモートダウンロードワークフロー | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 個別にデプロイ可能なダウンローダー/ノード | ✅ | ✅ | ❌ | ❌ | ❌ | |
| 複数ネットディスクの集約 | ❌ | ❌ | ✅ | ❌ | ❌ | |
| サーバーのローカルディレクトリを主なファイルルートとする | ❌ | ❌ | ✅ | |||
| リアルタイムドキュメント共同編集 | ❌ | ❌ | ❌ | ✅ | ❌ | |
| 専用同期クライアント | 予定 | ❌ | ❌ | ✅ | ✅ | ❌ |
| チーム/ワークスペースモデル | ✅ | ❌ | ✅ | ✅ | ❌ | |
| WebDAV アクセス | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 共有リンク | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Docker デプロイ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
凡例:✅ 第一級または中核となる機能;
サーバー管理なしで GitHub Actions 経由でデプロイ。無料枠で個人利用をカバーします。
- このリポジトリを Fork する
- フォーク先で Settings → Secrets and variables → Actions に移動し、以下を追加:
CLOUDFLARE_ACCOUNT_ID— Cloudflare ダッシュボードのサイドバーで確認できますCLOUDFLARE_API_TOKEN— Workers Scripts:Edit、D1:Edit、R2 Storage:Edit の権限を付与してこちらで作成します(アバター/ロゴ用バケットの自動プロビジョニングに R2 スコープが必要です)
- Actions タブに移動し、Deploy to Cloudflare Workers を選択して Run workflow をクリック
初回セットアップ後は、フォークを最新リリースと同期するたびにワークフローが自動的に実行されます。
SAM を使って GitHub Actions 経由でデプロイ。Lambda Function URL が API Gateway なしで HTTPS を提供します。
- このリポジトリを Fork する
- フォーク先で Settings → Secrets and variables → Actions に移動し、以下を追加:
TURSO_DATABASE_URLとTURSO_AUTH_TOKEN— Turso から取得(無料、クレジットカード不要)AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION
- Actions タブに移動し、Deploy to AWS Lambda を選択して Run workflow をクリック
完全なセットアップ手順と IAM 権限については docs/deploy/aws-lambda.md を参照してください。
クイックスタート — ビルド済みイメージをプルし、自分の S3 ストレージを用意します:
curl -O https://raw.githubusercontent.com/saltbo/zpan/main/deploy/docker-compose.yml
docker compose up -dRustFS を使う場合(セルフホスト型の S3 互換ストレージ、外部依存なし):
curl -O https://raw.githubusercontent.com/saltbo/zpan/main/deploy/docker-compose.rustfs.yml
docker compose -f docker-compose.rustfs.yml up -d起動後:
- RustFS コンソール
http://localhost:9001(admin / admin123)を開き、バケット(例:zpan-bucket)を作成する - ZPan
http://localhost:8222を開き、ユーザーを登録する(最初のユーザーが管理者ロールを取得します) - Admin → Storage に移動し、RustFS ストレージを追加する:
- Endpoint:
http://localhost:9000(Docker 内部のホスト名ではなく、ブラウザから到達可能である必要があります) - Bucket:ステップ 1 で作成したバケット名
- Region:
us-east-1 - Access Key / Secret Key:
admin/admin123
- Endpoint:
重要: ファイルは presigned URL 経由で S3 へ直接アップロードされるため、ストレージのエンドポイントはクライアントのブラウザからアクセス可能である必要があります。ローカル開発では
http://localhost:9000を、本番環境ではサーバーの公開 URL を使用してください。
ZPan v1(Go 版)をお探しですか? v1 ブランチ を参照してください。
詳細は CONTRIBUTING.md を参照してください。
ZPan に貢献してくださったすべての皆さんに感謝します!
ZPan は GNU Affero General Public License v3.0 の下で提供されます。詳細は LICENSE ファイルを参照してください。
