Self-hosted Synapse media repository
matrix-org.github.io · Storage · 1 record · JSON
Self-hosted Synapse media repository Storage
fails: egressinstitutionno cardR
| Free tier | Unbounded — max_upload_size defaults to 50M and can be set to any value; storage and media retention are entirely operator-controlled.unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | Your own server's bandwidth. Fits the 500 GB/day job if you front it with a free CDN (Cloudflare caches media aggressively if you allow it). |
| Identity | institution derived from the record's prose, not from an identity field, and no signup was executed: — enabling media_retention turns the repo into a TTL cache. Federation media cache is the first thing purged. Not a free provider — the multiplier angle is that media is content-addressed an |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | s3, rest, webdav, rclone rest |
| Tooling | Synapse (Python) or Dendrite/Conduit; standard Matrix media API so rclone's s3/webdav-adjacent tooling plus any Matrix SDK works. Admin media API allows listing and purging media per user/room. |
| Composes with | Not a free provider — the multiplier angle is that media is content-addressed and deduplicated by Synapse, and federation lets you push copies to other homeservers as a second replica. |
| Reliability | Default installs are safe; the risk is operator misconfiguration — enabling media_retention turns the repo into a TTL cache. Federation media cache is the first thing purged. |
| Notes | Unbounded — max_upload_size defaults to 50M and can be set to any value; storage and media retention are entirely operator-controlled. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | matrix-org.github.io/synapse/latest/usage/configuration/conf | 'max_upload_size — The largest allowed upload size in bytes... Defaults to 50M.' |
| 2026-10-21 | matrix-org.github.io/synapse/latest/usage/configuration/conf | 'media_retention ... control whether media will be purged if it has not been accessed in a given amount of time' |
More fields (1)
{
"dead_end": {
"failure_class": "retention",
"why": "Unbounded — `max_upload_size` defaults to 50M and can be set to any value; storage and media retention are entirely operator-controlled.",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (6)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted