Server settings
Attachments & media
Upload limits per media type, allowed formats, retention and signed-URL lifetimes.
Every kind of file users can send has its own policy. Message attachments are the broad one — avatars, logos and emojis are narrow image pipelines with per-type dimensions.
Message attachments
maxAttachmentSizeMb integerMaximum size of a single attachment; oversized uploads are rejected before transfer.
maxAttachmentsPerMessage integerHow many files one message can carry.
attachmentAllowedMimes listAllowed MIME types — checked server-side on the real content type, not the extension.
defaultAttachmentRetentionDays daysAttachments older than this are purged by the scheduler; purged files leave a placeholder, message text stays.
Shrinking size limits never deletes existing files — it only gates new uploads. Use retention to expire old ones.
Image pipelines
avatarMaxSizeMb / avatarMaxWidth / avatarMaxHeightUser avatars.
logoMaxSizeMb / logoMaxWidth / logoMaxHeightCommunity logos.
communityEmojiMaxSizeMb / …MaxWidth / …MaxHeight / …AllowedMimesCustom emojis — animated GIFs pass through unflattened.
Signed URLs
Files are never served from a public bucket — every link is signed and expiring:
| Setting | Governs |
|---|---|
mediaTokenTtlSeconds |
Attachments, avatars, logos |
communityEmojiTokenTtlSeconds |
Custom emoji images |
Longer TTL = browser caches work harder; shorter = a revoked member loses
media access sooner. Emoji URLs use bucketed signing so timelines full of
:shortcodes: stay cacheable.