Filestash から S3 互換の Cloudflare R2 を操作してみる
概要
この記事では、セルフホスト可能なファイルマネージャーの Filestash を Mac で立ち上げ、S3 互換の Cloudflare R2 のバケットを操作してみます。
最終的にはこんな感じになります。
これは何?
Filestash
Filestash は、FTP、SFTP に加えて S3、Minio、Git などにも対応したファイルマネージャーです。
複数種類のストレージをまとめて管理できます。
様々な企業・組織での採用実績もあります。
MIT Media Lab:
バイオテクノロジー企業:ウクライナ国防省 (Filestash 公式でも紹介されてます):
> curl -D - https://file-stash.cidtd.mil.gov.ua/about
HTTP/2 200
...
x-powered-by: Filestash/v0.5.20220217 <https://filestash.app>
Cloudflare R2
「エグレス料金なしのグローバルなオブジェクトストレージ」です。
S3 API と互換性があります。
クレジットカードの登録などは必要ですが、無料枠も設定されています。
ハンズオン
それでは、早速試してみましょう。
公式手順: https://www.filestash.app/docs/install-and-upgrade/
1. Filestash 実行環境の準備
Docker, Docker Compose, curl があれば実行できます。
最小要件 によると RAM 128 MB, 1 コアがあれば動かせるそう。
2. Filestash のインストール
公式 Docker イメージ: machines/filestash - Docker Hub
Compose ファイルが用意されているため、ダウンロードして docker compose up -d
を実行すれば起動できます。
> mkdir filestash && cd filestash
> curl -O https://downloads.filestash.app/latest/docker-compose.yml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 980 0 980 0 0 766 0 --:--:-- 0:00:01 --:--:-- 766
> docker compose up -d
証明書エラーの対策 (2025/04/26 現在)
この Dockerfile を保存し、docker-compose.yml を修正します。
@@ -2,7 +2,8 @@
services:
app:
container_name: filestash
- image: machines/filestash:latest
+ build:
+ context: ./app
restart: always
environment:
- APPLICATION_URL=
ディレクトリ構成はこんな感じ
> tree .
.
├── app
│ └── Dockerfile
└── docker-compose.yml
2 directories, 2 files
もちろん docker compose up -d
はそのまま実行できます。
起動後、http://localhost:8334 にアクセスすると管理者パスワードの設定を求められます。
パスワードを設定後、Filestash の Admin Console (http://localhost:8334/admin/backend) にリダイレクトされます。
3. Cloudflare R2 のバケット作成
Cloudflare のダッシュボード から「R2 オブジェクト ストレージ」のページに移動し、バケットの作成ページを開きます。
画面遷移の詳細
ここでは filestash-bucket-example
という名前のバケットを作成します。バケットの名前は後で利用します。
4. Cloudflare の API トークンを作成
続いて「R2 オブジェクト ストレージ」のページから API トークンを作成します。
画面遷移の詳細
特定のバケットだけで操作できるよう設定します。設定内容は以下です。
- R2 Storage 権限タイプ:
オブジェクト読み取りと書き込み
- バケットの指定:
特定のバケットにのみ適用
>filestash-bucket-example
作成後に S3 クライアントで利用できる認証情報も表示されます。
この認証情報を Filestash で利用します。
5. Filestash での R2 への接続設定
まず Filestash の Admin Console (http://localhost:8334/admin/backend) を開きます。
「Storage Backend」で S3
を追加し、見分けやすいようバケット名 filestash-bucket-example
を設定します。
これだけでもログイン画面 (http://localhost:8334/login) から R2 の認証情報を打ち込めばアクセスできます。
ただしログインのたびに打ち込むのは手間なので、「Authentication Middleware」で R2 の認証情報を設定しておきます。
ここではパススルーの設定をしてみます。
なお、Path でバケットを設定する際は /
始まりにしてください。
S3 クライアントで利用できる認証情報 (再掲)
設定後、ログイン画面 (http://localhost:8334/login) からアクセスすると、ファイルマネージャーの画面 (http://localhost:8334/files/) にリダイレクトされます。
Google ドライブと同じような操作感で使うことができます。
ファイルのプレビュー
ファイルの削除
まとめ
この記事では、セルフホスト可能なファイルマネージャーの Filestash を Mac で立ち上げ、Cloudflare R2 のバケットを操作してみました。
Filestash は Nextcloud と比較すると、とにかく軽量で使い始めやすかったのが印象的でした。
この記事がどなたかのお役に立てば幸いです。
Discussion