File storage

Choose where uploaded files go — built-in storage or your own cloud bucket.

Settings → File storage

Where uploaded files go — ticket attachments, comment images, anything else uploaded through the app. One provider at a time for the whole organization. Owner/Admin only. Turning Enabled off pauses new uploads without changing the provider.

How it works

Every provider except Local storage namespaces uploads under a Path prefix — leave it blank to use the default shown on the page (based on your workspace slug) so uploads from different organizations sharing one bucket never collide.

Test uses whatever's currently in the form (even before saving; a secret left blank falls back to the saved one). For Local storage, S3, R2, Spaces and Cloudinary it writes a small test file and deletes it again; for Google Cloud Storage and Azure Blob Storage it only checks the required fields are filled in, so upload a file once after saving to be sure. Run it after entering credentials, before saving, so a typo doesn't silently break every upload for the whole org.

Provider setup

Stores files on the backend container/host's own disk — no external account needed.

  • Local path — a folder path on the backend container. Use a mounted Docker volume in production, or files vanish on redeploy.
Fine for local development. In a multi-instance or ephemeral-container deployment, files written to one instance won't be visible from another — use a real object storage provider instead.
Switching providers does not migrate existing files — anything already uploaded stays wherever it was, and only new uploads go to the new provider. Old attachment links can break if you also delete the original bucket/folder.