TodosΒΆ
Store user exports in object storage instead of local container storage. Currently
USE_S3_FOR_EXPORTS=false(templates/env.j2): media (avatars, covers) goes to the public objstore bucket, but private account exports stay on the containerβs local filesystem. They cannot share the media bucket: the objstore model gives one bucket per app and SeaweedFS enforces no per-prefix ACL, so an anonymous-readable (public: true) media bucket would also exposeexports/. Clean fix requires extending theobjstorelookup to resolve a second, named, private (public: false) bucket per app (e.g.bookwyrm-exports), provision it with the appβs S3 key, and grant anon-read only on the media bucket. Then setUSE_S3_FOR_EXPORTS=true+EXPORTS_STORAGE_BUCKET_NAMEto that private bucket (BookWyrm already usesdefault_acl: private+querystring_auth: True, so signed-URL access keeps exports private). Touches shared objstore infra, so it belongs in its own PR alongside other private-data consumers.