Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions docs/admin/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,22 @@ RUSTCHAT_REDIS_URL=redis://localhost:6379/
| `RUSTCHAT_S3_REGION` | No | `us-east-1` | S3 region |
| `RUSTCHAT_S3_PUBLIC_URL` | No | - | Public URL for file access |

> **Private bucket by design**
>
> RustChat stores uploaded files in a **private** S3/RustFS bucket by default. Uploaded objects are not
> accessible via unsigned direct object-store URLs — attempting to fetch them without a valid signature or
> presigned URL should return a `403 Forbidden` response. This is intentional: access to files is mediated
> by RustChat, either through authenticated RustChat endpoints or through time-limited presigned URLs that
> RustChat generates after authorising the requester. This design keeps files scoped to their workspace and
> prevents unauthorised access.
>
> **Do not change the bucket to public.** Making the bucket public removes this protection and exposes all
> uploaded files — including attachments in private channels — to anyone who knows or guesses an object URL.
>
> If you need to serve files via a CDN or reverse-proxy, configure it to work with authenticated RustChat
> endpoints or RustChat-generated presigned URLs rather than bypassing RustChat by pointing directly at the
> object store.

### CORS

| Variable | Required | Default | Description |
Expand Down