Skip to content

Storage Quotas

OxiCloud supports per-user storage quotas to limit disk usage.

Enabling Quotas

bash
OXICLOUD_ENABLE_USER_STORAGE_QUOTAS=true

How It Works

  1. Each user has a storage_quota field (in bytes, 0 = unlimited)
  2. On every file upload, the current usage is checked against the quota
  3. If the upload would exceed the quota, it's rejected with a 413 Payload Too Large error
  4. Admins can view and set quotas via the admin panel or API

Usage Calculation

The storage usage service recalculates logical usage from the user's home folder tree and sums file sizes recursively. Directory entries are skipped and the final value is written back to auth.users.storage_used.

API

MethodEndpointDescription
GET/api/admin/users/{id}/quotaGet user's quota and current usage
PUT/api/admin/users/{id}/quotaSet user's quota

Admin Panel

The admin panel (/admin.html) shows each user's current usage vs. quota with a visual progress bar.

The dashboard also exposes aggregate quota stats such as:

  • total quota bytes
  • total used bytes
  • overall storage usage percent
  • users above 80% usage
  • users over quota

Deduplication Interaction

Storage usage is calculated based on logical file size (what the user uploaded), not physical blob size. This means:

  • If two users upload the same 100 MB file, each user's quota is charged 100 MB
  • But on disk, only one 100 MB blob exists

This ensures fair quota accounting while maintaining dedup benefits.

Released under the MIT License.