feat(storage): add S3 backend support and advanced upload limits
- Introduce S3-compatible storage backend support using minio-go. - Add configuration options for local storage limits, box limits, and rate limiting. - Implement storage backend selection (local vs S3) for anonymous and registered users. - Add an `/admin/storage` management interface. - Update documentation and environment examples with the new configuration variables.
This commit is contained in:
20
README.md
20
README.md
@@ -22,6 +22,17 @@ Upload policy defaults are also configured in megabytes and can later be changed
|
||||
- `WARPBOX_USER_DAILY_UPLOAD_MB=8192`
|
||||
- `WARPBOX_DEFAULT_USER_STORAGE_MB=51200`
|
||||
- `WARPBOX_USAGE_RETENTION_DAYS=30`
|
||||
- `WARPBOX_LOCAL_STORAGE_MAX_GB=100`
|
||||
- `WARPBOX_ANONYMOUS_MAX_DAYS=30`
|
||||
- `WARPBOX_USER_MAX_DAYS=90`
|
||||
- `WARPBOX_ANONYMOUS_DAILY_BOXES=100`
|
||||
- `WARPBOX_USER_DAILY_BOXES=250`
|
||||
- `WARPBOX_ANONYMOUS_ACTIVE_BOXES=500`
|
||||
- `WARPBOX_USER_ACTIVE_BOXES=1000`
|
||||
- `WARPBOX_SHORT_WINDOW_REQUESTS=60`
|
||||
- `WARPBOX_SHORT_WINDOW_SECONDS=60`
|
||||
- `WARPBOX_ANONYMOUS_STORAGE_BACKEND=local`
|
||||
- `WARPBOX_USER_STORAGE_BACKEND=local`
|
||||
|
||||
Runtime data is configured with `WARPBOX_DATA_DIR` and defaults to `./data` in the dev environment.
|
||||
The dev script resolves that path from the repository root.
|
||||
@@ -126,6 +137,11 @@ from `examples/sharex/warpbox-anonymous.sxcu`; update `RequestURL` to match your
|
||||
- `/admin/settings` controls anonymous uploads, anonymous max upload size, daily upload caps, default
|
||||
user storage quota, and usage retention.
|
||||
- `/admin/users` shows storage/daily usage and lets admins set per-user storage quota overrides.
|
||||
- `/admin/storage` manages the built-in local file backend and S3-compatible bucket backends.
|
||||
- Upload limits now include daily bytes, daily box counts, active box counts, short-window request
|
||||
limits, max expiration days, local storage capacity in GB, and per-user policy overrides.
|
||||
- Uploaded file content, thumbnails, and private box metadata use the selected storage backend.
|
||||
The bbolt database and JSON logs remain local under `./data/db` and `./data/logs`.
|
||||
- Anonymous uploads, ShareX uploads, unlisted public box links, password protection, expiry, delete
|
||||
tokens, thumbnails, and cleanup continue to work as before.
|
||||
|
||||
@@ -136,8 +152,8 @@ support will power public forgot-password and optional email delivery.
|
||||
|
||||
Warpbox keeps local runtime data under the configured data directory:
|
||||
|
||||
- `data/files/{box_id}/@each@{file_id}.ext` - uploaded file contents.
|
||||
- `data/files/{box_id}/@thumb@{file_id}.jpg` - generated previews where available.
|
||||
- `data/files/{box_id}/@each@{file_id}.ext` - uploaded file contents when the local backend is selected.
|
||||
- `data/files/{box_id}/@thumb@{file_id}.jpg` - generated previews when the local backend is selected.
|
||||
- `data/db/warpbox.bbolt` - bbolt metadata database for boxes and file records.
|
||||
- `data/db/warpbox.bbolt` also stores users, sessions, invites, and collections.
|
||||
- `data/db/warpbox.bbolt` stores upload policy settings and daily usage records keyed by plain IP
|
||||
|
||||
Reference in New Issue
Block a user