How does Lemmy/Mastodon/Fediverse store videos and images?
As I was browsing lemmy and the fediverse at large, this question kept popping into my head.
Since multimedia files have a much bigger footprint than raw text, it made me feel worried since as time goes, massive resources will be needed to keep up with the big data coming in.
I do wonder if the instances have taken the route of the cloud and just decided to put all of it in something like AWS S3? Or maybe they use self hosted storage with something like minio for object storage?
This will differ greatly from instance to instance. The people running lemmy.world have published some info on their infrastructure. My instance is running on a rather small VPS with 100GB storage, but I will have to rethink my solution rather soon as images and videos from my subbed communities [Edit: which are stored on outside sites] are eating around a gigabyte per day and I think this is likely to increase.
Edit: I want to clarify that I was partially wrong - Lemmy only locally caches content which is hosted on outside sites (e.g. imgur). It does not cache content that was directly uploaded to another Lemmy instance and just embeds the source media.
Thank you for your work for the community! I think with more people using lemmy, we should also as users lookout for the infra we are using because the admins are not a mega corporation ready to spin up infinite resources.
No need to thank me, currently I am the only non-bot-user of my instance and do not allow registrations 😅
Many of the bigger instances have links to donate to their operators, but I am doubtful that relying solely on donations will be enough in the long run.
Everything. It does some re-encoding when it retrieves content from other instances and you can set limits for pictrs (the software Lemmy uses to host media) regarding file sizes etc.
Edit: I was partially wrong about what is cached, see my original comment
That is not true. As long as a user on your instance is subscribed to a community, the media content of posts [Edit: only posts linking to outside sources, e.g imgur] of that community is stored locally on your instance as well.
This, of course, only applies to media which is uploaded to Lemmy, links to media hosted externally are not downloaded.
Edit: I want to clarify that I was partially wrong - Lemmy only locally caches content which is hosted on outside sites. It does (should?) not cache content that was directly uploaded to a Lemmy instance and just embeds the source media.
Someone manages to spam upload massive files to the largest Lemmy instances could wipe out a ton of smaller ones.
Not to mention scalability wise this seems like a nightmare… eventually the largest Lemmy instances will have petabytes of media data with 100s of gbs coming in per day, giving other instances no chance to sync with them.
I think the system architecture needs a significant review. This won’t scale.
This actually brings up another question for me! Say your account is on an instance that doesn't allow something, like nudity. If you subscribe to a community on another instance that DOES allow it, you're saying that everything you see there does end up (redundantly) hosted by your home instance. Has the Lemmy moderation/admin community in general decided on whether or not that's breaking the home instance's rules?
That sounds good for reliability since an instance can still lookup posts even if another fails.
For videos and images, do they store them as blobs in the database or do they use something more catered to files like object storage or maybe a regular filesystem with metadata on a database?