@@ -6,6 +6,47 @@ Version 0.9.0
66
77To be released.
88
9+ - Added a media proxy that re-serves remote avatars, headers, post
10+ attachments, custom emojis, and preview-card images from Hollo's own
11+ origin. This sidesteps CORS configurations on remote object stores
12+ and prevents the visitor's browser from talking directly to the
13+ source server. Controlled by a new ` MEDIA_PROXY ` environment
14+ variable with three levels: [[ #481 ]]
15+
16+ - ` off ` (default): the Mastodon API and web UI hand the original
17+ remote URL to clients, matching the historical behaviour.
18+ - ` proxy ` : every remote media URL is rewritten to a signed
19+ ` /proxy/<sig>/<b64url> ` path served by Hollo itself. The proxy
20+ runs SSRF checks on the upstream URL and on every redirect
21+ target, allows only image/video/audio Content-Types (image/svg+xml
22+ is explicitly blocked to avoid same-origin XSS), caps the body at
23+ 32 MiB, and serves the response with
24+ ` Cache-Control: public, max-age=2592000, immutable ` and
25+ ` X-Content-Type-Options: nosniff ` . No on-disk cache.
26+ - ` cache ` : same URL rewriting, but the streamed body is persisted
27+ to the configured storage backend as ` proxy/<sha256>.bin ` , with
28+ a content-type sidecar alongside it at ` proxy/<sha256>.json ` .
29+ Subsequent requests skip the upstream fetch. The admin
30+ dashboard at * /thumbnail_cleanup* can purge the cache on demand.
31+
32+ ` MEDIA_PROXY ` also accepts the Boolean synonyms ` true ` /` on ` /` 1 `
33+ (as aliases for ` proxy ` ) and ` false ` /` off ` /` 0 ` (as aliases for
34+ ` off ` ). Disk caching is opt-in only via the explicit ` cache `
35+ value.
36+
37+ Outbound federation is unaffected: Hollo still publishes the
38+ original remote URLs in ActivityPub ` icon ` , ` image ` , ` attachment ` ,
39+ and emoji ` Tag ` references.
40+
41+ - Added a ` REMOTE_MEDIA_THUMBNAILS ` environment variable that controls
42+ whether Hollo downloads incoming remote attachments to generate a
43+ local WebP thumbnail. Set to ` off ` to skip the upstream fetch and
44+ Sharp pipeline entirely, storing the remote URL itself as the
45+ thumbnail URL—useful in combination with ` MEDIA_PROXY=proxy ` or
46+ ` cache ` to free up the disk space the local thumbnails would
47+ otherwise occupy. Defaults to ` on ` (the historical behavior).
48+ [[ #481 ]]
49+
950 - Added [ FEP-044f] quote authorization and policy support on top of the
1051 Mastodon-compatible quote APIs. [[ #457 ] , [ #459 ] , [ #460 ]]
1152
@@ -156,6 +197,7 @@ To be released.
156197[ #466 ] : https://github.com/fedify-dev/hollo/pull/466
157198[ #467 ] : https://github.com/fedify-dev/hollo/pull/467
158199[ #479 ] : https://github.com/fedify-dev/hollo/issues/479
200+ [ #481 ] : https://github.com/fedify-dev/hollo/issues/481
159201[ #482 ] : https://github.com/fedify-dev/hollo/pull/482
160202
161203
0 commit comments