> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formbase.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# File Storage

> Configure S3-compatible storage for file uploads.

Formbase stores uploaded files in an S3-compatible bucket and returns a signed URL for access. File uploads require storage configuration; text-only forms do not.

<Steps>
  <Step title="Local development with MinIO">
    ```ini theme={null}
    STORAGE_ENDPOINT=localhost
    STORAGE_PORT=9002
    STORAGE_USESSL=false
    STORAGE_ACCESS_KEY=formbase
    STORAGE_SECRET_KEY=password
    STORAGE_BUCKET=formbase
    ```

    These defaults match the Docker Compose file in the repo.
  </Step>

  <Step title="Production storage (R2 or S3)">
    ```ini theme={null}
    STORAGE_ENDPOINT=<account-id>.r2.cloudflarestorage.com
    STORAGE_PORT=443
    STORAGE_USESSL=true
    STORAGE_ACCESS_KEY=your-access-key
    STORAGE_SECRET_KEY=your-secret-key
    STORAGE_BUCKET=formbase
    ```

    Any S3-compatible provider works as long as the endpoint and credentials are correct.
  </Step>
</Steps>

<Callout type="note">
  Keep buckets private and rely on signed URLs if you need controlled access to uploads.
</Callout>
