perlsky is a Perl 5 implementation of an AT Protocol Personal Data Server.
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

Document blob compression proxy quirk

alice b293b6c4 bdb3b823

+15 -1
+15 -1
docs/DEPLOYMENT.md
··· 200 200 } 201 201 ``` 202 202 203 - `com.atproto.sync.getBlob` responses should stay uncompressed end-to-end. `perlsky` now bypasses Mojolicious dynamic gzip for blob bytes because some downstream image proxy routes will auto-decompress the body and accidentally forward a stale `Content-Encoding` header, which shows up in clients as broken image loads (`ERR_CONTENT_DECODING_FAILED`). 203 + `com.atproto.sync.getBlob` responses should stay uncompressed end-to-end. `perlsky` now bypasses Mojolicious dynamic gzip for blob bytes because some downstream image proxy routes will auto-decompress the body and accidentally forward a stale `Content-Encoding` header, which shows up in clients as broken image loads (`ERR_CONTENT_DECODING_FAILED`). If your reverse proxy also does response compression, exempt `/xrpc/com.atproto.sync.getBlob` from it as well. 204 + 205 + For Caddy that means putting the blob path on a plain proxy path before any `encode` handler, for example: 206 + 207 + ```caddy 208 + @blob_download path /xrpc/com.atproto.sync.getBlob 209 + handle @blob_download { 210 + reverse_proxy 127.0.0.1:7755 211 + } 212 + 213 + handle { 214 + encode gzip 215 + reverse_proxy 127.0.0.1:7755 216 + } 217 + ``` 204 218 205 219 This still requires wildcard DNS or per-handle DNS records so public ACME validation can reach the server. 206 220