Storage
Storage settings live at Admin → Storage. All changes take effect immediately without a server restart.
Upload settings
Section titled “Upload settings”Max file size
Section titled “Max file size”The per-file size limit that applies to all uploads. Range: 1–100 MB. Default: 5 MB.
Max image width
Section titled “Max image width”Images wider than this value are resized on upload. The resizing happens during the WebP conversion step. Range: 400–4000px. Default: 1200px.
This setting applies to post images and general uploads. Some upload types have fixed maximums regardless of this setting:
| Upload type | Max width |
|---|---|
| Avatars | 400px (always) |
| Logos | 400px (always) |
| Cover images | 1920px (always) |
| Post images | Configurable (this setting) |
Convert to WebP
Section titled “Convert to WebP”When enabled, Nexus converts uploaded images to WebP format. The original file is kept alongside the WebP version. GIFs are never converted (to preserve animation). SVG files are never converted.
Default: enabled.
WebP quality
Section titled “WebP quality”The quality level used when encoding WebP images. Range: 50–100. Default: 85. Only shown when Convert to WebP is enabled.
Allowed file types
Section titled “Allowed file types”| Upload category | Allowed types |
|---|---|
| Post images, avatars, covers | JPEG, PNG, GIF, WebP |
| Logo, favicon | ICO, PNG, SVG, WebP |
| OG image | JPEG, PNG, WebP |
SVG is excluded from post images and avatars because it can carry embedded scripts.
Storage backend
Section titled “Storage backend”Nexus supports two storage backends: local filesystem (default) and S3-compatible object storage. The backend is configured from Admin → Storage → Object storage.
Local filesystem (default)
Section titled “Local filesystem (default)”All uploaded files are stored inside the Docker container’s bind-mounted volume at /opt/nexus-data/uploads on the host. This directory persists across container rebuilds and updates.
uploads/ posts/ post images avatars/ user profile pictures covers/ user profile cover images logos/ site logo, favicon, OG image webp/ WebP-converted versions extensions/ <slug>/ files uploaded by each installed extensionS3 / Cloudflare R2
Section titled “S3 / Cloudflare R2”When enabled, all new uploads are PUT to an S3-compatible bucket instead of local disk. Existing local uploads are not migrated automatically — only files uploaded after enabling S3 go to the bucket.
To configure, enable Enable S3 / R2 storage and fill in the fields:
| Field | Notes |
|---|---|
| Bucket name | The name of your S3 or R2 bucket |
| Region | AWS region (e.g. us-east-1) or auto for Cloudflare R2 |
| Access key ID | Your S3 or R2 access key ID |
| Secret access key | Your S3 or R2 secret access key |
| Custom endpoint | For R2 and S3-compatible services: your account endpoint, e.g. abc123.r2.cloudflarestorage.com. Leave blank for standard AWS S3. |
| Public URL base | The public URL used to serve uploaded files. For R2 with a custom domain: https://cdn.example.com. For R2 public buckets: https://pub-abc123.r2.dev. No trailing slash. |
Setting up Cloudflare R2
Section titled “Setting up Cloudflare R2”- In the Cloudflare dashboard, go to R2 → Create bucket
- Create an API token with Object Read & Write permissions for the bucket
- Copy the Access Key ID and Secret Access Key from the token
- The endpoint is your account ID followed by
.r2.cloudflarestorage.com - For public access, either connect a custom domain to the bucket or enable the R2.dev public URL
Setting up AWS S3
Section titled “Setting up AWS S3”- Create an S3 bucket with public read access (or a CloudFront distribution)
- Create an IAM user with
s3:PutObject,s3:DeleteObject, ands3:GetObjectpermissions on the bucket - Leave Custom endpoint blank — Nexus derives the AWS endpoint from the region automatically
- Set Public URL base to your bucket’s public URL or CloudFront distribution URL
Storage usage
Section titled “Storage usage”The Storage usage panel at the bottom of Admin → Storage shows a live breakdown of stored files by type — count and total bytes for post images, avatars, logos, and favicons.
Managing uploads
Section titled “Managing uploads”The All uploads table at Admin → Storage lists every uploaded file with its type, size, dimensions, uploader, and upload date. You can filter by type and delete individual files. Deleting removes both the original and its WebP version and the database record. Files referenced in existing posts will appear as broken images after deletion.