As far as I understand it currently people host their own Lemmy instances just for the hell of it or out of the goodness of their heart
But the larger instances will end up costing more money and I’m doubtful that will be sustainable with no income
Alot of the larger instances have user donations set up so that the servers can be maintained, this is how lemmy.world works
Crazy-ish idea, but maybe Lemmy could make a feature where instances can have custom awards similar to Reddit gold and stuff, and users can buy them to both award posts they like and financially support the instance host
Hope not, trophies and award whoring is just as bad as karma whoring and neither is a thing here and lemmy is better off because of it.
Users actually run a lot of larger instances on the Fediverse off of donations! I run a larger Mastodon server and we get literally double our monthly costs in donations. For every month we stay open, that is two months longer we stay open. Absolutely wild. We have about 1.5k users, with about 20-30 of them donating maybe $5-10 monthly. That’s 2%-ish of the user base donating. Lemmy is LEAGUES easier to host given that it’s written in Rust and is incredibly resource efficient. So I can only imagine it’ll be even cheaper to host on donations.
Larger instances will either have more donators or close their subscriptions if it really is unsustainable.
The more Lemmy grows, the more instances will show up, which will help spread the load.
You speak of sustainability but Lemmy survived the wave of incoming Redditors without much downtime. It’s really impressive that this growth could happen. That’s the power of decentralized systems: they scale!
One other thing I don’t see people pointing out is that Lemmy is basically a successor to classic web forums, so companies may run their own so they can have full control over the experience and moderation like for movies, series’s, or games, and in which case they would be more than happy to eat the cost of hosting. For example there could be a Lemmy.Disney.com instance to act as a Disney sanctioned discussion zone for their products where they could put tons of moderation rules in place.
I host my own. Specifically for myself and those who are friends or friends of friends.
I have a cluster of servers operating in my garage. Free real-estate for tons of stuff I want to host. I have to “pay” for electricity… the rest was already paid for long ago. My electricity cost for my whole cluster… is an estimated $1750 a year. But that cluster is 160 CPU cores, 750 GB of RAM, and ~400TB of storage. You ain’t getting that on a cloud hosted provider for $145 a month. About $110 of that is subsidized by my business operations. I host email, websites, nextcloud, plex, etc… boatloads of stuff.
You offer paid hosting with hardware in your garage? I’m getting dot-com flashbacks!
I actually do… Yes… I have dual internet connections, dedicated power off both phases of my electricity with ~5 hours of battery backup, run redundant internal infrastructure (power, network, and server hardware)… I also have a massive backup library and am currently working on obtaining offsite backups solution. The whole site/house is also monitored with cameras.
I have better uptime than some datacenters in my area have which I can truthfully quantify that as I also hold a CIO/CISO position in another company that operates out of a major Datacenter in my area.
Edit: Should clarify, an offsite backup solution that ISN’T “just peer with backblaze or some other provider” to store your backups. I intend to do a rotating tape library. With one set of tapes always being off site.
Also to mention… I have better uptime than AWS-east at this point of the year… Although there will be some outages of my infrastructure here soon for a network hardware update. I suspect something in the order of about 1 minute of downtime total.
obtaining offsite backups solution
I read this as
Put servers in my mum’s garage
What kind of load balancing are you thinking about/looking for?
If we look at Lemmy in specific…
Jobs that a server performs for users on it’s platform:
Login services(are you even you to begin with?)
Session Management (being logged in at multiple places, not mixing you up with other users…)
Subscriptions (what content to even show you… organizing them on the page… etc.)
Ban lists (and applying them to what you’re looking at)
Peering with the other platforms
Jobs that a server performs for off platform users: Sending ActivityPub messages to the other user’s platform.(effectively the same as “peering with other platforms” from above)
The idea is that the jobs that the server has to do for it’s local users is actually a lot more both numerically and in taxing tasks than the jobs that one particular instance has to do to send updates to the federated instances… A lot of the list in the first case is a boatload of SQL queries. The activitypub notification is effectively a broadcast of a relatively simple text that doesn’t take much bandwidth.
So let’s look at actual cases now that we have some ideas of what instances are doing.
I run a small instance, I have a few users (because I purposefully keep it small). If my users only ever interact with the fediverse through my instance, then other instances don’t have to do most of the jobs in the top list. I’ve taken that load from lemmy.ml or other bigger instances that my users would have ultimately migrated to if they didn’t have my server. The tradeoff is that my few users now cost the 1 connection for activitypub notifications.
Lets look at a theoretical “perfect” setup… 2,000,000 users across let’s say 1,000 instances. Evenly distributed. So each instance has 2,000 users. In that case, any given server would have to serve 2,000 people from the upper list and 999 activitypub broadcasts. This is significantly easier to do than have a single server try to handle all 2,000,000 users on a single instance serving nothing to the activitypub broadcasts.
There’s is one caveat with this… activitypub broadcasts will send everything that is subscribed… even if users don’t actually view it. So there could be some waste. This then leads to the discussion of well how many users until there’s a breakeven in cost of the first list vs the potential waste of the activitypub bandwidth. That answer is debatable… But most people agree that take the discussion seriously that the return on investment could be as low as 2-5 users. I think that the bandwidth cost outweighs the SQL (CPU, RAM, etc…) costs quite handily personally.
Other useful functions that occurs with this setup… As long as I got the ActivityPub message on my server… my users can see all of Lemmy.ml’s content. Regardless of if Lemmy.ml is actually running or not. We saw that with the downtime that some of the bigger servers are seeing, all the other instances could still consume the content… Just no updates were being sent.
This is relatively simplistic… I’ve skipped some nitty gritty stuff… I’ve simplified some other stuff. But this is the gist.
Edit: Other functions that you need to think about that lemmy is accomplishing for local instance users… Notifications, saved posts, language filtering, settings, profiles, avatars, reporting, slur filters, moderation, NSFW filters… The top list is actually considerably larger… like I said we simplified.
Great explanation, thanks for the write up! I have a couple of questions, if I may.
-
So if I setup my own instance tomorrow, it’d be sending notifications of activity to all the other instances? Maybe I’d have to have a list of instances I’d like to notify? How does it discover the other instances?
-
If my instance is listening to all other instances? Won’t saving all posts take up a lot of disk space? I guess there is only text and link data and no media, but wouldn’t it add up fast as the number of users/instances grow ?
I really like the overall concept of Lemmy, so I decided to set up lemm.ee to support the Lemmy network with my skillset. I have previously had the privilege of being responsible for running large platforms online (end-to-end, everything from operations to software engineering), and so far, this experience seems to be extremely relevant for running Lemmy in its current state.
As for paying for hosting, my initial plan was to to just pay for everything myself as kind of a hobby, but the userbase at lemm.ee has been very gracious in first asking me several times to share costs, and then actually sending money once I set up donations. I’m not sure yet if this donations-based funding will be sustainable, or if it will fall off after the initial hype dies, but for now it’s really awesome to see that there are several other people who believe in lemm.ee and want to share financial responsibility for it.
What does it actually cost? I have no basis for a ballpark guess even. I’ve seen this question asked to a number of admins and haven’t seen a direct answer.
It’s hard to judge how sustainable a donation based approach is without that info.
The costs will vary wildly depending on how the instance has been set up. If you set up all necessary services on a single VPS (as is the most common approach for smaller instances), then you can probably get by on $10-$20 a month. Splitting different services onto different servers, adding backups, load balancing, CDNs, redundancy, caches, etc will quickly increase the cost. Bigger instances need more powerful servers, that will increase the cost further.
On lemm.ee, we are currently not using very high-end servers, but we ARE using all the other things I mentioned above, and the monthly cost is currently hovering around $200 (that’s for 3 servers, a managed database, object storage, load balancing, a global CDN, and an e-mail provider). This is still on the very cheap side in the grand scheme of running online platforms, but definitely much more than I would want to pay for a single-user instance for example.
And honestly, 200 is on the high-end even with this setup. lemmy.dbzer0.com is way less
I’ve been hosting a gaming server plus other related stuff myself for some years now.
While the user base will definitely be different, relying solely on donations is unfortunately not sustainable long-term. Donations fluctuate massively based on time of year in my experience. So it’s always good to periodically remind your community that lemm.ee needs donations to survive long-term.
When I do those reminders, users come out of the woods in droves to donate. It’s less that they’re unwilling to donate and more that they just forget to donate.
That’s great! It’s kind of a crowdfunded instance, then. Makes me wonder if it would be feasible to implement some sort of collection box plugin or something…
Yes … if anyone is a developer looking for ways to provide value to the fediverse … I suspect the donation process is probably of high value.
I don’t know the best way for it to be done … but something so that it’s easy for users to setup a single or regular donation and easy for devs and admins to put the relevant button right into their platform … all so that whoever is willing to donate has every opportunity to do so.
Yes, and I know it’s counter to the core motivations of this movement, but probably need a centralized repository for donation that can be a universal door for funds that can then be distributed to vulnerable, but active, instances. Needs to be run by a collective of reps from instances meeting a minimum threshold of support for the community. Also needs to be nimble enough to revoke funding is an instance takes a hard evil turn.
Or maybe just an app/site that recommends a distribution of a set monthly amount (e.g. 30 bucks) to the instances you use the most as a user?
Why?
Seemed fun to do. Wanted to support something that gets people away from reddit.
How did I pay for it? I have a miniature datacenter in my house, complete with redundant power. Hosting lemmy is a drop in the bucket as far as my resources are concerned. As such, there really isn’t a measured cost for it. The infrastructure was already there and running, and lemmy doesn’t consume much of it.
I don’t take donations.
I’ve just launched one:
Why?
- I get free hosting with my job
- I’m a FOSS enthusiast and want to contribute to the fediverse