Sharkord
Administration

Storage & Uploads

Quotas, upload limits, signed URLs, and image optimization.

Uploaded files live on disk in the data directory, under public/. The Storage tab in the server settings controls who can upload, how much, and who can read the result. Changing these needs MANAGE_STORAGE.

The tab also shows current disk usage per user, and per plugin, which is the quickest way to find out where the space went.

Uploads

SettingDefaultRangeWhat it does
Allow uploadsonTurns uploading off entirely. Existing files stay reachable.
Allow file sharing in direct messagesonOnly applies while uploads are on. Does not affect files already sent.
Max file size2 GB1 MB to 2 GBLargest single file. Checked before the upload is accepted, and again after image optimization.
Max files per message100 to 20Extra attachments beyond the limit are ignored.
Max avatar size3 MBup to 50 MBApplies to profile avatars.
Max banner size3 MBup to 100 MBApplies to profile banners.
Your reverse proxy has an opinion too

Nginx rejects request bodies over 1 MB by default, which fails every upload long before Sharkord sees it. See the Nginx guide.

Quotas

SettingDefaultRangeWhat it does
Quota100 GB1 GB to 1 TBTotal storage the server will use.
Quota per userunlimited0 to 100 GBPer-user cap. 0 means unlimited.
Overflow actionPrevent new file uploadsWhat happens when the server quota is reached.

Overflow has two modes. Prevent new file uploads rejects the upload and tells the user. Delete old files deletes the oldest files to make room, which keeps the server writable at the cost of losing old attachments permanently.

A per-user quota can be overridden per role, which is how you give a trusted group more room. Enable the override on the role, set the amount, and remember that 0 on an override role means unlimited. When a user holds several override roles, the largest wins. See Roles and Permissions.

Plugin Storage

Plugins can attach files to the messages they send, and those files count against the server quota like any other upload. The Storage tab lists what each plugin has stored, with its file count and total size, largest first.

A plugin that has been removed still appears in that list, marked Uninstalled. Removing a plugin deletes its own folder, its data folder and its database rows, but the files it attached belong to the messages they are in, so they stay until those messages are deleted.

Signed URLs

Off by default. This is the single most important setting on this page for a private server.

Off: files are served from /public/<filename> to anyone who has the URL, with no login. Anyone who obtains a link, or guesses a filename, can read the file.

On: every file URL carries a signed token with an expiry, and the server refuses requests without a valid one. The clients get fresh tokens as they load content, so users notice nothing. The server logo is the only exception, since it has to render before anyone logs in.

The expiry is configurable from 30 minutes to 7 days, with a default of 1 hour. Shorter is safer; longer is friendlier to a link somebody pasted into another tab.

Image Optimization

Off by default. When on, uploaded JPEG, PNG, WebP, HEIC, and HEIF images are converted to WebP at the quality you choose, from 1 to 100, defaulting to 80.

The converted file replaces the original, and its extension changes to .webp. If conversion would make the file bigger, the original is kept instead. A failed conversion is logged and the original goes through unchanged. Non-image files and other formats, such as GIF and video, are untouched.

Quality is a size and detail trade-off. 80 is a reasonable default; below about 60 the artefacts start to show on screenshots and text.

Deleting Files

Deleting a message deletes the files attached to it, including files a plugin attached.

Deleting a user has two modes. The normal one keeps their messages and files, reassigning them to a placeholder account, so nothing is freed. The wipe mode removes their data along with the account. Storage freed either way shows up in the disk usage view immediately.

On this page