オーディオブックをS3互換ストレージに保存
2026年10月27日更新
Berthは、サーバーのディスクの代わりに任意のS3互換バケットに書籍を保存できます。サーバーはライブラリを管理し、誰が聴けるかを決めます。音声そのものは、バケットやCDNからスマートフォンへ直接届けられます。
オブジェクトストレージを使う理由
- 小さなVPSやRaspberry Piに大きなディスクは不要です。
- スマートフォンはストレージから直接ダウンロードするので、サーバーの帯域がボトルネックになりません。
- データベースとそのバックアップは小さいままです。S3を使う場合、サーバーはデータベースの日次コピーをバケットにも保存できます。
対応プロバイダー
S3互換のサービスならどれでも使えます。管理画面には、エンドポイントとリージョンを自動入力するプリセットがあります:AWS S3、Cloudflare R2、Yandex Cloud、Backblaze B2、Bunny Storage、MinIO。Cloudflare R2には、バケットとキーを自動で作成するウィザードもあります。
バケットを接続
- プロバイダーのコンソールで、バケットと、そのバケットへの読み書き権限を持つアクセスキーを作成します。
- バケットにCORSルールを追加します:オリジンはBerthのアドレス、メソッドはGET、HEAD、PUT、ヘッダーは
*です。管理画面はブラウザからバケットへ直接ファイルをアップロードするため、このルールが必要です。 - Berthの管理画面でストレージの設定を開き、ストレージを追加して「S3バケット」を選び、プリセットを選ぶか各項目を自分で入力します。
- 名前、バケット、エンドポイント(AWSの場合は空欄)、リージョン(空欄なら
us-east-1)、アクセスキーID、シークレットアクセスキーを入力します。MinIOではパス形式のアドレスをオンにします。IPアドレスやlocalhostの場合は自動でオンになります。 - 「接続をチェック」を押します。Berthは小さなテストファイルを書き込み、読み戻して削除し、サーバーのアドレスからCORSを確認します。
- そのストレージをデフォルトにします。新しい書籍はデフォルトのストレージに保存されます。
キーはサーバーキーsecret.keyで暗号化して保存され、二度と表示されません。
音声がスマートフォンに届くまで
署名なしの場合、CDNの背後にあるファイルは期限のないリンクで開けます。ファイル名はSHA-256ハッシュなので推測はできませんが、デバイスの接続を取り消しても、そのデバイスがすでに持っているリンクは無効になりません。Bunny CDNのトークン認証を使うと、リンクは6時間で失効します。
| モード | 仕組み | 使いどころ |
|---|---|---|
| 直接リンク(デフォルト) | スマートフォンは15分間有効な、バケットへの署名付きリンクを受け取る | サーバーの負荷を減らせる |
| サーバー経由 | サーバーがファイルをストリーミングする。リンクは6時間有効で、デバイスの接続を取り消すとすぐに無効になる | スマートフォンがバケットにアクセスできない |
| CDN経由 | リンクはCDNまたはバケットの公開アドレスを指す | バケットにCDNがある場合に最速 |
知っておきたいこと
- 複数のストレージを同時に使えます。各書籍にはどのストレージにあるかが表示されます。
- 既存の書籍をストレージ間で移動する機能はまだありません。アップロードの前にデフォルトのストレージを選んでください。
- 書籍が入っているストレージは削除できません。プロファイルを削除しても、バケット内のファイルが削除されることはありません。
よくある質問
Berthにはバケットの公開アクセスが必要ですか?
いいえ。デフォルトのモードではバケットは非公開のままで、スマートフォンは15分で失効する署名付きリンクを受け取ります。
チェックで「バケットがブラウザからのアップロードを受け付けない」と表示されます。どうすればいいですか?
CORSルールを追加してください:オリジンはBerthのアドレス、メソッドはGET、HEAD、PUT、ヘッダーは*です。そのあと、もう一度チェックを実行します。