🪣

Filestash から S3 互換の Cloudflare R2 を操作してみる

に公開

概要

この記事では、セルフホスト可能なファイルマネージャーの Filestash を Mac で立ち上げ、S3 互換の Cloudflare R2 のバケットを操作してみます。

最終的にはこんな感じになります。

これは何?

Filestash

https://www.filestash.app/

https://github.com/mickael-kerjean/filestash

Filestash は、FTP、SFTP に加えて S3、Minio、Git などにも対応したファイルマネージャーです。

複数種類のストレージをまとめて管理できます。

様々な企業・組織での採用実績もあります。

MIT Media Lab:
https://www.media.mit.edu/posts/file-sharing/
バイオテクノロジー企業:
https://aws.amazon.com/blogs/storage/how-regeneron-built-a-secure-and-scalable-file-transfer-service-using-aws-transfer-family/

ウクライナ国防省 (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://developers.cloudflare.com/r2/api/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 現在)

https://github.com/mickael-kerjean/filestash/blob/c06e8f0a220ae2c4e6fd03dd808e69ff1beee4c2/docker/Dockerfile

この Dockerfile を保存し、docker-compose.yml を修正します。

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