101
How does Lemmy/Mastodon/Fediverse store videos and images?
(programming.dev)
A loosely moderated place to ask open-ended questions
If your post meets the following criteria, it's welcome here!
Looking for support?
Looking for a community?
~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~
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.
Since you’re the only one, you might consider setting an expiration on the media so your local storage serves as more of a cache. Like, I’m sure you’re far more likely to revisit a recent thread than a super old one, and as long as the original instance is still around you could redownload the media. This might require software patches though idk
Firstly: I was partially wrong about what gets cached, see my original comment.
There is an open pull request which is meant to give some options regarding media serving. Right now it's only a rough sketch though and does not implement a lot functionality.
Maybe have users use an outside image provider, like imgchest or gfycat or whatever?
Gfycat is shutting down, sadly. There’s no money to be had in hosting pictures and videos for other sites that are viewed without ads. We already saw the Imgur clamp down a month or so ago. If these instances can’t self host the content it’s all going to have an invisible expiration date.
This is the best idea in my opinion. Even on Reddit people used Imgur a bunch. It would be cool if either Lenny itself, or the various apps that have sprung up tied into an API for Imgur or similar to store pictures/videos, then it would be seamless to the end user.
EDIT: looks like Memmy on iOS actually already does this!
I was wrong about what gets cached: media that is hosted directly on remote instances is not cached, while media from outside sources (imgur etc.) is cached and served from that cache.
So, from a small instance's point of view, the best case scenario would be if everyone used Lemmy's own media hosting exclusively. But that would, of course, greatly increase the storage requirements of larger instances.
The issue is that if they shut down or change policies we get bit rot. Idk though it’s starting to sound pretty good.
Is it caching the entire image from the post or just the thumbnail?
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
When I was looking into hosting my own instance I thought I saw an option to disable media file replication entirely so that they would always have to be fetched from their home instance.
That would be great to know, any chance you remember where you read that?
It's possible that I've misunderstood. And it's also important to note that I was looking into this for the purposes of creating my own, single user instance. I wasn't planning on posting to my own instance, just using it as a single logon where I could control what other instances I federated with.
Here it mentions not installing pict-rs and removing its configuration if you don't need image hosting. My interpretation at the time was that it would mean that no images would be hosted locally on my instance. But that was very early on before I understood more about federation, and now I realize that it may in fact also mean that any content coming from federated instances could have images broken, not that it would load the images from the remote instance. So now, I no longer think that this is a solution for not syncing images, but I'm not at all sure of that.
No, but I bet I could find it again if I hadn't just imagined it and made it up for this comment. Give me a few.
I need to look more into pictrs and what it can do. Is this done on purpose for image redundancy? I get the reason if the original instance goes offline then I'd still have a copy but maybe I don't really want a copy? Also would be nice if I could get it to convert everything to webp
I think by default it already converts everything into webp. The repo will have more information on how it all works.
Honestly you may benefit from a cloud system that can put old images into cold storage when they go unaccessed for more than a few days