概要
はじめに
ストレージエンジンは、ローカルストレージ(サーバーのハードドライブに保存)やクラウドストレージなど、特定のサービスにファイルを保存するために使用されます。
ファイルをアップロードする前に、ストレージエンジンを設定する必要があります。システムインストール時にローカルストレージエンジンが自動的に追加され、すぐに使用できます。また、新しいエンジンを追加したり、既存のエンジンのパラメーターを編集したりすることも可能です。
ストレージエンジンの種類
現在、NocoBaseが組み込みでサポートしているストレージエンジンの種類は以下の通りです。
システムインストール時にローカルストレージエンジンが自動的に追加され、すぐに使用できます。新しいエンジンを追加したり、既存のエンジンのパラメーターを編集したりすることも可能です。
共通パラメーター
異なるエンジンの種類に固有のパラメーターに加えて、以下の項目は共通パラメーターです(例としてローカルストレージを使用します)。

タイトル
ストレージエンジンの名前です。人間が識別するために使用します。
システム名
ストレージエンジンのシステム名で、システムが識別するために使用します。システム内で一意である必要があります。空欄の場合、システムが自動的にランダムな名前を生成します。
アクセスURLプレフィックス
ファイルが外部からアクセス可能なURLアドレスのプレフィックス部分です。CDNのアクセスURLのベースとして使用できます。例:https://cdn.nocobase.com/app(末尾の「/」は不要です)。
パス
ファイルを保存する際に使用される相対パスです。アクセス時には、この部分も最終的なURLに自動的に追加されます。例:user/avatar(先頭と末尾の「/」は不要です)。
ファイルサイズ制限
このストレージエンジンにアップロードされるファイルのサイズ制限です。この設定サイズを超えるファイルはアップロードできません。システムのデフォルト制限は20MBですが、最大1GBまで調整可能です。
ファイルタイプ
アップロードできるファイルのタイプを制限できます。MIME 構文の記述形式を使用します。例えば、image/* は画像ファイルを表します。複数のタイプはカンマ(,)で区切ることができます。例:image/*, application/pdf は画像タイプとPDFタイプのファイルを許可することを意味します。
デフォルトストレージエンジン
チェックを入れると、システムのデフォルトストレージエンジンとして設定されます。添付ファイルフィールドまたはファイルコレクションがストレージエンジンを指定していない場合、アップロードされたファイルはすべてデフォルトストレージエンジンに保存されます。デフォルトストレージエンジンは削除できません。
レコード削除時にファイルを保持
チェックを入れると、添付ファイルまたはファイルコレクションのデータレコードが削除されても、ストレージエンジン内のアップロード済みファイルは保持されます。デフォルトではチェックが入っていません。つまり、レコードが削除されると、ストレージエンジン内のファイルも同時に削除されます。
「元の URL」を選択した場合、最終的なストレージアドレスはいくつかの部分を結合して構成されます。
例:https://cdn.nocobase.com/app/user/avatar/20240529115151.png。
「NocoBase URL」を選択した場合、ファイルレコードは /files/... 形式の NocoBase パスを返します。ストレージサービスへのアクセス時には、上記の設定が引き続き使用されます。
ファイル URL とアクセス制御
ストレージエンジンは、NocoBase URL またはストレージサービスの元の URL を返すことができます。デフォルトでは NocoBase URL が使用されます。外部サービスがストレージアドレスを直接使用する必要がある場合にのみ、元の URL を選択してください。
この設定はストレージエンジン単位で適用されます。保存すると、そのエンジンの既存ファイルと新しくアップロードされたファイルの両方が、選択した形式の URL を返します。ファイルの移動や再アップロードは行われません。

NocoBase URL
ファイルレコードは、NocoBase が提供するアクセスパスを返します。例:
この URL へのリクエストは最初に NocoBase を経由し、対応するファイルレコードに設定された閲覧権限に従います。権限チェックに成功した後で、NocoBase がファイルを読み取るか、ストレージサービスが生成したアドレスへリダイレクトします。
これは推奨されるデフォルト設定です。ファイルレコードは NocoBase パスを返すため、呼び出し側はローカルストレージとクラウドストレージのどちらが使用されているかを意識する必要がありません。
元の URL
ファイルレコードは、ストレージサービスが生成したアドレスを直接返します。例:
この URL はファイルレコードの閲覧権限をチェックしません。ローカルストレージでは通常、既存の /storage/uploads/ URL となり、デフォルトでログインは必要ですが、個別のファイルレコードは再チェックされません。クラウドストレージでは通常、アクセス方針を各サービスが制御するオブジェクトストレージまたは CDN のアドレスです。
呼び出し元が NocoBase URL を使用できない場合(たとえば、302 リダイレクトに追従できない場合や、オブジェクトストレージまたは CDN のアドレスが明示的に必要な場合)にのみ、元の URL を選択してください。
元の URL を選択すると、有効な URL を持つユーザーは NocoBase のファイルレコード権限を迂回できます。ローカルストレージの既存 URL には引き続き /storage/uploads/ のログインチェックが適用されますが、カスタム Nginx でアップロードディレクトリを直接公開すると、このチェックを迂回する可能性があります。クラウドストレージの URL に署名や有効期限がない場合は、Bucket とファイルが公開読み取りを許可していることを確認してください。
公開アクセスを許可
「公開アクセスを許可」は「NocoBase URL」を選択した場合にのみ有効です。チェックすると、ストレージエンジンは引き続き NocoBase URL を返しますが、アクセス時に NocoBase がファイルレコードの権限をチェックしなくなります。URL を持つすべてのユーザーがファイルにアクセスできます。
このオプションは、ストレージサービス自体の公開読み取り設定を変更しません。NocoBase がファイルレコードの権限をチェックするかどうかだけを制御します。
Markdown、外部ページ、サードパーティサービスでも、公開された NocoBase URL を使用できます。外部から使用する場合は、API が返すパスを NocoBase のドメインを含む絶対 URL に補完し、呼び出し元が 302 リダイレクトに追従できることを確認してください。
ローカルストレージの NocoBase URL は最終的に /storage/uploads/ へリダイレクトされます。「公開アクセスを許可」は /files/ 段階のファイルレコード権限を省略しますが、既存 URL はデフォルトで引き続きログインを必要とします。ローカルファイルを匿名で読み取れるようにするには、LEGACY_LOCAL_STORAGE_PUBLIC_ACCESS=true も設定してアプリケーションを再起動してください。この変数は選択したストレージだけでなく、既存の /storage/uploads/ パス全体を公開するため、有効化前に既存ファイルを確認してください。
カスタム Nginx を使用する場合は、/storage/uploads/ にも auth_request を設定してください。完全な設定は Nginx リバースプロキシを参照してください。
選択方法
ローカルストレージ、Amazon S3、Aliyun OSS、Tencent COS は一時署名 URL を生成しません。元のアドレスを取得したユーザーはファイルレコード権限を迂回できます。既存のローカル URL はデフォルトでログインを必要とし、クラウドストレージの元 URL へのアクセスはそのサービスの公開読み取り設定に依存します。
契約書、身分証明書、社内資料など公開すべきでないファイルには S3 Pro を使用し、専用のアクセス制御設定を参照してください。
公開ストレージエンジンをすでに使用していて、既存ファイルを S3 Pro に移行する場合は、S3 Pro への移行を参照してください。

